Data Guard主要提供兩個服務(wù):
1)Redo傳輸服務(wù):即把Primay端的Redo日志傳輸?shù)揭粋€或多個Standby目的地。
2)Redo應(yīng)用服務(wù):即在Standby端應(yīng)用從Primay端傳輸過來的Redo日志。
本文先講講其中的Redo傳輸服務(wù)。
1、使用ARCn傳輸Redo日志
默認情況下采用ARCn傳輸redo日志,不過只有在最高性能模式下才可以使用ARCn(具體可參考《[Oracle] Data Guard 之 三種保護模式介紹》),采用ARCH傳輸Redo日志的示意圖如下:

其大致過程如下:
1)Primay段ARC0一旦完成日志切換,ARC1就將新生成的歸檔日志傳輸?shù)絊tandby端;
2)Standby端由RFS進程接受日志,如果配置了standby redo log,記錄至standby redo log,等standby redo log做log switch形成歸檔日志,再應(yīng)用歸檔日志做恢復(fù);如果沒有配置standby redo log,RFS進程接收到日志后,放到standby端歸檔目錄下,standby再應(yīng)用歸檔日志做恢復(fù)。
2、使用LGWR傳輸Redo日志
使用LGWR進程和ARCn有很大的不一樣,最明顯的區(qū)別是它不需要等Primary完成日志切換后再傳輸,其示意圖如下:

其過程大致如下:
1)一旦Primary有Redo日志產(chǎn)生,LGWR將觸發(fā)LNSn進程傳輸Redo只Standby redo log;注意:這里不能由LGWR直接傳輸,因為整個數(shù)據(jù)庫實例只有一個LGWR,為了保證它的主要性能不受影響,不能由它直接傳輸)
2)網(wǎng)絡(luò)傳輸模式可以選擇sync或async,sync是指當(dāng)Primary提交時, 必須得等Redo傳輸至Standby成功后,才能返回。所以如果設(shè)置sync,建議同時設(shè)置NET_TIMEOUT參數(shù),超時無響應(yīng),則返回錯誤。async是指Primary提交是否成功和日志是否傳輸成功沒有關(guān)系,這樣對Primary的性能影響最小。
3)Standby端的RFS進程把Redo寫入Standby redo log,如果開啟了實時應(yīng)用,就將redo應(yīng)用至Standby數(shù)據(jù)庫,如果沒有開啟實時應(yīng)用,等Standby redo log歸檔后再應(yīng)用到Standby數(shù)據(jù)庫。