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資料庫。