Data Guard主要提供兩個服務:
1)Redo傳輸服務:即把Primay端的Redo日志傳輸到一個或多個Standby目的地。
2)Redo應用服務:即在Standby端應用從Primay端傳輸過來的Redo日志。
本文先講講其中的Redo傳輸服務。
1、使用ARCn傳輸Redo日志
默認情況下采用ARCn傳輸redo日志,不過只有在最高性能模式下才可以使用ARCn(具體可參考《Oracle] Data Guard 之 三種保護模式介紹 》),采用ARCH傳輸Redo日志的示意圖如下:
其大致過程如下:
1)Primay段ARC0一旦完成日志切換,ARC1就將新生成的歸檔日志傳輸到Standby端;
2)Standby 端由RFS進程接受日志,如果配置了standby redo log,記錄至standby redo log,等standby redo log做log switch形成歸檔日志,再應用歸檔日志做恢復;如果沒有配置standby redo log,RFS進程接收到日志後,放到standby端歸檔目錄下,standby再應用歸檔日志做恢復。
2、使用LGWR傳輸Redo日志
使用LGWR進程和ARCn有很大的不一樣,最明顯的區別是它不需要等Primary完成日志切換後再傳輸,其示意圖如下:
其過程大致如下:
1)一旦Primary有Redo日志產生,LGWR將觸發LNSn進程傳輸Redo只Standby redo log;注意:這裡不能由LGWR直接傳輸,因為整個數據庫實例只有一個LGWR,為了保證它的主要性能不受影響,不能由它直接傳輸)
2)網絡傳輸模式可以選擇sync或async,sync是指當Primary提交時, 必須得等Redo傳輸至Standby成功後,才能返回。所以如果設置sync,建議同時設置NET_TIMEOUT參數,超時無響應,則返回錯誤。 async是指Primary提交是否成功和日志是否傳輸成功沒有關系,這樣對Primary的性能影響最小。
3)Standby端的RFS進程把Redo寫入Standby redo log,如果開啟了實時應用,就將redo應用至Standby數據庫,如果沒有開啟實時應用,等Standby redo log歸檔後再應用到Standby數據庫。