一. OGG 概述
OGG 全稱Oracle Golden Gate。
歷史:
Golden Gate公司於1995年成立於美國加州舊金山,它的名稱源自舊金山聞名於世的金門大橋。兩位創始人Eric Fish和Todd Davidson最初旨在為Tandem計算機公司設計一個容錯系統,由於Golden Gate的健壯性和出色的數據復制功能,銀行用它來把ATM網絡的交易數據發送到IBM大型機,后來廣泛地應用到金融行業及要求數據復制高效、健壯的各個行業。該公司於2009年9月被Oracle公司收購,在此之前Oracle和Golden Gate公司就有了長達超過10年的合作關系。在Oracle收購Golden Gate以后,與Oracle原有的 Data Guard互為補充,共同為企業提供跨平台實時數據同步的解決方案。
Golden Gate 軟件分類說明:
(1)Golden Gate:包括GoldenGate Capture, Deliver 和Active Data Guard, XStream on Oracle DB,並支持各種開放數據系統,是我們通常講的OGG的概念。
(2)Golden Gate Director:實際上,在下載的時候,可以發現沒有Director的類目了,替換的是一個Golden Gate Management Pack的包,其實這個就是之前的OGG Director。Management Pack是基於瀏覽器的管理工具包,有限使用WebLogic SE,所以配置MP,需要先安裝weblogic。
(3)Golden Gate Veridata:跨平台比較復制的源庫和目標庫,為Golden Gate源端和目標端提供數據比對和校驗的功能。
另外,也有不太常見的:
(1)Golden Gate for Mainframe:包括GoldenGate Capture, Deliver for HP Non-Stop, IBM DB2 on
Mainframe, plus Syncfile。
(2)Golden Gate Adapters:對Java、Flat File、Siebel等的接口包。
(1)Golden Gate for Mainframe:包括GoldenGate Capture, Deliver for HP Non-Stop, IBM DB2 on
Mainframe, plus Syncfile。
(2)Golden Gate Adapters:對Java、Flat File、Siebel等的接口包。
二 、OGG架構
支持的異構平台:

支持的架構形式:

實現的功能:

三、目錄結構
目錄 說明
BR boundedrecover需要的checkpointfiles
cfg 配置OGG監控所需要的property和XML文件
dirchk Extract或者Replicat進程創建的checkpointfile。cpe和cpr后綴
dirdat trial文件的默認存放位置,2個用戶定義的字符+6個數字組成
dirdef 異構數據定義文件,由DEFGEN生成
dirjar OGGmonitor相關的jar包
dirpcs 進程狀態文件
dirprm 參數文件
dirrpt 進程報告的存儲目錄
dirsql Sql腳本
dirtmp 超出分配內存的事務臨時存儲目錄
cfg 配置OGG監控所需要的property和XML文件
dirchk Extract或者Replicat進程創建的checkpointfile。cpe和cpr后綴
dirdat trial文件的默認存放位置,2個用戶定義的字符+6個數字組成
dirdef 異構數據定義文件,由DEFGEN生成
dirjar OGGmonitor相關的jar包
dirpcs 進程狀態文件
dirprm 參數文件
dirrpt 進程報告的存儲目錄
dirsql Sql腳本
dirtmp 超出分配內存的事務臨時存儲目錄
四、 OGG進程
在Oracle OGG 12c中,有如下組件:
(1)Extract
(2)Data pump
(3)Replicat
(4)Trails 或 extract files
(5)Checkpoints
(6)Manager
(7)Collector
(1)Extract
(2)Data pump
(3)Replicat
(4)Trails 或 extract files
(5)Checkpoints
(6)Manager
(7)Collector

1. Extract 進程
Extract 進程負責數據抽取工作。
Extract 可以配成如下兩種模式:
(1)Initial Load:
在初始化裝載過程中,Extract 進程直接從源對象中抽取當前的數據。
(2)Change synchronization:
為了保證源數據和其他對象保持數據的一致,extract 進程會捕獲源對象自初始化同步以后的DML 和DDL 的變化。
如果接收到的是rollback,那么Extract 會清除該事務之前的所有記錄。
如果接收到的是commit,Extract 會將之前存儲的事務信息進行持久化,即將事務信息寫入磁盤上的trail 文件,然后按隊列傳送到目標庫。
2.Data Pump 進程
Data pump 進程是OGG 源庫上的一個輔助Extract Group。
3. Replicat 進程
Replicate 進程運行在目標系統上,該進程會讀取目標端的trail中的文件,並將解析為DML 或者DDL 語句,然后在目標數據庫執行。
Replicate可以配置成如下模式:
(1)Initial loads:
(1)Initial loads:
(2)Change synchronization
4. Trails 文件
為了支持連續的extraction 和 replication 數據的改變,OGG抓取這些改變的數據臨時存放在一個序列化的磁盤文件里, 這個文件就叫trail。
Trail 文件可以放在源端或者目標端的系統里,甚至可以放到臨時中轉的系統上,這主要取決與GG 的配置,如果存放在local system上,就叫extract trail 或者 local trail,如果存放在remote system上就叫作remote trail。
Trail 文件可以放在源端或者目標端的系統里,甚至可以放到臨時中轉的系統上,這主要取決與GG 的配置,如果存放在local system上,就叫extract trail 或者 local trail,如果存放在remote system上就叫作remote trail。
創建和維護Trail 文件:
默認情況下,trails存放在GG 安裝目錄的dirdat 子目錄下。
默認情況下,每個trails的文件是10M,為了保證進程的正常運行必須不斷的創建的新的trail 文件。 這個過程由OGG 自動實現,並且不影響OGG的運行。
每個新生成的文件,文件名都會繼承舊trail文件的前2個字母,然后加上6個數字,這樣來進行唯一性約束。 數字從000000到999999。當數字到達999999時,又繼續從000000開始。之前的trail 文件被覆蓋。
補充: (Extract Files)
Extract file 可以是一個文件,或者配置成多個文件。 配置成多個文件可以避免觸及操作對單個文件最大大小的限制。
Extract file 和 trail 文件很類似,但是Extract file中不會存儲checkpoints的信息。 Extract file 會在運行時自動創建。
Extract file 和 trail 文件很類似,但是Extract file中不會存儲checkpoints的信息。 Extract file 會在運行時自動創建。
5. Checkpoints 機制
Replicate都會checkpoint table 和 checkpoint file中記錄事務的位置。我們也可以不使用checkpoint table。
6. Manager 進程
Manager 是Golden Gate的控制進程,Manager 必須在所有的Golden Gate端運行,並且要在Extract 或者 Replicat 進程啟動之前運行。 在Extract 或者 Replicat進程運行期間,需要一直保證Manager進程的運行,這樣才能管理相關的資源。
Manager 進程有如下功能:
(1)啟動Golden Gate 進程
(2)啟動其他相關的進程
(3)維護進程的端口
(4)管理trail 進程
(5)創建event,error和threshold 的報告。
(1)啟動Golden Gate 進程
(2)啟動其他相關的進程
(3)維護進程的端口
(4)管理trail 進程
(5)創建event,error和threshold 的報告。
7. Collector 進程
target的一個后台進程。
Collector 進程做如下工作:
(1) 將源端Extract 進程的請求發送到Manager進程,掃描並綁定可用的端口,並將端口信息返回給Manager 進程,然后分配給請求的的Extract 進程。
(2) Collector 進程會接收源庫Extract 進程發送過來的改變的數據,並將數據寫入target 系統的trail 文件中。
(1) 將源端Extract 進程的請求發送到Manager進程,掃描並綁定可用的端口,並將端口信息返回給Manager 進程,然后分配給請求的的Extract 進程。
(2) Collector 進程會接收源庫Extract 進程發送過來的改變的數據,並將數據寫入target 系統的trail 文件中。
若srouce 端pump 進程起不來,collector 會鎖trail 文件 。 那么我需要確認是哪個pump進程出現問題,view report pump#,查看后找到collector ,kill -9 殺死。
補充說明:
每個Extract 和 Replicat 進程需要大約25-55M的內存。