oracle指定源位置怎么弄,ORACLE Goldengate测试解决源端和目标端表结构字段位置不同的2种实现方法...
測試環(huán)境:
源端操作系統(tǒng):rhel5.6
目標(biāo)端操作系統(tǒng):windows2008 R2
源和目標(biāo)使用的數(shù)據(jù)版本均為:11.2.0.4.0
一、先模擬問題現(xiàn)象
源和目標(biāo)端搭建好OGG軟件和oracle數(shù)據(jù)庫(搭建過程略)
源端測試用戶test
目標(biāo)端測試用戶test1
(1)首先源和目標(biāo)建表(源表和目標(biāo)表第二和第三字段交換順序):
源:create table test.test7(col1 int, col2 int, col3 int);
目標(biāo):create table test1.test7(col1 int, col3 int, col2 int);
(2)源和目標(biāo)端啟動OGG進(jìn)程,在源端插入記錄
insert into test.test7 values(1,2,3);
commit;
對比數(shù)據(jù)發(fā)現(xiàn),OGG默認(rèn)同步表是按照列的順序來的,而不是按照列名來對應(yīng)。
二、這個問題要解決有兩種辦法:
1、使用COLMAP方法指定列,這個方法可以在目標(biāo)端的replicat進(jìn)程上配置
本例中目標(biāo)端的replicat進(jìn)程名稱為:rep1
edit param rep1?? --修改目標(biāo)端rep1進(jìn)程
replicat rep1
--setenv (NLS_LANG = 'SIMPLIFIED CHINESE_CHINA.AL32UTF8')
--setenv (NLS_LANG = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK')
--setenv (NLS_LANG = 'SIMPLIFIED AMERICAN_AMERICA.ZHS16GBK')
setenv (ORACLE_SID = ORCL)
USERIDAlias wallettest
--userid goldengate, password goldengate
reperror default,abend
--DDL include mapped
--ddloptions report
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
discardfile c:\ogg\dirrpt\rep1.dsc,append, megabytes 100
WILDCARDRESOLVE DYNAMIC
assumetargetdefs
dynamicresolution
--修改這里的map參數(shù),添加colmap指定列的對應(yīng)規(guī)則
map test.test7, target test1.test7, colmap(usedefaults, col2=col3, col3=col2);
--map test.test7, target test1.test7;
重啟目標(biāo)端rep1進(jìn)程,在源端測試插入數(shù)據(jù),發(fā)現(xiàn)列對應(yīng)關(guān)系正常。
2、該問題還可以使用另一種方法實現(xiàn),通過生成定義文件來實現(xiàn)
1)先在OGG命令行下生成defgen配置參數(shù)
ggsci>edit param defgen
DEFSFILE /home/oracle/ogg/dirdef/test.def
USERID goldengate, PASSWORD goldengate
TABLE test.test7;
2)退出OGG命令行,在OGG軟件根目錄生成defgen.prm定義文件。
./defgen paramfile dirprm/defgen.prm
查看定義文件,會發(fā)現(xiàn)相關(guān)表結(jié)構(gòu)信息,將該文件傳遞到目標(biāo)端的c:/ogg/dirdef目錄下
3)修改目標(biāo)端rep1進(jìn)程參數(shù)
replicat rep1
--setenv (NLS_LANG = 'SIMPLIFIED CHINESE_CHINA.AL32UTF8')
--setenv (NLS_LANG = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK')
--setenv (NLS_LANG = 'SIMPLIFIED AMERICAN_AMERICA.ZHS16GBK')
setenv (ORACLE_SID = ORCL)
USERIDAlias wallettest
--userid goldengate, password goldengate
reperror default,abend
--DDL include mapped
--ddloptions report
--DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5
discardfile c:\ogg\dirrpt\rep1.dsc,append, megabytes 100
WILDCARDRESOLVE DYNAMIC
--這里注釋assumetargetdefs參數(shù),添加SOURCEDEFS參數(shù)
--assumetargetdefs
SOURCEDEFS c:\ogg\dirdef\test.def
dynamicresolution
--map test.test7, target test1.test7, colmap(usedefaults, col2=col3, col3=col2);
--將map參數(shù)復(fù)原
map test.test7, target test1.test7;
4)重啟目標(biāo)端rep1進(jìn)程,然后在源端插入測試數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)同步正常。
總結(jié)
以上是生活随笔為你收集整理的oracle指定源位置怎么弄,ORACLE Goldengate测试解决源端和目标端表结构字段位置不同的2种实现方法...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 楚留香安卓ios能一起么(汉典楚字的基本
- 下一篇: NEXON 游戏《VEILED EXPE