1 說明
1.1 下載和文檔說明
下載地址:http://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html 我下載的是Oracle GoldenGate 12.1.2.1.0版本的Oracle GoldenGate V12.1.2.1.0 for Oracle on Linux x86-64 (336 MB)
在線文檔地址:http://www.oracle.com/technetwork/middleware/goldengate/documentation/index.html
Oracle GoladenGate介紹:https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_about_gg.htm#GWUAD110
Oracle 官方的安裝教程:http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/OGG12c_Installation/index.html
Step by step GoldenGate configuration:https://sachinichake.wordpress.com/2013/05/08/step-by-step-golden-gate-configuration
1.2 資源說明
- 每個GoldenGate實例可支持5000個Extract和Replicat進程
- 每個Extract和Replicat需要25-50M或更多的內存,這取決於系統的事物量和事物大小
- GoldenGate實際使用的物理內存由操作系統控制和管理,GoladenGate 緩存管理器利用操作系統內存管理功能的優勢,確保GoladenGate進程持續和有效的工作
1.3 組件說明
1.3.1 Manager
Manager進程必須在源端和目標端運行,並且在Extract和Replicat進程之前啟動,沒有該進程OGG無法做其它的操作,它管理啟動Oracle GoldenGate進程、啟動動態進程、分配端口給GoldenGate進程、管理trail file、創建事件,錯誤和診斷報告工作;
1.3.2 Extract
Extract 運行在源端或者根據系統和業務的需求可以同時運行在兩端,抽取捕獲系統變更統數據;它可以配置為初始化數據加載(直接從數據源中加載靜態的數據)和在某個時間點后源端與服務端變更數據同步(從在線日志或歸檔日志抽取捕獲變更的數據),它也可以在支持DDL變更的系統中抽取捕獲DDL;
當配置為數據同步時,extract進程抽取捕獲extract配置文件里配置的對象的任何DML和DDL(需要額外配置)的操作,extract進程記錄這些操作,直到用戶提交或回滾事務;當收到回滾(rollback)時,extract撤銷這些記錄;當收到(commit)操作后,extract進程記錄保存這些操作到一個或多個trail文件里並以隊列的形式發送到目標端,以確保數據傳輸速度和數據的一致性。
1.3.3 Data Pumps
Data Pumps是第二種類型的GoldenGate extract配置,如果不使用Data Pump,extract進程必須發送抽取捕獲的操作數據到目標端trail;如果配置了Data Pump,extract進程抽取捕獲數據寫入到trail,Data pump讀取trail並且通過網絡發送trail到目標端trail,data pump 加強了源端和目標端抽取捕獲數據的可用性,主要優點:1.保護網絡傳輸失敗和目標端失敗;2.可以實現復雜的數據過濾和轉換;3.可以結合多個數據源到目標端;4.可以同步一個源數據到多個目標端。
1.3.4 Replicats
Replicat進程運行在目標端讀取tail文件和重構DML、DDL並應用到目標數據庫;Replicat編譯SQL一次,當變量值不同時重復使用編譯過的SQL;Replicat進程可以像extract進程一樣配置初始化數據加載(直接從數據源中加載靜態的數據)和在某個時間點后源端與服務端變更數據同步(從在線日志或歸檔日志抽取捕獲變更的數據);
1.3.5 Trails
trail文件保存抽取捕獲的變更數據信息,trail根據GoldenGate配置可能存在於源系統的磁盤上或者目標系統的磁盤上或者系統內部介質或者相關的系統中;使用trail文件存儲抽取捕獲的數據可以不依賴於extract或replicat進程,你可以有更多的選擇處理數據和何時到達目標端,比如你可能配置抽取和保存在同一時刻,然后稍后發送數據到目標端。
trail文件可以在進程需要時使用ADD RMTTRAIL or ADD EXTTRAIL命令添加創建,文件名為8個字符,在創建時指定兩個字符然后由GoldenGate填充另外六個序列字符,序列字符從000000到999999,比如創建時指定了兩個字符為'tr',那么GoldenGate會自動創建從tr000001開始的文件保存抽取捕獲的數據;文件名是唯一的,默認保存在GoldenGate_home\dirdat目錄下。
1.3.6 Checkpoints
Checkpoint存儲從文件讀取和寫入的檢測點位置,用於還原和恢復數據,Checkpoint確保發生變化並提交(commit)的數據被extract抽取捕獲和被replicat進程應用到目標端;保證在系統、網絡或者GoldenGate需要重啟進程時發生的錯誤不會導致數據丟失;在復雜的同步配置中checkpoints啟用多個extract和replicat進程從同一個trail集中讀取數據。
1.3.7 Collector
collector是目標端后台進程,默認情況下,源端extract進程初始化TCP/IP連接到目標端的collector進程,但是因為GoldenGate是可配置的,所以有些時候可能需要在目標端配置和初始化collector,比如目標端同步時區,但是源端的時區小於目標端的情況下。collector的功能:1.根據源端extract進程的請求,掃描和綁定可用的端口給mgr主進程分配給請求的extract進程;2.接收源端extract抽取trail並寫入到目標端的trail文件;當源端發出網絡請求時mgr自動啟動collector后台進程,所以GoldeGate用戶是不可以與它交互的。collector只能同時接受一個extract進程信息(一對一)並且隨着extract的終止而終止。
2 目錄和環境變量設置
實驗分別在同一台機器上的/u01/app/product/ogg_src目錄下安裝源端,/u01/app/product/ogg_trg目錄下安裝目標端為例;
[oracle@sywu ~]$ mkdir -p /u01/app/product/ogg_src
[oracle@sywu ~]$ mkdir -p /u01/app/product/ogg_trg
[oracle@sywu ~]$ ls /u01/app/product
11.2.3 ogg_src ogg_trg
Linux下安裝GoldenGate要配置ORACLE_SID、ORACLE_HOME和LD_LIBRARY_PATH;
export ORACLE_BASE=/u01
export ORACLE_HOME=$ORACLE_BASE/app/product/11.2.3/db_1
export ORACLE_SID=sydb
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias nmon='/usr/nmon/nmon_x86_centos6'
alias bbed='rlwrap bbed'
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch
export PATH
注意:數操作系統版本、據庫版本和Oracle GoldenGate版本bit type要一致,要么全是32bit要么全是64bit;
3 安裝GoldenGate
3.1 安裝源端GoldenGate
[oracle@sywu ~]$ unzip 121210_fbo_ggs_Linux_x64_shiphome.zip -d /tmp
[oracle@sywu ~]$ /tmp/fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller
根據數據庫版本選擇對應的GoldenGate選項;
更改GoldenGate Software 安裝位置,將其安裝到/u01/app/product/ogg_src目錄下,檢查數據庫安裝位置是否正確,並配置端口;
檢查安裝信息,確認無誤后開始安裝;
這樣源端的安裝就完成了。
3.2 安裝目標端GoldenGate
目標端的配置和安裝與源端的安裝步驟上都相同,唯一不同的地方是如果在同一台機器上安裝源端和目標端,則要將其安裝在不同的目錄下(此處是/u01/app/product/ogg_trg),並且配置不同的端口(此處是7909);
安裝完成后配置OGG命令行快捷命令和回寫功能,在.bash_profile配置文件中添加如下內容:
alias tggsci='rlwrap /u01/app/product/ogg_trg/ggsci'
alias sggsci='rlwrap /u01/app/product/ogg_src/ggsci'
上面通過別名的方式配置了源端的OGG ggsci命令sggsci,目標端的OGG ggsci命令tggsci並通過rlwrap 使其支持回寫功能,這樣在任何位置都可以使用OGG ggsci命令;
[oracle@sywu ~]$ which tggsci
alias tggsci='rlwrap /u01/app/product/ogg_trg/ggsci'
/usr/local/bin/rlwrap
[oracle@sywu ~]$ which sggsci
alias sggsci='rlwrap /u01/app/product/ogg_src/ggsci'
/usr/local/bin/rlwrap
[oracle@sywu ~]$ sggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 7 2014 09:14:25
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
GGSCI (sywu) 1> exit
[oracle@sywu ~]$ tggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 12.1.2.1.0 OGGCORE_12.1.2.1.0_PLATFORMS_140727.2135.1_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Aug 7 2014 09:14:25
Operating system character set identified as UTF-8.
Copyright (C) 1995, 2014, Oracle and/or its affiliates. All rights reserved.
GGSCI (sywu) 1> exit
[oracle@sywu ~]$
該版本默認已經自動建立子目錄,早期版本可能需要在GGSCI命令行下使用create subdirs命令手工創建;安裝完成后查看mgr進程應為running狀態;
GGSCI (sywu) 1> view param mgr
PORT 7909
GGSCI (sywu) 2> info mgr
Manager is running (IP port sywu.7909, Process ID 16870).
4 GoldenGate目錄結構
說明 | 后綴名 | 目錄路徑 |
---|---|---|
Parameter files | .prm | /u01/app/product/ogg_src/dirprm |
Report files | .rpt | /u01/app/product/ogg_src/dirrpt |
Checkpoint files | .cpr | /u01/app/product/ogg_src/dirchk |
Process status files | .pcs | /u01/app/product/ogg_src/dirpcs |
SQL script files | .sql | /u01/app/product/ogg_src/dirsql |
Database definitions files | .def | /u01/app/product/ogg_src/dirdef |
Extract data files | /u01/app/product/ogg_src/dirdat | |
Temporary files | /u01/app/product/ogg_src/dirtmp | |
Credential store files | .crd | /u01/app/product/ogg_src/dircrd |
Masterkey wallet files | .wlt | /u01/app/product/ogg_src/dirwlt |
Dump files | .dmp | /u01/app/product/ogg_src/dirdmp |
5 總結
GoldenGate由COLLECTOR后台進程、MGR進程、EXTRACT進程、DATA PUMP EXTRACT進程、Replicat等一系列進程組成;COLLECTOR后台進程負責接收和保存源端數據到trail;MGR進程管理啟動Oracle GoldenGate進程、分配端口、管理trail file、創建事件,錯誤和診斷報告工作;EXTRACT進程負責抽取捕獲變更數據信息並記錄到trail;DATA PUMP EXTRACT是第二種GoldenGate extract 進程配置,它加強了源端和目標端抽取捕獲數據的可用性,避免網絡錯誤和目標端失敗導致的數據丟失並提供了更復雜的數據過濾和轉換功能,以及多源對單目標和單源對多目標的數據同步方式;Replicat進程讀取接收到的trail文件,根據trail文件內容重構DML和DDL並應用到目標數據庫。
---The end(2015-08-21)