oracle dg 維護常用操作和調優
1、查看備庫狀態
SQL> select open_mode,database_role,db_unique_name from v$database;
2、將備庫置與應用日志模式狀態
SQL> alter database recover managed standby database using current logfile disconnect from session;
3、取消備庫的自動恢復
SQL> alter database recover managed standby database cancel;
4、打開實時應用狀態模式
SQL> alter database recover managed standby database using current logfile disconnect;
4、查看日志應用到哪個組
SQL> select max(SEQUENCE#) from v$archived_log where applied='YES'
5.主庫和備庫之間角色切換
5.1 主庫切換為備庫
alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby with session shutdown;-- 主庫有會話連接的時候
shutdown immediate
startup nomount;
alter database mount standby database;
alter database recover managed standby database disconnect from session;
5.2 從庫切換為主庫
alter database commit to switchover to primary;
shutdown immediate;
startup
alter system switch logfile;
6.備庫自動使用主庫傳過來的日志進行恢復
alter database recover automatic standby database;
有時standby中斷一段時間后起來,開啟應用日志模式無法正常從歸檔日志恢復,需要執行這個指令應用歸檔日志等應用到最近的一個歸檔日志后再開啟應用日志模式
7.更改保護模式
alter database set standby database to maximize protection;
alter database set standby database to maximize availability;
alter database set standby database to maximize performancen;
恢復進度相關的 v$視圖應用示例
1、查看進程的活動狀況---v$managed_standby
SQL> select process,client_process,sequence#,status from v$managed_standby;
2、確認 redo 應用進度---v$archive_dest_status
SQL> select dest_name,archived_thread#,archived_seq#,applied_thread#,applied_seq#,db_unique_name from v$archive_dest_status where status='VALID';
3、檢查歸檔文件路徑及創建信息---v$archived_log
SQL> select name,creator,sequence#,applied,completion_time from v$archived_log;
4、查詢歸檔歷史---v$log_history
SQL> select first_time,first_change#,next_change#,sequence# from v$log_history;
再來點與 log 應用相關的 v$視圖應用示例:
5、查詢當前數據的基本信息---v$database 信息
SQL> select database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status from v$database;
6、查詢 failover 后快速啟動的信息
SQL> select fs_failover_status,fs_failover_current_target,fs_failover_threshold,fs_failover_observer_present from v$database;
7、檢查應用模式(是否啟用了實時應用)---v$archive_dest_status
SQL> select recovery_mode from v$archive_dest_status where dest_id=2;
12、Data guard 事件---v$dataguard_status
SQL> select message from v$dataguard_status;
8、刪除和添加standby log
alter database drop standby logfile group 1; ----------添加日志組
alter database add standby logfile thread 1 group 1 ('/u02/oradata/center/standbylog/standby_log1_1','/u02/oradata/center/standbylog/standby_log1_2') size 4096M; ----------刪除日志組
alter database drop logfile member '/u02/oradata/center/standbylog/standby_log1_2'; ----------刪除日志組的一個成員
ALTER DATABASE ADD standby LOGFILE MEMBER '/u02/oradata/center/standbylog/standby_log1_2' TO GROUP 1; ---------添加日志組成員
**調整物理 standby log 應用頻率
調整應用頻率說白了就是調整 io 讀取能力,所以通常我們可以從以下幾個方面著手:
1、設置 recover 并行度
在介質恢復或 redo 應用期間,都需要讀取重做日志文件,默認都是串行恢復,我們可以在執行 recover
的時候加上 parallel 子句來指定并行度,提高讀取和應用的性能,例如:
SQL> alter database recover managed standby database parallel 2 disconnect from session;
推薦 parallel 的值是#CPUs*2;
2、加快 redo 應用頻繁
設置初始化參數 DB_BLOCK_CHECKING=FALSE 能夠提高 2 倍左右的應用效率,該參數是驗證數據
塊是否有 效,對 于 standby 禁止驗證 基本上 還是可 以接受 的,另 外還有 一個關 聯初始 化參數
DB_BLOCK_CHECKSUM,建議該參數在 primary 和 standby 都設置為 true。
3、設置 PARALLEL_EXECUTION_MESSAGE_SIZE
如果打開了并行恢復,適當提高初始化參數:PARALLEL_EXECUTION_MESSAGE_SIZE 的參數值,
比如 4096 也能提高大概 20%左右的性能,不過需要注意增大這個參數的參數值可能會占用更多內存。
4、優化磁盤 I/O
在恢復期間最大瓶頸就是 I/O 讀寫,要緩解這個瓶頸,使用本地異步 I/O 并設置初始化參數
DISK_ASYNCH_IO=TRUE 會有所幫助。 DISK_ASYNCH_IO 參數控制到數據文件的磁盤 I/O 是否異步。 某
些情況下異步 I/O 能降低數據庫文件并行讀取,提高整個恢復時間。