ITPub博客

首页 > 数据库 > Oracle > 【原创】goldengate 目的端rep复制进程 遇到ora-00001 异常终止abend的血案

【原创】goldengate 目的端rep复制进程 遇到ora-00001 异常终止abend的血案

原创 Oracle 作者:msdnchina 时间:2012-01-09 13:18:49 0 删除 编辑
环境介绍:
goldengate 目的端rep复制进程 遇到ora-00001 异常终止abend的血案



源头oracle,1个extract进程,该的进程参数文件配置的是user.*

源头oracle,2个进datapump进程(这是往2个不同目的端上的dp进程),第一个dp进程的参数文件配user.*
第二个进程(以下简称dpww进程)的参数文件配置的是
user.a;
user.b;
user.c;
user.d;

,也就是说,dpww进程是完成了部分表传输到目的地的trail文件中。



目的端repww进程abended,看discard文件,如下所示:


Current time: 2012-01-07 09:10:58
Discarded record from action ABEND on error 1

OCI Error ORA-00001: unique constraint (CIMS.PK_GT_JYZ_ZS) violated (status = 1), SQL
Aborting transaction on /u02/ggs/dirdat/ww beginning at seqno 0 rba 111386
error at seqno 0 rba 114763
Problem replicating CIMS.GT_JYZ_ZS to CIMS.GT_JYZ_ZS
Mapping problem with insert record (target format)...


违反唯一约束,第一反应肯定是目的端此表中存在相同的记录,去目的端查询此表,where条件是报错中的列和列值,查询结果是空记录。


邪门了。。


于是提交sr,一级sr,老外接手处理,下班了,澳大利亚的华人接手处理,折腾一圈,没搞定。

于是n天过去了。

于是我又重新部署goldengate,部署完毕后,业务启动,repww进程还是报错,报错提示跟以上错误一样。

logdump工具上阵:

logdump> open ./dirdat/ww000000
logdump> ghdr on
logdump> detail on
logdump> detail data

logdump> pos 111386
logdump> n

发现如下信息:

2012/01/07 08:59:29.337.624 Insert Len 360 RBA 114310
Name: CIMS.GT_JYZ_ZS
After Image: Partition 4 G m
0000 0013 0000 000f 3337 3032 3834 3630 3036 3635 | ........370284600665
3934 3000 0100 0a00 0000 06b3 c2c8 f0b2 d300 0200 | 940.................
1500 0031 3937 362d 3038 2d31 373a 3038 3a34 333a | ...1976-08-17:08:43:
3039 0003 0003 0000 3100 0400 0400 0030 3100 0500 | 09......1......01...
0f00 0000 0b31 3339 3634 3231 3039 3837 0006 0004 | .....13964210987....
ffff 0000 0007 0003 0000 3100 0800 04ff ff00 0000 | ..........1.........
0900 0400 0031 2000 0a00 1600 0000 1233 3730 3230 | .....1 ........37020




2012/01/07 08:59:29.337.624 Insert Len 360 RBA 114763
Name: CIMS.GT_JYZ_ZS
After Image: Partition 4 G m
0000 0013 0000 000f 3337 3032 3834 3630 3036 3635 | ........370284600665
3934 3000 0100 0a00 0000 06b3 c2c8 f0b2 d300 0200 | 940.................
1500 0031 3937 362d 3038 2d31 373a 3038 3a34 333a | ...1976-08-17:08:43:
3039 0003 0003 0000 3100 0400 0400 0030 3100 0500 | 09......1......01...
0f00 0000 0b31 3339 3634 3231 3039 3837 0006 0004 | .....13964210987....
ffff 0000 0007 0003 0000 3100 0800 04ff ff00 0000 | ..........1.........
0900 0400 0031 2000 0a00 1600 0000 1233 3730 3230 | .....1 ........37020

注意,以上两段只是rba不同,一个是RBA 114310 另一个是 RBA 114763,都是往同一个表中的insert into操作。

看到这里,我感觉到纳闷,怎么可能在目的端trail文件写2遍相同的操作呢?

莫非是dpww进程的参数文件把GT_JYZ_ZS这个表多配置了一次?

于是打开源端的dpww进程的参数文件,搜了一下,果然,CIMS.GT_JYZ_ZS出现了2次。

那么还有没有可能其他的表名出现了重复(一共138张表)?
于是,装上pb,在我自己的数据库中建了个table,将这138张表用excel另存为"制表符分割的txt"文件,
用pb的row-import菜单,将这138个表名导入了表中,
使用sql查询:
select tablename,count(*) from xxxx group by tablename having count(*)>1
结果只反馈这一行:GT_JYZ_ZS

于是确认,只有这一行有问题。删除掉重复的一行GT_JYZ_ZS,重启dpww进程即可。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/161195/viewspace-1057064/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-30

  • 博文量
    498
  • 访问量
    1470167