Oracle GoldenGate學習總結
一、Oracle GoldenGate工作原理:
http://wenku.baidu.com/view/0768726f561252d380eb6e82.html
網上有,不再描述,具體參考:
http://wenku.baidu.com/view/59d54ee80975f46527d3e140.html
Oracle GoldenGate產品的相關下載地址:
http://edelivery.oracle.com
http://www.oracle.com/technetwork/cn/testcontent/index-100295-zhs.html
GoldenGate幾個重要進程介紹:
1、Manager管理進程在兩端開啟,監控和重啟其他進程;分配數據存儲和報告錯誤及事件;
2、Extract進程從日志中抓取并傳輸到target端事務數據;
3、Server Collector進程在target(接受)端接受數據并寫入trail文件;
4、Replicat進程讀取trail文件,并應用到traget數據庫;
5、trail文件時gg自己抓捕信息的文件,是一個OS文件,存放在./dirdat/下,以X00000命名,N順序1,2,3…此文件用完可配置參數自動刪除。
二、Oracle GoldenGate配置:
1、同一臺計算上,部署兩個Orcle數據庫,yglis源數據庫,ygtest目標數據庫。分部建立兩個GG環境:
2、將下載的GoldenGate解壓重新命名,建立兩個gg環境的如下:
注:解壓后的文件夾名稱不能為Oracle GoldenGate會存在沖突。
源數據配置GG路徑:
D:\gg\ggs_yglis
目標數據配置GG路徑:
D:\gg\ggs2_ygtest
3、配置OrateGoldenGate
>Cd D:\gg\ggs_yglis
>ggsci
>create subdirs
>exit
>D:\gg\ggs2_ygtest
>ggsci
>create subdirs
>exit
4、查看源數據庫是否開啟最小附加日志模式,進入到源數據庫的SQL命令模式:
Sql> select supplemental_log_data_min from v$database;
若查詢結果為N,執行下述命令:
Sql> alter database add supplemental log data;
Sql> alter system switch log file;
Sql> exit;
5、配置源數據庫的GoldenGate參數:
注:配置相關數據前,請先建立測試表。
gg> ggsci
gg> edit params ./GLOBALS
在彈出的文件中寫入
MGRSERVNAME mgrtest1
gg> exit;
6、接著配置windows源數據庫進程
> install addservice addevents
配置成功后再次進入到源數據庫的ggsic
gg> ggsic
gg> edit params mgr
在彈出的文件中輸入
Port 7809
7、配置一個Extract進程:
gg> edit param eiextt
在彈出的文件中輸入
--注釋,第一行是Extract的名稱
--第二三行處理的是中文亂碼問題
--第四是要導出的數據庫連接
--第五行是導入的trail文件路徑
--第六行之后,需要出的表
EXTRACT EIEXTT
setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
getenv (NLS_LANG)
USERID yglis@ygcms, PASSWORD yglis
EXTTRAIL ./dirdat/tt
TABLE yglis.ldcode123;
TABLE yglis.ldcom;
上述文件建立后,需增加Extract進程
gg> add extract eiextt,tranlog,begin now
gg> add exttrail ./dirdat/tt,extract eiextt, megabytes 5
8、在源數據庫端增加一個PUMP進程
gg> edit params epmptt
在彈出的文件中輸入:
EXTRACT EPMPTT
PASSTHRU
setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
getenv (NLS_LANG)
RMTHOST localhost,MGRPORT 7841
RMTTRAIL ./dirdat/tt
TABLE yglis.ldcode123;
TABLE yglis.ldcom;
上述文件建立后,增加pump進程
gg> add extract epmptt,exttrailsource ./dirdat/tt
gg> add rmttrail ./dirdat/tt,extract epmptt,megabytes 5
所有上述配置完成后,源數據庫端配置完成,檢查進程可使用
gg> info all
啟動進程
gg> start mgr
gg> start *
9、配置目標數據庫端的GoldenGate相關:
配置manager進程與源數據段一致
gg> edit params ./GLOBALS
彈出文件寫入
MGRSERVNAME mgrtarget
CHECKPOINTTABLE ygtest.ggschkpt
在退出exit中輸入install addservice addevents
再進入到ggsci模式
gg> edit params mgr
在彈出的文本框中寫入
Port 7841
gg> add checkpointtable ygtest.ggschkpt
gg> dblogin userid ygtest,password ygtest
gg> add replicat poratt,exttrail ./dirdat/tt,checkpointtable ygtest.ggschkpt
配置replicat進程(接受進程)
gg> edit param poratt
在彈出的文本框中寫入
replicat poratt
setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
getenv (NLS_LANG)
userid ygtest@ygtest, password ygtest
assumetargetdefs
reperror default, discard
discardfile ./dirrpt/poratt.dsc, purge
map yglis.ldcode123, target ygtest.ldcode123;
map yglis.ldcom, target ygtest.ldcom;
完成上述操作后,檢查進程:
gg> info all
gg> start mgr
gg> start *
10、當源、目標端的GG都配置完成,并且所有的進程都RUNNING狀態,說明配置成功,即可驗證
源數據庫端配置
目標端配置
附加新建的表和測試數據:
附加所有進程文件:
源端進程配置文件
目標端進程配置文件
三、DDL表結構同步情況:
DDL配置可以不用與DML配置同時進行,可以單獨進行,沒有關聯必要性,參考網址:
http://www.xtopace.com/database/oracle-goldengate-ddl-synchronization-configuration.html
1、進入到GoldenGate安裝路徑后,使用dba權限連接數據庫,查看相關配置是否OK
確認數據庫歸檔模式:
RECYCLEBIN是否關閉---10G以上版本為了支持DDL復制建議關閉RECYCLEBIN
SQL> show parameter recyclebin;
SQL> alter system set recyclebin=off;
設置完成后,重啟數據庫服務,并重新進入GoldenGate安裝路徑,使用SYSDBA用戶登錄并執行下述SQL
SQL> @marker_setup.sql
SQL> @ddl_setup.sql
SQL> @role_setup.sql
SQL> GRANT GGS_GGSUSER_ROLE to [用戶名];
SQL> @ddl_enable.sql
SQL> @marker_status.sql
SQL> exit
2、修改上述二中配置的DML進程eiextt和poratt進程,分部增加DDL復制同步的配置語句,具體截圖如下:
修改eiextt和poratt進程前先配置管理進程,增加GGSCHEMA用戶如下
以下Eiextt和Poratt進程配置新增DDL相關。
3、上述所有配置完成后,重啟manager服務,并開啟所有進程,測試修改表結構
alter table ldcode123 add(test varchar(20));
4、檢查另一個環境的表是否同步修改。
四、遺留問題:
1、目前使用GG在兩個庫之間的同步發現,同步數據中有中文,則出現亂碼,還未解決!
中文亂碼問題解決,在配置的Extract和Replicat進程中增加配置語句:
setenv (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
getenv (NLS_LANG)
2、另對于同步進程進行修改的時候,是否需要終止進程?若終止進程,則如何保證數據同步的實時及準確性?
3、雙向實時復制同一個表的數據,是否會存在問題?
此問題已經解決,配置方法同Oracle GoldenGate步驟,反向配置源目端的進程,可以實現DML雙向數據同步,但不能解決DDL雙向數據同步。
附加文件:
YGLIS源端配置文件:
YGTEST目標端配置文件:
五、如何卸載Oracle GoldenGate產品:
如果想卸載源數據庫或目標數據庫不在使用Oracle GoldenGate產品了,且需從當前的windows系統的任務服務中刪除,執行操作步驟:
1、進入源或目標GG配置目錄,輸入以下命令:
gg> stop *
gg> stop mgr
2、刪除Oracle GoldenGate安裝路徑
3、運行windows命令,執行sc delete [服務名]
六、Oracle GoldenGate命令參數詳解:
參考官方文檔