oracle dg 維護常用操作和調優

bitifi發表於2015-12-18
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 能降低資料庫檔案並行讀取,提高整個恢復時間。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1874473/,如需轉載,請註明出處,否則將追究法律責任。

相關文章