Home >Database >Mysql Tutorial >GoldenGate更新丢失问题

GoldenGate更新丢失问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 16:00:351129browse

在GoldenGate(11.2.1.0.1 for 10g)的目标库上发现一个很有趣但又很扰人的问题。事情是这样的,有用户反映说在目标库上的一张表上

最近,在GoldenGate(11.2.1.0.1 for 10g)的目标库上发现一个很有趣但又很扰人的问题。事情是这样的,有用户反映说在目标库上的一张表上有两个字段(DZFAILFLAG,REMARK)的值与源库的不一致。

检查了一下源库与目标库的GoldenGate进程,两边都运行的很好,也没有报任何错误。查看了一下源库和目标库上那张表的记录数,两边的记录数是一样的,但确实有些记录的值是不一致的!而且当源库的记录数增加时,目标库的记录数也跟着相应增加:

源库:
11:17:37 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980489
11:18:07 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980490
11:18:43 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980493
11:19:44 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980498
目标库:
11:17:43 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980490
11:18:53 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980493
11:19:38 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
COUNT(*)
----------
980498

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

2013/08/20 12:50:55.000.000 FieldComp Len 48 RBA 17500895
Name: LISDATA.LDCONTINVOICEMAP
After Image: Partition 4 G s
0000 0010 0000 000c 3330 3030 3030 3030 3130 3335 | ........300000001035
0001 0005 0000 0001 3100 0200 0f00 0000 0b38 3330 | ........1........830
3130 3030 3030 3032 | 10000002
Column 0 (x0000), Len 16 (x0010)
Column 1 (x0001), Len 5 (x0005)
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先停掉。

本文永久更新链接地址

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn