盛哥學習 Data Guard 第二篇《物理standby準備和建立》
一、主庫準備
1.開啟force logging 模式
alter database force logging;
SYS@LEO> select open_mode,log_mode,force_logging,flashback_on from v$database;
OPEN_MODE LOG_MODE FOR FLASHBACK_ON
---------- ------------ --- ------------------------- ------------ --- ------
READ WRITE ARCHIVELOG YES NO
作用:不管什麼操作都會生成redo日誌
特點:1.在資料庫mount狀態和open狀態都可以啟動force logging模式
2. alter database表示直接修改控制檔案內容,所以一次設定長期有效
3.臨時表空間和臨時回滾段動作不會生成redo日誌
4. alter database no force logging; 關閉force logging
2.建立密碼檔案 (如果沒有就先建立密碼檔案)
密碼檔案:記錄特權使用者的管理員資訊
注意事項:同一套Data Guard 中的所有資料庫的密碼檔案的密碼都必須一致,保證重做日誌正常傳輸。因為Data Guard 中資料庫通訊都是透過監聽來訪問密碼檔案來驗證管理員身份的。
orapwd file=orapwLEO password=oracle entries=30 建立密碼檔案語句
3.啟動archivelog模式
shutdown immediate 關閉資料庫
startup mount 啟動到mount狀態
alter database archivelog; 開啟歸檔模式
select log_mode,force logging from v$database; 檢查修改狀態
alter database open ; 開啟資料庫
col name for a40 設定name欄位寬為40個字元
select SEQUENCE#,name,ARCHIVED,APPLIED from v$archived_log; 檢查是否生效
SEQUENCE# NAME ARC APP
---------- ---------------------------------------- --- ------------------------- --- -----
5 /home/oracle/arch/LEO/1_5_784052660.dbf YES NO
6 /home/oracle/arch/LEO/1_6_784052660.dbf YES NO
7 /home/oracle/arch/LEO/1_7_784052660.dbf YES NO
【友情提示一下,常規歸檔日誌存放目錄設定方法,但物理standby有自己的設定方法】
注:alter system set log_archive_dest_1='location=/home/oracle/arch/LEO' scope=both; 設定歸檔日誌存放目錄
select dest_name,destination,status,error from v$archive_dest; 查詢歸檔目錄設定資訊
4.建立standby logfile
作用:備庫角色時接收主庫redo日誌
語法: 建立standby logfile
ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
('/u01/app/oracle/oradata/LEO/file1/redo4_1.rdo','/u01/app/oracle/oradata/LEO/file2/redo4_2.rdo') SIZE 100M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
('/u01/app/oracle/oradata/LEO/file1/redo5_1.rdo','/u01/app/oracle/oradata/LEO/file2/redo5_2.rdo') SIZE 100M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 6
('/u01/app/oracle/oradata/LEO/file1/redo6_1.rdo','/u01/app/oracle/oradata/LEO/file2/redo6_2.rdo') SIZE 100M;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 7
('/u01/app/oracle/oradata/LEO/file1/redo7_1.rdo','/u01/app/oracle/oradata/LEO/file2/redo7_2.rdo') SIZE 100M;
檢查:
SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;
GROUP# THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- -------------- ---------- --- ----------
4 0 0 YES UNASSIGNED
5 0 0 YES UNASSIGNED
6 0 0 YES UNASSIGNED
7 0 0 YES UNASSIGNED
特點:
a.服務物件是備庫
b.standby logfile和online redolog 大小應一致,管理方便
c.如果是單例項資料庫那麼standby logfile 組 比 online redolog 組的個數多一個
如果是rac架構那麼standby logfile 組個數=rac節點數*(online redolog 組個數+1)
目的:緩衝主庫傳過來的redo日誌
d.提示如果在邏輯standby中standby logfile 接收主庫的redo日誌->轉換sql語句重演變化-> 應用備庫,同時可以獨立操作寫入備庫online redolog,因為備庫可以在open狀態下接收日誌
e.刪除standby logfile,alter database drop standby logfile group 4/5/6/7
5.備份pfile引數檔案
作用:當修改引數檔案失敗的時候可以使用備份重新設定,這種方法趨於便捷和快速
a. 生成最新pfile
SYS@LEO> create pfile from spfile;
File created.
b.複製一個副本
cp initLEO.ora initLEO.ora_bak
6.設定主庫初始化引數
引數說明:主庫有2部分引數,第1部分是原來已經有的,第2部分是新新增的(Data Guard專有引數)
a.檢視一下資料庫狀態
SYS@LEO> select status,instance_name from v$instance;
STATUS INSTANCE_NAME
------------ ----------------
OPEN LEO
b.新增新引數,有主庫角色的引數 and 備庫角色的引數
#primary database role initialization parameter 當為主庫角色使用的引數
DB_UNIQUE_NAME=LEO 資料庫例項名,一經指定不能修改
LOG_ARCHIVE_CONFIG='DG_CONFIG=(LEO,OEL)' 羅列一個DG中所有資料庫例項名
LOG_ARCHIVE_DEST_1=
'LOCATION=/home/oracle/arch/LEO 本地資料庫歸檔日誌存放目錄
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=LEO' 指定本地資料庫例項
LOG_ARCHIVE_DEST_2=
'SERVICE=OEL LGWR ASYNC 遠端資料庫接收日誌模式
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=OEL' 指定遠端資料庫例項
LOG_ARCHIVE_DEST_STATE_1=ENABLE 啟動傳輸redo日誌服務
LOG_ARCHIVE_DEST_STATE_2=ENABLE 啟動接收redo日誌服務
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 可以設定為EXCLUSIVE or SHARED
主備庫sys密碼必須相同
LOG_ARCHIVE_FORMAT=%t_%s_%r.arc 歸檔日誌格式
注意:有三個引數沒寫
DB_NAME=LEO 資料庫名字原來已經有了不用在新增了
LOG_ARCHIVE_MAX_PROCESSES=30 歸檔日誌最大程式數,最大30 預設4
CONTROL_FILES='/arch1/chicago/control1.ctl','/arch2/chicago/control2.ctl' 控制檔案所在路徑
#standby database role initialization parameter 當為備庫角色使用的引數
FAL_SERVER=OEL #fetch archive log_server 獲取歸檔日誌服務端,指主庫service_name
FAL_CLIENT=LEO #fetch archive log_client 獲取歸檔日誌客戶端,指備庫service_name
DB_FILE_NAME_CONVERT='OEL','LEO' 主備庫資料檔案轉換對映目錄,只設定不同部分
LOG_FILE_NAME_CONVERT='OEL','LEO' 主備庫日誌檔案轉換對映目錄,只設定不同部分,如果你有多個目錄路徑那麼用逗號分隔對應多個
STANDBY_FILE_MANAGEMENT=AUTO 備庫是否根據主庫的動態變化而變化,例如當主庫檔案發生重新命名、新建等動作時,備庫自動做出相應修改
7.建立備庫控制檔案
特點:
a.在主庫中建立具有備庫屬性的控制檔案
b.建立完備庫控制檔案後主庫不能再有structure變化,否則主備庫同步不能成功
ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/home/oracle/control01.ctl';
檢查:已經建立完成
drwxr-xr-x 3 oracle oinstall 4096 May 23 17:39 arch
drwxrwxrwx 25 oracle oinstall 4096 Jun 3 2010 B19306_01
-rwx------ 1 oracle oinstall 465489785 May 17 2011 B19306_01.zip
drwxr-xr-x 3 oracle oinstall 4096 May 23 15:49 backup
-rw-r----- 1 oracle oinstall 7061504 May 26 05:31 control01.ctl
drwxr-xr-x 2 oracle oinstall 4096 May 17 2011 Desktop
drwxr-xr-x 2 oracle oinstall 4096 May 23 15:49 flash
drwxr-xr-x 2 oracle oinstall 4096 May 23 15:49 scripts
drwxr-xr-x 2 oracle oinstall 4096 May 23 15:49 temp
-rw-r--r-- 1 oracle oinstall 2641 May 24 07:00 test.sql
8.建立備庫引數檔案
a.用引數檔案副本複製出一份備庫引數檔案
cp initLEO.ora_bak initOEL.ora
b. 新增備庫引數檔案新內容
#standby database set parameter
DB_UNIQUE_NAME=OEL 資料庫例項名
LOG_ARCHIVE_CONFIG='DG_CONFIG=(LEO,OEL)' 羅列一個DG中所有資料庫例項名
DB_FILE_NAME_CONVERT='LEO','OEL' 主備庫資料檔案轉換對映目錄,只設定不同部分
LOG_FILE_NAME_CONVERT='LEO','OEL' 主備庫日誌檔案轉換對映目錄,只設定不同部分,如果你有多個目錄路徑那麼用逗號分隔對應多個
LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc 歸檔日誌格式
LOG_ARCHIVE_DEST_1=
'LOCATION=/home/oracle/arch/OEL 備庫接收主庫歸檔日誌存放目錄
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=OEL'
LOG_ARCHIVE_DEST_2= 當變成主庫後傳輸給備庫LEO日誌模式
'SERVICE=LEO LGWR ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=LEO'
LOG_ARCHIVE_DEST_STATE_1=ENABLE 啟動接收redo日誌服務
LOG_ARCHIVE_DEST_STATE_2=ENABLE 啟動傳輸redo日誌服務
REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE 主備庫sys密碼必須相同
STANDBY_FILE_MANAGEMENT=AUTO 備庫是否根據主庫的動態變化而變化,例如當主庫檔案發生重新命名、新建等動作時,備庫自動做出相應修改
FAL_SERVER=LEO 獲取歸檔日誌服務端,指主庫service_name
FAL_CLIENT=OEL 獲取歸檔日誌客戶端,指備庫service_name
9.新增OEL庫tnsnames.ora連線串
在主庫的/u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora 檔案中新增
指向備庫的連線串
OEL=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.61.102)(PORT=1521))
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=OEL)
)
)
10.建立備庫所需目錄
mkdir -p $ORACLE_BASE/admin/OEL/adump
mkdir -p $ORACLE_BASE/admin/OEL/bdump
mkdir -p $ORACLE_BASE/admin/OEL/cdump
mkdir -p $ORACLE_BASE/admin/OEL/udump
mkdir -p arch/OEL
11.建立備庫5要素,這5要素要在備庫上存在
a.密碼檔案 /u01/app/oracle/product/10.2.0/db_1/dbs
orapwd file=orapwOEL password=oracle entries=30
b.引數檔案 現在複製到備庫
scp initOEL.ora 192.168.61.102:/u01/app/oracle/product/10.2.0/db_1/dbs/
c.資料檔案 現在複製到備庫,複製之前要先shutdown資料庫
tar -zcvf LEO.tar.gz LEO
scp LEO.tar.gz 192.168.61.102:/u01/app/oracle/oradata/
在備庫/u01/app/oracle/oradata/目錄下解壓縮
tar -zxvf LEO.tar.gz
mv LEO OEL 重新命名
d.控制檔案 現在複製到備庫,覆蓋原來的老control檔案
scp /home/oracle/control01.ctl 192.168.61.102:/u01/app/oracle/oradata/OEL/file1/control01.ctl
scp /home/oracle/control01.ctl 192.168.61.102:/u01/app/oracle/oradata/OEL/file2/control02.ctl
scp /home/oracle/control01.ctl 192.168.61.102:/u01/app/oracle/oradata/OEL/file3/control03.ctl
e.監聽 現在複製到備庫
scp tnsnames.ora 192.168.61.102:/u01/app/oracle/product/10.2.0/db_1/network/admin/
scp listener.ora 192.168.61.102:/u01/app/oracle/product/10.2.0/db_1/network/admin/
修改listener.ora內容
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.61.102)(PORT=1521)) IP設定成本地
12.啟動備庫OEL
注意:
1.startup mount 是可以接收主庫redo日誌,但不能對外提供服務(常用)
2.startup open read only 不可以接收主庫redo日誌,但能對外提供服務(常用)
3.startup open 不可以接收主庫redo日誌,失去資料保護功能,開打閃回,閃回到初始狀態,DG自動同步,不需要重建備庫(不常用)
4.設定備庫sqlplus提示符樣子
vim /u01/app/oracle/product/10.2.0/db_1/sqlplus/admin/glogin.sql 在最後新增一行
set sqlprompt "_user'@'_connect_identifier> "
現在我們啟動備庫到mount狀態
13.啟動備庫監聽
lsnrctl start listener
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 28-MAY-2012 19:13:09
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.61.102)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.61.102)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 28-MAY-2012 19:13:09
Uptime 0 days 0 hr. 0 min. 1 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.61.102)(PORT=1521)))
The listener supports no services
The command completed successfully
啟動到mount狀態
startup mount
啟動redo日誌應用恢復備庫
alter database recover managed standby database disconnect from session parallel 2;
disconnect from session:把這個session提交到後臺執行,相當於no hup 後臺恢復備庫
如果沒有這個關鍵詞:這個session一直處理redo日誌應用,不會顯示Database altered.結果,不會返回到命令運算子介面,如果還想作其他操作,需要重新開啟一個session。
parallel 2:啟動2個MRP程式恢復備庫
14.啟動主庫LEO
生成spfile
create spfile from pfile;
啟動open狀態
startup
注意檢視 tail -f alert_LEO.log 告警日誌,看看是否給備庫傳送redo日誌
備庫
RFS程式接收主庫傳過來的redo日誌儲存在standby log file
物理standby透過redo應用
邏輯standby透過sql應用
啟動 real time 模式(實時應用)
alter database recover managed standby database using current logfile disconnect from session
using current logfile:直接獲取standby log file內容應用
不加 using current logfile:直接獲取歸檔日誌內容應用,預設不加
RFS[2]: Archived Log: '/home/oracle/arch/OEL/log1_5_784052660.arc'
RFS[2]: Archived Log: '/home/oracle/arch/OEL/log1_6_784052660.arc'
RFS[2]: Archived Log: '/home/oracle/arch/OEL/log1_7_784052660.arc'
15.測試備庫歸檔能力
ALTER SYSTEM SWITCH LOGFILE;
主庫和備庫2邊的日誌都同步了才行
16.檢查歸檔日誌
檢查歸檔日誌是否在2邊都同步應用了
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
主庫
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ---------
5 23-MAY-12 23-MAY-12
5 23-MAY-12 23-MAY-12
6 23-MAY-12 23-MAY-12
6 23-MAY-12 23-MAY-12
7 23-MAY-12 23-MAY-12
7 23-MAY-12 23-MAY-12
8 23-MAY-12 28-MAY-12
8 23-MAY-12 28-MAY-12
9 28-MAY-12 28-MAY-12
9 28-MAY-12 28-MAY-12
10 28-MAY-12 28-MAY-12
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ---------
10 28-MAY-12 28-MAY-12
備庫
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ---------
5 23-MAY-12 23-MAY-12
6 23-MAY-12 23-MAY-12
7 23-MAY-12 23-MAY-12
8 23-MAY-12 28-MAY-12
9 28-MAY-12 28-MAY-12
10 28-MAY-12 28-MAY-12
好這時我們可以看出歸檔日誌在2邊同步了
ALTER SYSTEM SWITCH LOGFILE; 在歸檔一次,檢查新redo日誌是否在備庫同步
主庫
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ------------------ ---------
10 28-MAY-12 28-MAY-12
10 28-MAY-12 28-MAY-12
11 28-MAY-12 28-MAY-12
11 28-MAY-12 28-MAY-12
備庫
SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# FIRST_TIM NEXT_TIME
---------- --------- ----------------- ---------
10 28-MAY-12 28-MAY-12
11 28-MAY-12 28-MAY-12
好這時我們可以看出新redo日誌已經在2邊同步了
檢查新歸檔是否在備庫應用了
SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
SEQUENCE# APP
---------- ---
5 NO
6 NO
7 NO
8 YES
9 YES
10 YES
11 YES
好這時我們可以看出新歸檔已經在備庫應用了
17.啟動備庫read only狀態
Read only狀態:資料庫只讀狀態,這時備庫不能應用日誌,但可以接收日誌。
取消備庫日誌應用
Alter database recover managed standby database cancel;
Background Media Recovery process shutdown (OEL) 後臺介質恢復程式關閉
Standby Recovery Canceled (OEL) 備庫恢復取消
啟動到alter database open read only;
SYS@OEL> alter database open read only;
Database altered.
SYS@OEL> select database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- ----------
PHYSICAL STANDBY NOT ALLOWED READ ONLY 只讀狀態
主庫狀態
elect database_role,switchover_status,open_mode from v$database;
DATABASE_ROLE SWITCHOVER_STATUS OPEN_MODE
---------------- -------------------- ----------
PRIMARY TO STANDBY READ WRITE
小結:建立physical standby database 首先要做好5要素準備,現在啟動備庫在啟動主庫,因為主庫啟動後會刺探一次備庫如果此時備庫沒有啟動那麼就要等好長時間在迴圈刺探,注意備庫mount狀態時候能應用日誌,open read only 狀態不能應用日誌只能接收日誌,實時注意2邊日誌要同步應用,一般物理備庫在是在mount狀態下,只有需要備庫提供一些服務支援的時候會設定成open read only狀態
Leonarding
2012.5.28
於天津&summer
Blog:http://space.itpub.net/26686207
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26686207/viewspace-731329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 盛哥學習 Data Guard 第三篇《物理standby之switchover 無損切換》
- Data Guard學習之物理standby建立步驟
- 盛哥學習 Data Guard 第四篇《物理standby之failover 丟棄切換》AI
- 建立物理STANDBY資料庫——DATA GUARD概念和管理資料庫
- Oracle 11g RAC Data Guard 物理standby 建立Oracle
- 盛哥學習 Data Guard 第一篇《先了解大概》
- Data Guard 之RMAN備份線上搭建物理standby
- 物理data guard備standby庫的時候報錯。
- DATA GUARD物理STANDBY的 SWITCHOVER切換
- 管理物理STANDBY資料庫——DATA GUARD概念和管理資料庫
- DATA GUARD物理STANDBY的FAILOVER切換AI
- DATA GUARD物理STANDBY的 SWITCHOVER切換[zt]
- oracle10g data guard建立物理standby資料庫的例子Oracle資料庫
- 建立邏輯STANDBY資料庫——DATA GUARD概念和管理資料庫
- 建立Data guard logical standby database須知Database
- Data guard 配置之搭建物理備庫
- DATA GUARD物理備庫的SWITCHOVER切換
- 搭建Oracle Data Guard 11g(物理備用)Oracle
- 使用Data Guard Broker進行Data Guard物理備用庫配置(Oracle 19c)Oracle
- 【DATAGUARD 學習】使用duplicate 建立物理standby 資料庫資料庫
- data guard物理備份方式中的switchover轉換
- 【DG】Data Guard搭建(physical standby)
- 【ASK_ORACLE】Oracle Data Guard(二)物理備庫的概念和優勢Oracle
- RedHat搭建物理Data GuardRedhat
- Oracle 19C Data Guard基礎運維-01安裝物理standbyOracle運維
- 通過RMAN Duplicate建立Oracle物理standby備庫Oracle
- Data Guard - Snapshot Standby Database配置Database
- Data Guard 建立(ASM)ASM
- 【DataGuard】Oracle 11g物理Data Guard之Snapshot Standby資料庫功能Oracle資料庫
- 物理data guard原理的理解(zt)
- [轉]物理data guard原理的理解
- [Data Guard]Oracle10g Data Guard學習筆記(一)Oracle筆記
- [Data Guard]Oracle10g Data Guard學習筆記(二)Oracle筆記
- [Data Guard]Oracle10g Data Guard學習筆記(三)Oracle筆記
- Oracle 11g Data Guard 使用 duplicate from active database 建立 standby databaseOracleDatabase
- Oracle 11g Data Guard 使用duplicate from active database 建立 standby databaseOracleDatabase
- Data Guard物理備庫read/write後,切換回備庫狀態
- 【轉】【DataGuard】Oracle 11g物理Data Guard之Snapshot Standby資料庫功能Oracle資料庫