GoldenGate的Sequence同步DLL及其相關問題

coolhe發表於2015-01-30
應客戶要求,在進行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和同步無問題。




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3090/viewspace-1420831/,如需轉載,請註明出處,否則將追究法律責任。

相關文章