首页 > 其他 > 详细

GoldenGate更新丢失问题

时间:2015-05-14 02:15:54      阅读:305      评论:0      收藏:0      [点我收藏+]
最近,在GoldenGate(11.2.1.0.1 for 10g)的目标库上发现一个很有趣但又很扰人的问题。事情是这样的,有用户反映说在目标库上的一张表上有两个字段(DZFAILFLAG,REMARK)的值与源库的不一致。
检查了一下源库与目标库的GoldenGate进程,两边都运行的很好,也没有报任何错误。查看了一下源库和目标库上那张表的记录数,两边的记录数是一样的,但确实有些记录的值是不一致的!而且当源库的记录数增加时,目标库的记录数也跟着相应增加:


点击(此处)折叠或打开

  1. 源库:
  2. 11:17:37 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  3.  
  4.   COUNT(*)
  5. ----------
  6.     980489
  7.  
  8. 11:18:07 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  9.  
  10.   COUNT(*)
  11. ----------
  12. 980490
  13.  
  14. 11:18:43 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  15.  
  16.   COUNT(*)
  17. ----------
  18. 980493
  19.  
  20. 11:19:44 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  21.  
  22.   COUNT(*)
  23. ----------
  24.     980498


  25. 目标库:
  26. 11:17:43 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  27.  
  28.   COUNT(*)
  29. ----------
  30. 980490
  31.  
  32. 11:18:53 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  33.  
  34.   COUNT(*)
  35. ----------
  36. 980493
  37.  
  38. 11:19:38 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
  39.  
  40.   COUNT(*)
  41. ----------
  42.     980498

也就是说复制进程是在工作的,而且工作的很正常!尝试对源库上的某条记录的DZFAILFLAG,REMARK进行更新,结果很让人失望,在目标库的这两个字段的值死活都不更新!考虑到这张表的记录还不算多,于是就对这张表重新进行了初始化。经过一番折腾,表终于重新初始化完成了,满怀着希望重新尝试对源库上的字段进行更新,结果让人抓狂,还是不更新!没办法,只能去分析一下trail文件,看看到底发生了什么事,用logdump打开相应的trail文件,定位到相应的位置:

点击(此处)折叠或打开

  1. 2013/08/20 12:50:55.000.000 FieldComp Len 48 RBA 17500895
  2. Name: LISDATA.LDCONTINVOICEMAP
  3. After Image: Partition 4 G s
  4. 0000 0010 0000 000c 3330 3030 3030 3030 3130 3335 | ........300000001035
  5. 0001 0005 0000 0001 3100 0200 0f00 0000 0b38 3330 | ........1........830
  6. 3130 3030 3030 3032 | 10000002
  7. Column 0 (x0000), Len 16 (x0010)
  8. Column 1 (x0001), Len 5 (x0005)
  9. Column 2 (x0002), Len 15 (x000f)
从trail的记录里可以看到,EXTRACT只抓取到了主键列(列0,1,2是这张表的主键),而要更新的那两列没有抓取到!试着重启了一下EXTRACT进程,结果更新就一切正常了!
了解到字段DZFAILFLAG,REMARK是前两天刚刚新增加的,而更新丢失恰恰就发生在这两个新增字段上。也就是说当对表增加新字段,如果不重启EXTRACT进程,就无法抓取到新的字段信息!这样的话,那如果使用GoldenGate的DDL复制功能,即使DDL复制工作正常,是不是应该也会碰到这样的问题?那GoldenGate的DDL的复制功能岂不成了摆设?已经开了SR给ORACLE,不知道是不是GoldenGate的BUG。在这之前,各位在做DDL前,还是先把EXTRACT先停掉。

GoldenGate更新丢失问题

原文:http://blog.itpub.net/13885898/viewspace-1651405/

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!