应客户要求,在进行Goldengate测试功能的时候,其中有个sequence测试dll的同步复制没有成功,后来找到相关资料,最终搞定,记之以共享。
====环境==========
oracle : 10.2.0.5 64bit
linux: redhat 5.8 64bit
ogg: 11.2.1.0.1
===============
源端: exta(抽取), dpea(推送);
目标: repa(复制)
====exta
-
EXTRACT exta
-
setenv(ORACLE_SID=ORCL1)
-
setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
-
--report at 01:59
-
--reportrollover 02:00
-
-
-
--USERID ggsadmin PASSWORD ggsadmin
-
userid ggsadmin, password AACAAAAAAAAAAAIACCKISHFGOHRAMJWG,ENCRYPTKEY default
-
TRANLOGOPTIONS EXCLUDEUSER ggsadmin
-
EXTTRAIL /home/oracle/ogg/dirdat/rt
-
discardfile /home/oracle/ogg/dirrpt/exta.dsc, append, megabytes 50M
-
-
-
--DDL INCLUDE OBJNAME \"scott.*\"
-
--DDL INCLUDE OBJTYPE \"SEQUENCE\"
-
--DDL INCLUDE MAPPED
-
DDL INCLUDE ALL
-
DDLOPTIONS ADDTRANDATA, report, nocrossrename
-
Gettruncates
-
-
--FETCHOPTIONS, NOUSESNAPSHOT
-
FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT
-
STATOPTIONS REPORTFETCH
-
WARNLONGTRANS 1H, CHECKINTERVAL 5M
-
-
dynamicresolution
-
-
table scott.*;
-
sequence scott.*;
====dpea
点击(此处)折叠或打开
-
extract dpea
-
passthru
-
numfiles 5000
-
rmthost 192.168.52.135, mgrport 7809, compress
-
rmttrail /home/oracle/ogg/dirdat/rt
-
dynamicresolution
-
CMDTRACE DETAIL
-
-
table scott.*;
-
sequence scott.*;
====repa
-
REPLICAT repa
-
setenv(ORACLE_SID=ORCL2)
-
setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
-
--userid ggsadmin, password ggsadmin
-
userid ggsadmin, password AACAAAAAAAAAAAIACCKISHFGOHRAMJWG, ENCRYPTKEY default
-
HANDLECOLLISIONS
-
assumetargetdefs
-
reperror default, discard
-
discardfile ./dirrpt/repwp.dsc, append, megabytes 150M
-
dynamicresolution
-
-
--report options
-
reportCount every 30 minutes, rate
-
report at 01:00
-
reportRollover at 01:15
-
-
--ddl options
-
--DDL INCLUDE MAPPED
-
DDL INCLUDE ALL
-
DDLOPTIONS REPORT
-
BATCHSQL
-
DBOPTIONS DEFERREFCONST
-
DBOPTIONS LOBWRITESIZE 102400
-
DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
-
-
CMDTRACE DETAIL ;
-
-
map scott.*, target scott.*;
1) 如果要启动DDL, 需要在源端的数据库执行maker_setup.sql, ddl_setup.sql, role_setup.sql,ddl_enable.sql
2) 并把权限付给glodengate的数据库管理用户,比如:gger或者ggsadmin, 或者ogg之类的,反正是自己定义的gg管理用户。
具体sql:GRANT GGS_GGSUSER_ROLE, RESOURCE, DBA, CONNECT
to ggsadmin.
3)以上执行无问题之后,如果sequence在源端创建、alter目标端没有同步,查看是否在源端exta和目标端没有ddl include all,而是ddl include mapped(见上面脚本红色字体),本主在测试时就是这个问题不能同步sequence,修改之后,通畅无比:)
4)sequence的DDL同步正常后,通常测试sequence的同步情况,如果目标和源不能同步sequence的值,请检查如下:
4.1 在目标和源数据库端执行sequence.sql
4.2 在源端的exta和dpea中增加sequence的抽取命令
4.3 在目标端select test_seq.nextval from dual; n>5次, 检查目标端是否变化,根据自己的实测有延迟。比如在源端执行了5次,源端的currval是4, 目标端select test_seq.currval from dual应该是5,结果会有不同,可以查询user_sequence视图,查看LAST_NUMBER即可。
4.4 如果两端不一致,则需要创建sequence的时候不要cache,如:
create sequence test_seq start with 0 increment by 1 minvalue 0 nocache;
根据以上情况,sequence的ddl和同步无问题。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3090/viewspace-1420831/
,如需转载,请注明出处,否则将追究法律责任。