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