oracle 高级复制提示ora-01403,goldengate 复制进程replicat出现ORA-01403 错误

最近,在goldengate的应用场景中,replicat进程经常出现append,start也启动不起来,查看日志,发现出现ora-01403错误,日志内容如下:

2012-09-27 19:06:39  INFO    OGG-00996  Oracle GoldenGate DeliveryforOracle, C_R_C6.prm:  REPLICAT C_R_C6 started.

2012-09-27 19:06:40  WARNING OGG-01004  Oracle GoldenGate Delivery forOracle, C_R_C6.prm:  Aborted groupedtransactionon'***.TB_COMMON_CUSTEMPRELATION',Databaseerror 1403 (OCI Error ORA-01403:nodata found, SQL ).

2012-09-27 19:06:40  WARNING OGG-01003  Oracle GoldenGate Delivery forOracle, C_R_C6.prm:  Repositioningtorba 1829839inseqno 19.

2012-09-27 19:06:40  WARNING OGG-01154  Oracle GoldenGate Delivery forOracle, C_R_C6.prm:  SQL error 1403 mapping ***.TB_COMMON_CUSTEMPRELATIONto***.TB_COMMON_CUSTEMPRELATION OCI Error ORA-01403:nodata found, SQL .

2012-09-27 19:06:40  WARNING OGG-01003  Oracle GoldenGate Delivery forOracle, C_R_C6.prm:  Repositioningtorba 1829839inseqno 19.

2012-09-27 19:06:41  ERROR   OGG-01296  Oracle GoldenGate Delivery forOracle, C_R_C6.prm:  Error mappingfrom***.TB_COMMON_CUSTEMPRELATIONto***.TB_COMMON_CUSTEMPRELATION.

2012-09-27 19:06:41  ERROR   OGG-01668  Oracle GoldenGate Delivery forOracle, C_R_C6.prm:  PROCESS ABENDING.

从日志中分析,发现关键信息处为:

Database error 1403 (OCI Error ORA-01403: no data found, SQL )

于是使用logdump来分析,分析过程如下:

GGSCI (WIN-O6ODS01HLMM) 119> info c_r_c6

REPLICAT   C_R_C6    LastStarted 2012-09-27 10:29   Status ABENDED

CheckpointLag       00:00:00 (updated 01:53:55 ago)

Log ReadCheckpointFile ./dirdat/cm000019

2012-09-27 04:00:47.720000  RBA 1771589

然后用logdump查看:

Logdump 48 >open./dirdat/cm000019

LogTrail ***dirdat\cm000015 closed

CurrentLogTrailis***\dirdat\cm000019

Logdump 49 >pos 1771589

Reading forwardfromRBA 1771589

Logdump 50 >n

2012/09/27 08:36:10.858.000 FieldComp            Len   194 RBA 1776078

Name: ***.TB_COMMON_CUSTEMPRELATION

AfterImage:                                             Partition 4   G  m

0000 000d 0000 0009 3937 3035 3130 3030 3100 0100 | ........970510001...

0c00 0000 0833 3039 3130 3030 3600 0200 1500 0032 | .....30910006......2

3031 322d 3038 2d32 383a 3130 3a33 303a 3037 0003 | 012-08-28:10:30:07..

0015 0000 3230 3132 2d30 392d 3237 3a30 383a 3336 | ....2012-09-27:08:36

3a30 3900 0400 0700 0000 0346 5741 0005 000a 0000 | :09........FWA......

0000 0000 0000 0000 0006 000a 0000 0000 0000 0000 | ....................

0000 0007 0004 ffff 0000 0008 000f 0000 000b 4457 | ..................DW

Column0 (x0000), Len    13 (x000d)

0000 0009 3937 3035 3130 3030 31                  | ....970510001

Column1 (x0001), Len    12 (x000c)

0000 0008 3330 3931 3030 3036                     | ....30910006

Column2 (x0002), Len    21 (x0015)

0000 3230 3132 2d30 382d 3238 3a31 303a 3330 3a30 | ..2012-08-28:10:30:0

37                                                | 7

Column3 (x0003), Len    21 (x0015)

0000 3230 3132 2d30 392d 3237 3a30 383a 3336 3a30 | ..2012-09-27:08:36:0

39                                                | 9

Column4 (x0004), Len     7 (x0007)

0000 0003 4657 41                                 | ....FWA

Column5 (x0005), Len    10 (x000a)

0000 0000 0000 0000 0000                          | ..........

Column6 (x0006), Len    10 (x000a)

0000 0000 0000 0000 0000                          | ..........

Column7 (x0007), Len     4 (x0004)

ffff 0000                                         | ....

Column8 (x0008), Len    15 (x000f)

0000 000b 4457 4930 3030 3531 3138 37             | ....DWI00051187

Column9 (x0009), Len     8 (x0008)

0000 0004 4253 3036                               | ....BS06

Column10 (x000a), Len    15 (x000f)

0000 000b 5a49 5930 3030 3031 3836 36             | ....ZIY00001866

Column11 (x000b), Len    10 (x000a)

0000 0000 0000 0000 0002                          | ..........

Logdump 67 >

从上面的信息看,发现记录update操作时数据 信息不全,有的列没有值(这种情况要关注更新主键时goldengate的处理,此文暂不讨论),接着在target端查看要update的这条记录,发现没有(这情况是target端缺失update数据),再看replicat配置文件 信息:

REPLICAT c_r_c6

SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")

GETENV (NLS_LANG)

USERID ************

--HANDLECOLLISIONS

ASSUMETARGETDEFS

--DDLERROR DEFAULT IGNORE RETRYOP

--REPERROR DEFAULT, DISCARD

MAP ***.TB_COMMON_CUSTEMPRELATION ,TARGET ***.TB_COMMON_CUSTEMPRELATION , keycols (BRANCHID, CUSTID, BUSINESTYPECODE, STAFFID);

handcollisions被 注释了,也就是说当target端缺失delete 、update数据时,target端无法自动处理。

解决:

停止replicat进程,先将要同步的表tb_common_custemprelation给跳过,然后将在目标端上重新初始化此表,保证源和目标上此表的数据是一致,然后再在replicat进程中将tb_commmon_custemprelation加进去,然后启动进程。

总结:此案例中是源目标端表中数据不一致导致的。

但是在goldengate应用场景中出现ORA-01403的原因有3个:

1) 如果是表字段不一致,需要修改表字段,异构数据库还需要重新生成表结构定义文件,再重启进程。

2) 如果是索引不一致,需要重建索引,异构数据库还需要重新生成表结构定义文件,再重启进程。

3) 遇到这种情况,不能先去对比两端的表结构(可能修改表结构的sql在后面执行),而应该先去查明原因。若是数据问题,可以跳过该表的同步,然后重新同步该表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值