標籤:資料庫容災 oracle dg
一、主庫端的準備
1、查看主庫中資料庫目錄結構
查看資料庫檔案路徑
select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts#=t2.ts#;
查看記錄檔路徑
select * from v$logfile;
查看控制檔案路徑
select * from v$controlfile;
2.開啟資料庫歸檔並啟用force logging 模式
查看歸檔模式
archive log list
開啟歸檔模式
alter database archivelog;
alter database noarchivelog;
修改歸檔位置和歸檔命名規則
alter system set log_archive_dest_1=‘location=/arch‘ scope=spfile;
alter system set log_archive_format =‘%t_%s_%r.arc‘ scope=spfile;
開啟force logging
alter database force logging;
alter database no force logging;
3.修改初始化參數檔案
create pfile from spfile;(備份初始化參數檔案)
alter system set LOG_ARCHIVE_CONFIG=‘DG_CONFIG=(zhuku,beiku)‘;
alter system set LOG_ARCHIVE_DEST_1=‘/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=zhuku‘;
alter system set LOG_ARCHIVE_DEST_2=‘SERVICE=beiku LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=beiku‘;
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;
alter system set LOG_ARCHIVE_DEST_STATE_2=defer;
alter system set FAL_CLIENT=‘zhuku‘;
alter system set FAL_SERVER=‘beiku‘;
alter system set DB_FILE_NAME_CONVERT=‘/oracle/oradata/beiku/‘,‘/oracle/oradata/zhuku/‘ scope=spfile;
alter system set LOG_FILE_NAME_CONVERT=‘/oracle/oradata/beiku/‘,‘/oracle/oradata/zhuku/‘ scope=spfile;
alter system set standby_file_management=auto;
4.重啟資料庫使的上述修改生效 保留在open狀態
二、備庫端的準備
1.建立相關目錄
mkdir /oracle/admin/beiku/adump bdump cdump dpdump udump
mkdir /oracle/oradata/beiku
和主庫一致的備份目錄以及歸檔日誌目錄 並修改許可權
2.拷貝主庫密鑰檔案
scp
3.備庫初始化參數設定
備庫的初始設定檔案可以從主庫初始化參數檔案修改而來
添加如下內容
*.DB_NAME=‘zhuku‘
*.remote_login_passwordfile=‘EXCLUSIVE
*.DB_UNIQUE_NAME=‘beiku‘
*.log_archive_config= ‘dg_config=(beiku,zhuku)‘
*.LOG_ARCHIVE_DEST_1= ‘LOCATION=/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=beiku‘
*.LOG_ARCHIVE_DEST_2= ‘SERVICE=zhuku LGWR SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=zhuku‘
*.LOG_ARCHIVE_DEST_STATE_1=‘ENABLE‘
*.LOG_ARCHIVE_DEST_STATE_2=‘ENABLE‘
*.LOG_ARCHIVE_FORMAT=‘%t_%s_%r.arc‘
*.LOG_ARCHIVE_MAX_PROCESSES=30
*.FAL_SERVER=‘zhuku‘
*.FAL_CLIENT=‘beiku‘
*.DB_FILE_NAME_CONVERT=‘/oracle/oradata/zhuku/‘,‘/oracle/oradata/beiku/‘
*.LOG_FILE_NAME_CONVERT=‘/oracle/oradata/zhuku/‘,‘/oracle/oradata/beiku/‘
*.STANDBY_FILE_MANAGEMENT=‘AUTO‘
4.建立spfile
create spfile from pfile=‘$ORACLE_HOME/dbs/initracdb.ora‘
5.啟動資料庫到mount狀態
SQL> startup nomount;
三、配置監聽和tns
可以通過圖形化介面netca netmgr 進行配置 主庫和備庫都要配置兩邊的tns
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/db10g)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = beiku)
(ORACLE_HOME = /oracle/db10g)
(SID_NAME = beiku)
)
)
驗證監聽
sqlplus sys/[email protected] as sysdba
sqlplus sys/[email protected] as sysdba
四、Rman下duplicate資料庫,恢複備庫
方法1
主庫進行全庫的備份,將備份組拷貝到備庫相同的目錄下
RUN {
allocate channel c1 type disk;
allocate channel c2 type disk;
sql ‘alter system archive log current‘;
backup current controlfile for standby format=‘/backup/dgbackup_control_%U‘;
BACKUP FORMAT ‘/backup/dgbackup_%U_%T‘ skip inaccessible filesperset 5 DATABASE ;
sql ‘alter system archive log current‘;
BACKUP FORMAT ‘/backup/dgbackup_arch_%U_%T‘ skip inaccessible filesperset 5 ARCHIVELOG ALL ;
release channel c2;
release channel c1;
}
rman target / auxiliary sys/[email protected]
duplicate target database for standby nofilenamecheck dorecover;
方法2 11g之後版本適用
利用RMAN在備庫上恢複主庫(備庫端做)
rman target sys/[email protected] auxiliary sys/[email protected]
RMAN> duplicate target database for standby from active database nofilenamecheck;
這條命令可以直接恢複資料檔案,standby控制檔案,standby日誌組,非常霸道
五、開啟DG
在備庫上執行
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
racdb MOUNTED
該模式會從主要資料庫中複製並應用記錄檔
alter system set log_archive_dest_state_2=enable;
alter database recover managed standby database disconnect from session;
取消日誌應用
alter database recover managed standby database cancel
在Oracle 11g以前版本中的的Data Guard物理備用資料庫,可以以唯讀方式開啟資料庫,但此時Media Recovery利用日誌進行資料同步的過程就停止了,如果物理備用資料庫處於恢複的過程中資料庫就不能開啟查詢,也就是說日誌應用和唯讀開啟兩個狀態是互斥的,而Oracle 11g Active Data Guard功能解決了這個矛盾,在利用日誌恢複資料的同時可以用唯讀方式開啟資料庫,使用者可以在備用資料庫上進行查詢、報表等操作,這類似邏輯Data Guard備用資料庫的功能(查詢功能方面),但是,資料同步的效率更高、對硬體的資源要求更低。這樣可以更大程度地發揮物理備用資料庫的硬體資源的效能
取消備庫的自動回復
[email protected]@> alter database recover managed standby database cancel;
Database altered.
監控備庫警告日誌
監控主庫警告日誌
18.13. 查看日誌同步情況
主庫上
SQL> select sequence#, first_time, next_time from v$archived_log order by sequence#;
查看已經應用的日誌
SQL> select sequence#,applied from v$archived_log order by sequence#;
備庫上
SQL> select sequence#, first_time, next_time from v$archived_log order by sequence#;
SQL> select sequence#,applied from v$archived_log order by sequence#;
18.14. 配置主庫standby redo log
查看記錄檔大小,備用redolog一定要大於線上日誌log容量 ,主要用於主備庫的切換
select group#,bytes from v$log;
alter database add standby logfile group 5(‘/oracle/oradata/zhuku/redolog1.log‘) size 50m;
alter database add standby logfile group 6(‘/oracle/oradata/zhuku/redolog2.log‘) size 50m;
alter database add standby logfile group 7(‘/oracle/oradata/zhuku/redolog3.log‘) size 50m;
alter database add standby logfile group 8(‘/oracle/oradata/zhuku/redolog4.log‘) size 50m;
查看結果
select group#,thread#,sequence#,archived,status from v$standby_log;
18.15. 配置備庫standby redo log
sql> alter database recover managed standby database cancel
sql> shutdown immediate;
sql> startup mount;
alter database add standby logfile group 5(‘/u01/app/oracle/oradata/racdb/redolog1.log‘) size 100m;
alter database add standby logfile group 6(‘/u01/app/oracle/oradata/racdb/redolog2.log‘) size 100m;
alter database add standby logfile group 7(‘/u01/app/oracle/oradata/racdb/redolog3.log‘) size 100m;
alter database add standby logfile group 8(‘/u01/app/oracle/oradata/racdb/redolog4.log‘) size 100m;
查看結果
select group#,thread#,sequence#,archived,status from v$standby_log;
啟用接收日誌
alter database recover managed standby database disconnect from session;
備庫驗證資料
切換備用資料庫唯讀模式
alter database recover managed standby database cancel;
alter database open read only;
查看已經應用的日誌
select sequence#,applied from v$archived_log order by sequence#;
主備庫角色切換
在主庫中要做資料庫全備
2.確保節點1的日誌已經全部傳送到了備庫
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
3.在節點1,確認為TO_STANDBY
SQL> select SWITCHOVER_STATUS from v$database;
SWITCHOVER_STATUS
-------------------------
TO STANDBY
4.將節點一切換成備庫
SQL> alter database commit to switchover to physical standby with session shutdown ;
5.關閉並重新啟動之前的主庫執行個體
sql> shutdown immediate;
sql> startup mount
6.在備庫的v$database視圖中查看備庫的切換狀態
select switchover_status from v$database;
to primary 或者sessions active
7.切換備庫到主庫角色
alter database commit to switchover to primary; (to primary 狀態使用該命令)
alter database commit to switchover to primary with session shutdown; (sessions active 狀態使用該命令)
8.完成備庫到主庫的切換
alter database open;
9.如果備庫以唯讀模式開啟,先關閉資料,然後再重新啟動。
sql> shutdown immediate;
sql> startup ;
10.重新啟動一下新的備庫上的重做日誌應用服務
sql> alter database recover managed standby database disconnect from session;
或者sql> alter database recover managed standby database using current logfile disconnect from session;
11.開始發送重做資料到備庫上
sql> alter system switch logfile;
模式切換:
maximize protection ---> maximize availability ----> maximize performance
當在把dataguard的保護層級按這上面的順序減低的時候,不需要primary庫在mount狀態,primary在open狀態就可以直接執行保護模式更改命令
maximize protection <--- maximize availability <---- maximize performance
當在把dataguard的保護層級按這上面的順序升高的時候,需要primary庫在mount狀態,如果在open更改會報錯誤
select DATABASE_ROLE,open_mode,PROTECTION_MODE,PROTECTION_LEVEL from v$database; --查看保護模式
切換主庫保護模式的文法:
ALTER DATABASE SET STANDBY DATABASE
TO MAXIMIZE {PROTECTION | AVAILABILITY | PERFORMANCE }
SQL> alter database set standby database to maximize performance;
SQL> alter database set standby database to maximize availability;
SQL> alter database set standby database to maximize protection;
以上都是在主庫操作,備庫會隨之改變。
本文出自 “人靜心涼” 部落格,請務必保留此出處http://19911117.blog.51cto.com/11329221/1752096
oracle dataguard 簡易配置文檔