本文作者:
junsansi????
轉載網址:
http://www.5ienet.com/index.shtml
?
?
第四部分Standby之Log應用服務? 2008.02.26
??? 前面我們已經接觸了很多相關的概念,我們都知道DataGuard 通過應用redo 維持primary 與各standby 之間的一致性,在后臺默默無聞支撐著的就是傳說中的Log 應用服務。Log 應用服務呢,又分兩種方式,一種是redo應用(物理standby 使用,即介質恢復的形式),另一種是sql 應用(邏輯standby 使用,通過LogMiner 分析出sql語句在standby 端執行)。
?
?
一、Log應用服務配置選項
?
1、REDO數據實時應用
?
??? 默認情況下,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 STANDBYAPPLY IMMEDIATE;
?
2、REDO數據延遲應用
?
??? 有實時就有延遲,某些情況下你可能不希望standby 與primary 太過同步:),那就可以在log_archive_dest_n參數中指定delay 屬性(單位為分鐘,如果指定了delay 屬性,但沒有指定值,則默認是30 分鐘)。注意,該屬性并不是說延遲發送redo 數據到standby,而是指明歸檔到standby 后,開始應用的時候。
?
??? 不過,即使在log_archive_dest_n 中指定了delay 屬性,但如果你應用數據時指定了實時應用,則standby會忽略delay 屬性。另外,standby 端還可以通過下列的語句取消延遲應用。
?
??? 物理standby 取消延遲應用可以通過下列語句:
??? SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;
?
??? 邏輯standby 取消延遲應用可以通過下列語句:
??? SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY NODELAY;
?
??? 提示:flashback database 也可視為延遲應用的一種方式。
?
?
二、應用redo數據到物理standby
?
??? 注意:啟動redo 應用,物理standby 需要首先啟動到mount 狀態,然后再執行下列語句啟動,或者停止redo應用。
?
1、啟動redo應用
?
??? ※ 前臺應用
??? SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
?
??? ※ 后臺應用
??? SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
?
??? ※ 啟動實時應用,附加USING CURRENT LOGFILE 子句即可
??? SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
?
2、停止redredo應用
?
??? SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
?
?
三、應用redo數據到邏輯standby
?
??? 注意:啟用sql 應用,邏輯standby 需要啟動至open 狀態。
?
1、啟動sql應用
?
??? SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY;
?
??? 如果要啟動實時應用,附加immediate 子句即可:
??? SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY IMMEDIATE;
?
2、停止sql應用
?
??? SQL> ALTER DATABASE STOP LOGICAL STANDBYAPPLY;
?
?
?