OGG:Oracle Golden Gate
簡稱為OGG,提供異構環境下的數據的實時捕捉,變換和投遞。
1.OGG的特點:
- 對生產環境影響較小,因其實時讀取交易日志從而實現了用最小的資源占用解決了大交易量數據的實時復制。
- 以交易為單位復制,保證交易的一致性實現了只同步提交的數據。
- 高性能,智能的交易重組和操作合並,使用數據庫本地接口訪問,並行處理體系,靈活的拓撲結構:支持一對一、一對多、多對一、多對多和雙向復制等。
- 異構環境支持,在不同平台和數據庫環境下復制數據,開放的結構使得客戶的可以適應各種平台具有良好的可拓展性。
- 提供數據壓縮和加密,保證數據的安全性。
- 支持數據的過濾和轉換,可以自定義基於行或者表的過濾規則,更加靈活。
2.OGG的工作原理:
OGG是一種基於日志bai的結構化數據復制軟件,通過捕獲源數據庫online redo log (在線重做日志)或archive log(歸檔日志)獲得數據變化,形成tail(隊列文件 ),再將這些tail通過網絡協議,傳輸到目標數據庫,目標端通過解析,插入至目標端數據庫,從而實現源端與目標端數據同步。
ogg的主要工作進程:
重要進程介紹:
- Manager:
運行在源端和目標端上,不管是源端還是目標端都必須有且僅有一個Manager進程,用來啟動、關閉和監控其他進程的健康狀態、報告錯誤和事件、分配數據存儲空間以及發布閾值報告等。 - Extract:
運行在數據庫源端的進程,捕捉源端數據表或日志中的數據,然后寫入到本地的trail文件中,源端數據發生改變時,extract進程就會進行捕捉,當這個事務提交時,所有和該事務相關的日志被以事務為單元順序記錄到trail文件中。同時為了extract也有檢查點機制,可以周期性的記錄讀寫的位置,實現斷點同步。
根據工作狀態分為兩個階段:
初始裝載階段:extract進程直接從源端的數據表中抽取數據。
同步變化捕捉階段:初始數據同步完成,extract負責捕捉源端的數據變化(DML/DDL)
Extract的兩種工作模式:
1)傳統模式:基於在線日志或歸檔日志進行抽取(常用)
2)Integrated模式:11g以后的功能, Logmining server負責以LCR格式從數據庫日志中捕獲數據變化,extract進程再將這些數據存入 trail文件。
- Pump:
pump進程是一個可選的進程,運行在數據庫的源端把源端產生的本地trail文件以數據塊的形式通過TCP/IP協議發送給目標端。如果不選擇pump進程,那么源端會將抽取的數據直接投遞給目標端從而生成遠程trail文件。這樣就不需要配置pump進程,但是通常推薦配置pump。 - Collector:
運行在目標端上,與pump,extract對應,作用就是把extract或者pump傳過來的數據塊重新組裝成trail文件,不需要任何配置是一個完全自動的進程,對用戶來說透明。 - Replicate:
運行在目標端,通常稱為應用進程,負責讀取由源端傳輸的數據塊被目標端collecter進程組裝的trail文件。解析出的SQL語句再在目標端應用到數據庫中。
Replicate的兩種工作模式:
1)傳統模式:最常用的基於SQL交付的方式。
2)Integrated模式:讀取源端傳輸過來的 trail 文件;執行data 數據過濾和轉換操作;DML操作:根據commit順序,構造LCR;DDL 操作:Replicat 進程直接apply;Replicat 通過lightweight streaming 接口和目標庫后台進程(Database inbound server)建立 連接;將LCR傳輸到inbound server,然后apply 這些數據到目標數據庫。
至此一次相對完整的OGG傳輸完成。