here I only show the meaning of params.
add extract <group name>, TRANLOG, BEGIN NOW, THREADS <thread number>
其中group name表示這個Extract group的名字
TRANLOG 表示使用事務日誌的方式
BEGIN NOW 表示從現在開始,你也可以指定一個具體的開始時間
THREADS 表示從哪個instance上運行,只對RAC環境有用,單機環境比需要指定該Option
GoldenGate 軟件是一種基於日誌的結構化數據複製軟件,它通過解析源數據庫在線日誌或歸檔日誌獲得數據的增量變化,再將這些變化應用到目標數據庫,從而實現源數據庫與 目標數據庫同步。GoldenGate 可以在異構的IT基礎結構(包括幾乎所有常用操作系統平臺和數據庫平臺)之間實現大量數據亞秒一級的實時複製,從而在可以在應急系統、在線報表、實時數據 倉庫供應、交易跟蹤、數據同步、集中/分發、容災等多個場景下應用。
同時,GoldenGate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構。
環境要求:
支持的Oracle Database 版本
在當前的Oracle GoldenGate 10.4版本中,支持如下Oracle Database版本
Oracle 8i (DML support only)
Oracle 9.1 and 9.2 (DML and DDL support)
Oracle 10.1 and 10.2 (DML and DDL support)
Oracle 11g (DML and DDL support)
支持的操作系統平臺
幾乎所有主流的操作系統,GoldenGate都支持
Windows 2000, 2003, XP,Linux,Sun Solaris,HP NonStop,HP-UX
內存要求
GoldenGate對操作系統內存的需求主要取決於Extract和Replicat進程數,一般建議>2G。
DISK空間需求
由於要數據庫必須設置爲歸檔模式,所以要求至少保存7天以上的日誌,建議剩餘空間在10G~100G之間。
對於RAC環境
對 於RAC環境,GoldenGate的相關軟件和工作目錄需要配置在shared disk環境中,從而保證對所有node都是可用的,從任何一個node都可以啓動GoldenGate的進程,當其中一個node出現異常時,可以在剩 餘的node啓動而無須修改任何配置參數。否則如果運行在單個node上的話,需要將剩餘node中的歸檔日誌通過一定的技術共享出來並加載到 GoldenGate運行節點。
對於RAC環境,GoldenGate要求所有node必須保持時鐘同步,同時必須保持所有RAC node和運行extract進程的node節點保持時鐘同步。因爲GoldenGate會比較本地的系統時間和commit的時間戳。所以不能忽略這個 設置。否則可能導致數據複製的紊亂。
數據庫客戶端
GoldenGate需要安裝full Oracle client,以便於GoldenGate程序訪問Oracle XDK libraries。
數據庫用戶
建議使用sys或任何其他具有sysdba/sysasm權限的用戶。
數據庫配置
對於Source Oracle Database要求
數據庫處於歸檔模式下
打開補充日誌
打開force logging
分別配置連接源數據庫和目標數據庫的主機字符串
建立一個專門的用戶如Goldengate來負責將所需的數據同步到遠端,而不是用已有的業務用戶
這個用戶需要哪些權限呢?
Create user goldengate identified by goldengate default tablespace users temporary tablespace temp quota unlimited on users ;
GRANT CONNECT TO goldengate;
GRANT ALTER ANY TABLE TO goldengate;
GRANT ALTER SESSION TO goldengate;
GRANT CREATE SESSION TO goldengate;
GRANT FLASHBACK ANY TABLE TO goldengate;
GRANT SELECT ANY DICTIONARY TO goldengate;
GRANT SELECT ANY TABLE TO goldengate;
GRANT RESOURCE TO goldengate;
GRANT drop ANY TABLE TO goldengate;
GRANT DBA TO goldengate;
注*
補充日誌是否打開查詢語句:
select supplemental_log_data_min from v$database;
打開補充日誌語句:
alter database add supplemental log data;
打開force logging語句:
Alter database force logging;
配置golengate
環境:os linux 4.7 x86_64 數據庫:10.0.2.1 64位
IP設置:源 192.168.8.1 目標 192.168.8.2
SID: ORCL
1. 安裝goldengate 軟件
在oracle官方網站上下載goldengate對應平臺的安裝程序
進入到GoldenGate的安裝目錄.
運行
GGSCI
In GGSCI, issue the following command to create the GoldenGate working directories.
CREATE SUBDIRS
Issue the following command to exit GGSCI.
EXIT
2. 數據複製初始化
GoldenGate中支持的data load 方法有
Loading data with a database utility
Loading data from file to Replicat
Loading data from file to database utility
Loading data with a GoldenGate direct load
Loading data with a direct bulk load to SQL*Loader
Loading tables with Teradata table copy
Loading data with Teradata load utilities
注 * 這點我沒怎麼研究,我採用的rman異地恢復
3. 配置進程
第一步
:
在源數據庫和目標數據庫分別配置管理進程mgr
GGSCI> edit params mgr
port 7809
(保存退出)
GGSCI> start mgr
Manager started.
GGSCI> info all
ProgramStatus Group Lag ime Since Chkpt
MANAGER RUNNING
(可以正常啓動)
第二步:源數據庫增加兩個進程
*.一般源數據庫需要應配置兩個進程,一個負責抽取數據(ZLE_01),另一個負責投遞數據(ZLE_02),默認只支持DML,如果要支持DDL需要執行一些單獨的配置。
在源數據庫系統中執行如下命令增加一個Extract group,詳細的ADD EXTRACT語法參見官方手冊說明或GGSCI的online help.
GGSCI> add extract <group name>, TRANLOG, BEGIN NOW, THREADS <thread number>
其中group name表示這個Extract group的名字
TRANLOG 表示使用事務日誌的方式
BEGIN NOW 表示從現在開始,你也可以指定一個具體的開始時間
THREADS 表示從哪個instance上運行,只對RAC環境有用,單機環境比需要指定該Option
2.1 配置抽取進程
我這裏是單機環境,extract group name定義爲zle_01
GGSCI > DBLOGIN USERID goldengate@orcl1, PASSWORD goldengate
GGSCI > add extract ZLE_01, tranlog,begin now
EXTRACT added.
GGSCI > add RMTTRAIL ./dirdat/ra, extract zle_01, megabytes 50
查看一下剛纔定義的這個extract process的結果
GGSCI > info extract zle_01
EXTRACT ZLE_01 Initialized 2010-01-19 11:50 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:22 ago)
Log Read Checkpoint Oracle Redo Logs
2010-01-19 11:50:39 Seqno 0, RBA 0
補充一個命令: info extract zle_01, showch 看的更詳細
爲該抽取Extract進程配置參數文件,在源數據庫執行如下命令
GGSCI> edit param zle_01
增加如下內容
EXTRACT ZLE_01
SETENV (ORACLE_SID=ORCL)
USERID goldengate@ORCL1, PASSWORD goldengate
RMTHOST 192.168.8.1, MGRPORT 9001
RMTTRAIL ./dirdat/ra
TABLE ZLHIS.TEST;
RMTTRAIL告訴extract process需要將trail文件寫到哪裏
TABLE部分說明我這個Extract 進程只處理ZLHIS用戶下的TEST表
好了,到這裏就可以啓動上面定義的Capture 進程了,執行如下命令
GGSCI> start extract zle_01
Sending START request to MANAGER (‘mgr’) …
EXTRACT ZLE_01 starting
GGSCI>
Verify the results:
GGSCI> info EXTRACT ZLE_01, DETAIL
GGSCI> view REPORT ZLE_01
GGSCI> info extract ZLE_01
好了,到這裏就完成了一個最簡單的抽取Extract process的配置並啓動,下面來配置投遞Extract process進程。
2.2 配置投遞進程
在Source系統執行如下命令
GGSCI> ADD EXTRACT ZLE_02, EXTTRAILSOURCE ./dirdat/ra, BEGIN now
GGSCI> ADD RMTTRAIL ./dirdat/la, EXTRACT ZLE_02
*(./dirdat/la爲遠端接收目錄,必須存在)
GGSCI> edit params zle_02
添加內容如下:
extract ZLE_02
dynamicresolution
PASSTHRU
rmthost 192.168.8.2, mgrport 9001, compress
rmttrail ./dirdat/la
numfiles 3000
TABLE ZLHIS.TEST ;
GGSCI> start extract zle_02
Sending START request to MANAGER (‘mgr’) …
EXTRACT ZLE_02 starting
查看下狀態:
GGSCI> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING ZLE_01 00:00:00 00:00:05
EXTRACT RUNNING ZLE_02 00:00:00 00:00:07
2.3配置接收進程
在目標系統(Target system)上執行如下命令增加一個複製組(Replicat Group)
GGSCI > DBLOGIN USERID goldengate@orcl2, PASSWORD goldengate
GGSCI>add replicat ZLR_01, EXTTRAIL ./dirdat/la , nodbcheckpoint
注,我這個中配置Extract process那個示例對應的,所以這裏的exttrail文件名正好是Extract process中定義的RMTTRAIL ./dirdat/la這點需要大家注意.
GGSCI> edit param ZLR_01
增加如下內容並保存退出
REPLICAT ZLR_01
SETENV (ORACLE_SID=ORCL)
USERID goldengate@ORCL2, PASSWORD goldengate
HANDLECOLLISIONS
ASSUMETARGETDEFS
allownoopupdates
dynamicresolution
numfiles 3000
DISCARDFILE ./dirrpt/ ZLR_01.DSC,append,megabytes 10
map ZLHIS.TEST , target ZLHIS.TEST ;
在Target系統中,執行如下命令
GGSCI> start replicat ZLR_01
Verify the results:
GGSCI> info replicat ZLR_01
REPLICAT ZLR_01 Last Started 2010-01-19 13:50 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:03 ago)
Log Read Checkpoint File ./dirdat/la000000
First Record RBA 0
查看下狀態:
GGSCI> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING ZLR_01 00:00:00 00:00:09
測試效果
在源數據庫分別插入、修改、刪除一條數據。
查看抽取進程狀態:
GGSCI> stats ZLE_01
Sending STATS request to EXTRACT ZLE_01 …
Start of Statistics at 2010-01-26 02:53:01.
Output to ./dirdat/ra:
Extracting from ZLHIS.TEST to ZLHIS.TEST:
*** Total statistics since 2010-01-26 02:15:01 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Daily statistics since 2010-01-26 02:15:01 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Hourly statistics since 2010-01-26 02:15:01 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Latest statistics since 2010-01-26 02:15:01 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
End of Statistics.
可以看到已經有記錄,而且已經抽取成功,再查看投遞進程,
GGSCI> stats ZLE_02
Sending STATS request to EXTRACT ZLE_02 …
Start of Statistics at 2010-01-26 03:04:13.
Output to /u01/ggs/dirdat/re:
Extracting from ZLHIS.TEST to ZLHIS.TEST:
*** Total statistics since 2010-01-26 02:14:25 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Daily statistics since 2010-01-26 02:14:25 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Hourly statistics since 2010-01-26 03:00:00 ***
No database operations have been performed.
*** Latest statistics since 2010-01-26 02:14:25 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
End of Statistics.
切換到目標數據庫環境,同樣查看接受應用進程。
GGSCI > stats ZLR_01
Sending STATS request to REPLICAT ZLR_01 …
Start of Statistics at 2010-01-26 05:58:36.
Replicating from ZLHIS.TEST to ZLHIS.TEST:
*** Total statistics since 2010-01-26 04:46:57 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Daily statistics since 2010-01-26 04:46:57 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
*** Hourly statistics since 2010-01-26 05:00:00 ***
Total inserts 0.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 2.00
*** Latest statistics since 2010-01-26 04:46:57 ***
Total inserts 1.00
Total updates 1.00
Total deletes 1.00
Total discards 0.00
Total operations 3.00
End of Statistics.
總結:
以上只是記錄了對於GoldenGate軟件測試的一小部分,總體感覺GoldenGate同Oracle的流複製非常類似,但又有所不同,對比其各自的應用,各有有缺點:
優點:
1. 安裝、配置簡單。
2. 管理維護相對直觀,通過其自帶的Oracle Management Pack for Oracle GoldenGate管理工具,能夠對其進行圖形化界面的管理。
3. 支持異構複製,如不同用戶,不同數據庫平臺的複製,這也是其亮點所在。
4. 未來發展潛力還是很看好。
缺點:
1. 官方的軟件目前都只支持64位系統。其實有32位的
2.由於是第三方工具,對環境要求比較高,特別是在LINUX環境下,對操作系統的字符集有所要求,主要是我們系統中的表名都是中文,必須要其對中文的支持。
3.在進行應用進程的參數配置時候發現,對於特別多的表複製,暫時不清楚GoldenGate是否有限制,因爲啓動的時候,我配置參數對ZLHIS所有表進行復制的時候,會提示“”錯誤,但是如果只對少數表或者單個表複製的時候,又不出現該提示,這個問題正在覈實。
4. 目前網上能查詢到的資料相當有限,普及率不是很高。
綜上所述,GoldenGate同流複製比較起來的亮點還是在異構上,不過Oracle官方的說法是以後一流的Streams技術將被集成到GoldenGate中,這也是其發展的趨勢,其價值對於我們用戶的應用來說,還是很值得繼續深入研究。