DG的ASYNC與SYNC深層原理解析
使用LGWR 程式的SYNC 方式
1)Primary Database 產生的Redo 日誌要同時寫到日誌檔案和網路。也就是說LGWR程式把日誌寫到本地日誌檔案的同時還要傳送給本地的LNSn程式(Network Server Process),再由LNSn(LGWR Network Server process)程式把日誌透過網路傳送給遠端的目的地,每個遠端目的地對應一個LNS程式,多個LNS程式能夠並行工作。
2)LGWR 必須等待寫入本地日誌檔案操作和透過LNSn程式的網路傳送都成功,Primary Database 上的事務才能提交,這也是SYNC的含義所在。
3)Standby Database的RFS程式把接收到的日誌寫入到Standby Redo Log日誌中。
4)Primary Database的日誌切換也會觸發Standby Database 上的日誌切換,即Standby Database 對Standby Redo Log的歸檔,然後觸發Standby Database 的MRP或者LSP 程式恢復歸檔日誌。
因為Primary Database 的Redo 是實時傳遞的,於是Standby Database 端可以使用兩種恢復方法:
實時恢復(Real-Time Apply): 只要RFS把日誌寫入Standby Redo Log 就會立即進行恢復;
歸檔恢復: 在完成對Standby Redo Log 歸檔才觸發恢復。
Primary Database預設使用ARCH程式,如果使用LGWR程式必須明確指定。使用LGWR SYNC方式時,可以同時使用NET_TIMEOUT引數,這個引數單位是秒,代表如果多長時間內網路傳送沒有響應,LGWR 程式會丟擲錯誤。 示例如下:
alter system set log_archive_dest_2 = 'SERVICE=ST LGWR SYNC NET_TIMEOUT=30' scope=both;
使用LGWR程式的ASYNC 方式
使用LGWR SYNC方法的可能問題在於,如果日誌傳送給Standby Database過程失敗,LGWR程式就會報錯。也就是說Primary Database的LGWR 程式依賴於網路狀況,有時這種要求可能過於苛刻,這時就可以使用LGWR ASYNC方式。 它的工作機制如下:
1) Primary Database 一端產生Redo 日誌後,LGWR 把日誌同時提交給日誌檔案和本地LNS 程式,但是LGWR程式只需成功寫入日誌檔案就可以,不必等待LNSn程式的網路傳送成功。
2) LNSn程式非同步地把日誌內容傳送到Standby Database。多個LNSn程式可以併發傳送。
3) Primary Database的Online Redo Log 寫滿後發生Log Switch,觸發歸檔操作,也觸發Standby Database對Standby Database對Standby Redo Log 的歸檔;然後觸發MRP或者LSP 程式恢復歸檔日誌。
因為LGWR程式不會等待LNSn程式的響應結果,所以配置LGWR ASYNC方式時不需要NET_TIMEOUT引數。示例如下:
alter system set log_archive_dest_2 = 'SERVICE=ST LGWR ASYNC ' scope=both;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28853590/viewspace-2150307/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring IOC 原理深層解析Spring
- PHP 底層的執行機制與原理解析PHP
- Asp.Net Sync & ASync Processing requestASP.NET
- 深度解析HashMap集合底層原理HashMap
- 【DG】DG概念原理詳解
- Dart | 你知道 sync*/async* 是怎麼用的嗎?Dart
- Oracle 12c DG新特性Far SyncOracle
- angularjs的深層路由AngularJS路由
- 【-Flutter/Dart 語法補遺-】 sync* 和 async* 、yield 和yield* 、async 和 awaitFlutterDartAI
- webpack與browser-sync熱更新原理深度講解Web
- InnoDB索引與底層原理索引
- 持久層Mybatis3底層原始碼分析,原理解析MyBatisS3原始碼
- async函式解析函式
- 深層面分析技術團隊的情緒與效率
- vue物件的深層複製Vue物件
- async 函式的實現原理函式
- 由淺入深:CNN中卷積層與轉置卷積層的關係CNN卷積
- 資料庫Standby中的幾個概念 - LGWR, ARCH,ASYNC,SYNC,AFFIRM資料庫
- JavaScript深層克隆物件JavaScript物件
- 深入解析JavaScript非同步程式設計:Generator與AsyncJavaScript非同步程式設計
- Dart空安全的底層原理與適配Dart
- PHP底層的執行機制與原理PHP
- PHP 底層的執行機制與原理PHP
- 從rocketmq入手,解析各種零拷貝的jvm層原理MQJVM
- EventBus原理與原始碼解析原始碼
- __weak與__block區別,深層理解兩者區別BloC
- promise、async、await非同步原理與執行順序PromiseAI非同步
- iOS中Block的用法,示例,應用場景,與底層原理解析(這可能是最詳細的Block解析)iOSBloC
- CAS底層原理與ABA問題
- 資料型別與底層原理資料型別
- Goland sync.Map大白話解析GoLand
- using update panel do sync job , update UI control asyncUI
- JavaScript後門深層分析JavaScript
- 前大眾點評資深研發專家對Mysql索引的解析與底層資料結構的解刨MySql索引資料結構
- Async Commit 原理介紹MIT
- Golang map執行緒安全實現及sync.map使用及原理解析。Golang執行緒
- 物理DG與邏輯DG的區別與邏輯DG同步異常處理方法
- JavaScript陣列常用方法解析和深層次js陣列扁平化JavaScript陣列JS