DG ARCH進程 詳解:
主庫:
產生日志后通過LGWR進程寫入在線重做日志,當滿足相關條件后在線重做日志會進行切換,ARC0進程歸檔該日志至主庫本地的歸檔目錄,歸檔完成后,ARC1進程就會將歸檔日志傳輸到備庫
備庫:
RFS進程負責接收日志
1)如果備庫有Standby重做日志,則把日志復制到Standby重做日志,接着把Standby重做日志歸檔至備庫本地歸檔目錄,最后應用歸檔
2)如果沒有配置Standby重做日志,RFS進行接收日志后,直接把它放到備庫的歸檔目錄下,再應用該日志
使用 ARCH 進程存在的問題:
主庫 只有在發生歸檔時 才會發送日志到備庫
如果主庫異常宕機,聯機日志中的redo內容就會丟失,因此使用ARCH進程 無法避免數據丟失 的問題,要想避免數據丟失,就必須使用LGWR,而使用LGWR又分為 同步和異步 兩種方式
12c增加了 fast sync模式
LGWR ASYNC --異步過程詳解
主庫:
產生日志,只要有新的重做日志產生,LGWR進程就觸發LNSn進程把新生成的重做日志傳輸到備庫
ASYNC是 redo buffer 保存到 online redo log 后,LNSn才開始傳輸
備庫:
RFS進程負責接收日志,接收日志后將其寫入Standby重做日志,如果備庫開啟了實時應用,就立即做日志應用,如果沒有開啟,則等Standby重做日志 歸檔后 再應用
LGWR-SYNC --同步過程詳解
主庫:產生日志,只要有新的重做日志產生,LGWR進程就將觸發 LNSn進程 把新生成的重做日志傳輸到備庫
SYNC是在 redo buffer 時,LNSn進程就開始傳輸
備庫:RFS進程負責接收日志,接收到日志后將其寫入Standby重做日志,如果備庫開啟了實時應用,就立即做日志應用,如果沒有開啟,則等Standby重做日志 歸檔后 再應用
同步的弊端:
DG三種數據保護模式:
最大保護:可以保證主庫、備庫同步,任何情況下主庫的損毀都不會導致已提交的數據丟失。如果主庫和備庫之間的網絡出現問題,或者備庫本身出現問題,都會導致主庫停止數據處理
最大可用:保證主庫和備庫的同步,與上面的區別是當網絡或備庫不可用時,主庫仍可以繼續。該保護模式下,零數據丟失
最大性能:缺省模式,主庫、備庫是異步的,這種模式可能在主庫出現損毀時,丟失一部分數據。但是這種模式對主庫的負荷最小,因此具有最好的性能。
主從切換:
switchover:無損的
failover:破壞性的操作
DG 歸檔裂縫 檢測和解決
當主庫的某些日志沒有成功發送到備庫,這時候發生了歸檔裂縫(archive gap),缺失的這些日志就是裂縫
dg能夠自動檢測,解決歸檔裂縫,不需要DBA介入
這需要配置 FAL_CLIENT,FAL_SERVER 這兩個參數
FAL_CLIENT 通過網絡向 FAL_SERVER 發送請求
FAL_SERVER 通過網絡向FAL_CLIENT 發送缺失的日志
除了自動解決,DBA也可以手工解決
12c Far Sync 兩地三中心:
12c后,在主備之間放一個遠程同步實例,可以放在距離主庫較近的異地,專門接收日志
通過 sync 的方式把 redo傳輸到 far sync 實例,然后通過 async的方式 傳輸到終端災備數據庫
在此過程中,如果 far sync 實例 出現問題,生產數據庫可以直接通過 async 方式把 redo 傳輸到 災備數據庫