在創建Oracle Dataguard的時候,難免會碰到Standby Redo Log(SRL),它和ORL到底有何不同,下面是我自己的一點理解,大部分都是翻的Oracle官方文檔:
1. SRL只有在數據庫是standby角色是才起作用,Oracle建議我們爲primary也配置SRL只是爲了以後主從切換時不用人爲干預
2. standby上SRL完全等同與primary上的ORL,在primary發生日誌切換時,Remote File System(RFS)進程把primary上的ORL寫到standby的SRL,同時standby歸檔上一個SRL
3. standby通過應用並歸檔SRL以達到與primary一致。
如果standby log應用服務會等待單個歸檔文件全部接收之後再啓動應用(在前面redo傳輸服務中我們介紹了不同形式的傳輸方式),如果standby端使 用了standby redologs,就可以打開實時應用(real-time apply),這樣dg就不需要再等待接收完歸檔文件,只要rfs將 redo數據寫入standby redologs,即可通過MRP/LSP實時寫向standby。
物理standby啓用實時應用通過下列語句:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE ;邏輯standby啓用實時應用通過下列語句:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
2、REDO數據延遲應用
有 實時就有延遲,某些情況下你可能不希望standby與primary太過同步:),那就可以在log_archive_dest_n參數中指定 delay屬性(單位爲分鐘,如果指定了delay屬性,但沒有指定值,則默認是30分鐘)。注意,該屬性並不是說延遲發送redo數據到standby,而是指明歸檔到standby後,開始應用的時候。不過,即使在log_archive_dest_n中指定了delay屬性,但如果你應用數據時指定了實時應用,則standby會忽略delay屬性。另外Oracle 11g,standby端還可以通過下列的語句取消延遲應用。物理standby取消延遲應用可以通過下列語句:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;邏輯standby取消延遲應用可以通過下列語句:
SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NODELAY;提示:flashback database也可視爲延遲應用的一種方式。二、應用redo數據到物理standby
注意:啓動redo應用,物理standby需要首先啓動到mount狀態,然後再執行下列語句啓動,或者停止redo應用。
1、啓動redo應用
v 前臺應用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
v 後臺應用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;Oracle數據庫
v 啓動實時應用,附加USING CURRENT LOGFILE子句即可
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; 停止redo應用