1.首先看看什么是OGG,以及OGG的用途
簡單的來講 Oracle Golden Gate (簡稱OGG)是一種基於日志的結構化數據復制備份軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫同步。OGG可以跨越不通平台(包括不通操作系統,數據庫)實現大量數據亞秒一級的實時復制,從而在可以在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。同時,OGG可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構
2.OGG的邏輯結構圖

如上圖所示,OGG包含三大關鍵進程 Exract,Manager,Replicat等進程:
1.manager進程 (MGR)
Manager進程是GoldenGate的控制進程,運行在源端和目標端上,在目標端和源端有且只有一個manager進程.
它主要作用有以下幾個方面:
啟動、監控、重啟Goldengate的其他進程,報告錯誤及事件,分配數據存儲空間,發布閥值報告等.
2.extract進程(EXT)
Extract運行在數據庫源端,負責從源端數據表或者日志中捕獲數據。
Extract的作用可以按照表來時間來划分:
1.初始時間裝載階段:在初始數據裝載階段,Extract進程直接從源端的數據表中抽取數據.
2.同步變化捕獲階段:初始數據同步完成以后,Extract進程負責捕獲源端數據的變化(DML和DDL)
但是OGG並不是對所有的數據庫都支持ddl操作
Extract進程會捕獲所有已配置的需要同步的對象變化,但只會將已提交的事務發送到遠程的trail文件用於同步。當事務提交時,所有和該事務相關的日志記錄被以事務為單元順序的記錄到trail文件中。Extract進程利用其內在的checkpoint機制,周期性的記錄其讀寫的位置,實現斷點同步。通過上面的兩個機制,就可以保證數據完整性.
多個Extract 進程可以同時對不同對象進行同步操作。例如,可以在一個extract進程抽取並向目標端發生事務數據的同時,利用另一個extract進程抽取的數據做報表。或者,兩個extract進程可以利用兩個trail文件,同時抽取並並行傳輸給兩個replicat進程以提高同步性能.
Extract進程的狀態:
Stopped(正常停止),
Starting(正在啟動),Running(正在運行),Abended(Abnomal End縮寫,標示異常結束)
3.Pump進程
pump進程運行在數據庫源端,其作用是將源端產生的本地trail文件,把trail以數據塊的形式通過TCP/IP 協議發送到目標端,這通常也是推薦的方式。pump進程本質是extract進程的一種特殊形式,如果不使用trail文件,那么extract進程在抽取完數據以后,直接投遞到目標端,生成遠程trail文件.
與Pump進程對於的叫Server Collector進程,這個進程不需要引起我們的關注,因為在實際操作過程中,無需我們對其進行任何配置,所以對我們來說它是透明的。它運行在目標端,其任務就是把Extract/Pump投遞過來的數據重新組裝成遠程trail文件.
pump進程可以在線或者批量配置,他可以進行數據過濾,映射和轉換,同時他還可以配置為“直通模式”,這樣數據被傳輸到目標端時就可以直接生成所需的格式,無需另外操作. 直通模式提高了data pump的效率,因為生成后的對象 不需要繼續進行檢索.
在大多數情況下,oracle都建議采用data pump,原因如下:
1.為目標端或網絡問題提供保障:如果只在目標端配置trail文件,由於源端會將extract進程抽取的內容不斷的保存在內存中,並及時的發送到目標端。當網絡或者目標端出現故障時, 由於extract進程無法及時的將數據發送到目標, extract進程 將耗盡內存然后異常終止。 如果在源端配置了data pump進程,捕獲的數據會被轉移到硬盤上,預防了異常終止的情況。當故障修復,源端和目標端 恢復連通性時,data pump進程發送源端的trail文件到目標端。
2.可以支持復雜的數據過濾或者轉換 :當使用數據過濾或者轉換時,可以先配置一個data pump進程在目標端或者源端進行第一步的轉換,利用另一個data pump進程或者 Replicat組進行第二部的轉換。
3.有效的規划存儲資源 :當從多個數據源同步到一個數據中心時,采用data pump的方式,可以在源端保存抽取的數據,目標端保存trail文件,從而節約存儲空間。
4.解決單數據源向多個目標端傳輸數據的單點故障 :當從一個數據源發送數據到多個目標端時,可以為每個目標端分別配置不同的data pump進程。這樣如果某個目標端失效或者網絡故障時,其他的目標端不會受到影響可以繼續同步數據。
4.Replicat進程
Replicat進程,稱之為復制應用進程。運行在目標端,是數據傳遞的最后一站,負責讀取目標端trail文件中的內容,並將其解析為DML或 DDL語句,然后應用到目標數據庫中.和Extract進程一樣,Replicat也有其內部的checkpoint機制,保證重啟后可以從上次記錄的位置開始恢復而無數據損失的風險.
Replicat 進程的狀態包括Stopped(正常停止),Starting(正在啟動),Running(正在運行),Abended(Abnomal End的縮寫,標示異常結束)。
5.Trail文件
作用:存儲事務變化信息(DDL和DML事務操作記錄)
主庫上的trail文件是可選的
備庫上的trail文件是必須的(因為Replicat進程需要讀取該文件中的DDL或DML SQL用來應用)
如果在主庫上面定義了PUMP進程,那么就需要在主庫上創建trail文件,因為PUMP進程將主庫上的trail文件以塊級別傳輸給網絡上的從庫。