GoldenGate的Sequence同步DLL及其相关问题

在进行Goldengate测试功能的时候,其中有个sequence测试dll的同步复制没有成功,后来找到相关资料,最终搞定,记之以共享。
====环境==========

oracle : 10.2.0.5 64bit
linux:    redhat 5.8 64bit
ogg:    11.2.1.0.1
===============
源端:   exta(抽取), dpea(推送);
目标:  repa(复制)
====exta

点击(此处)折叠或打开

  1. EXTRACT exta
  2. setenv(ORACLE_SID=ORCL1)
  3. setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
  4. --report at 01:59
  5. --reportrollover 02:00
  6. --USERID ggsadmin PASSWORD ggsadmin
  7. userid ggsadmin, password AACAAAAAAAAAAAIACCKISHFGOHRAMJWG,ENCRYPTKEY default
  8. TRANLOGOPTIONS EXCLUDEUSER ggsadmin
  9. EXTTRAIL /home/oracle/ogg/dirdat/rt
  10. discardfile /home/oracle/ogg/dirrpt/exta.dsc, append, megabytes 50M
  11. --DDL INCLUDE OBJNAME \"scott.*\"
  12. --DDL INCLUDE OBJTYPE \"SEQUENCE\"
  13. --DDL INCLUDE MAPPED
  14. DDL INCLUDE ALL
  15. DDLOPTIONS ADDTRANDATA, report, nocrossrename
  16. Gettruncates
  17. --FETCHOPTIONS, NOUSESNAPSHOT
  18. FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT
  19. STATOPTIONS REPORTFETCH
  20. WARNLONGTRANS 1H, CHECKINTERVAL 5M
  21. dynamicresolution
  22. table scott.*;
  23. sequence scott.*;
====dpea
点击( 此处 )折叠或打开
  1. extract dpea
  2. passthru
  3. numfiles 5000
  4. rmthost 192.168.52.135, mgrport 7809, compress
  5. rmttrail /home/oracle/ogg/dirdat/rt
  6. dynamicresolution
  7. CMDTRACE DETAIL
  8. table scott.*;
  9. sequence scott.*;
====repa

点击(此处)折叠或打开

  1. REPLICAT repa
  2. setenv(ORACLE_SID=ORCL2)
  3. setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
  4. --userid ggsadmin, password ggsadmin
  5. userid ggsadmin, password AACAAAAAAAAAAAIACCKISHFGOHRAMJWG, ENCRYPTKEY default
  6. HANDLECOLLISIONS
  7. assumetargetdefs
  8. reperror default, discard
  9. discardfile ./dirrpt/repwp.dsc, append, megabytes 150M
  10. dynamicresolution
  11. --report options
  12. reportCount every 30 minutes, rate
  13. report at 01:00
  14. reportRollover at 01:15
  15. --ddl options
  16. --DDL INCLUDE MAPPED
  17. DDL INCLUDE ALL
  18. DDLOPTIONS REPORT
  19. BATCHSQL
  20. DBOPTIONS DEFERREFCONST
  21. DBOPTIONS LOBWRITESIZE 102400
  22. DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
  23. CMDTRACE DETAIL ;
  24. 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和同步无问题。

猜你喜欢

转载自blog.csdn.net/dongxinhjj/article/details/80915901
今日推荐