(转)goldengate 复制进程replicat出现ORA-01403 错误

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

 

  1. 2012-09-27 19:06:39  INFO    OGG-00996  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  REPLICAT C_R_C6 started. 
  2. 2012-09-27 19:06:40  WARNING OGG-01004  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  Aborted grouped transaction on '***.TB_COMMON_CUSTEMPRELATION', Database error 1403 (OCI Error ORA-01403: no data found, SQL <UPDATE "***"."TB_COMMON_CUSTEMPRELATION" SET "PK" = :a0,"FK" = :a1,"CREATETIME" = :a2,"LASTMODIFYTIME" = :a3,"LINEID" = :a5,"DELETEFLAG" = :a6,"NOTE" = :a7,"VERSION" = :a11 WHERE "BRANCHID" = :b0 AND "CUSTID" = :b1 AND "BUSINESTYPECODE" = :b2 AND "STAFFID" = :b3>). 
  3. 2012-09-27 19:06:40  WARNING OGG-01003  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  Repositioning to rba 1829839 in seqno 19. 
  4. 2012-09-27 19:06:40  WARNING OGG-01154  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  SQL error 1403 mapping ***.TB_COMMON_CUSTEMPRELATION to ***.TB_COMMON_CUSTEMPRELATION OCI Error ORA-01403: no data found, SQL <UPDATE "***"."TB_COMMON_CUSTEMPRELATION" SET "PK" = :a0,"FK" = :a1,"CREATETIME" = :a2,"LASTMODIFYTIME" = :a3,"LINEID" = :a5,"DELETEFLAG" = :a6,"NOTE" = :a7,"VERSION" = :a11 WHERE "BRANCHID" = :b0 AND "CUSTID" = :b1 AND "BUSINESTYPECODE" = :b2 AND "STAFFID" = :b3>. 
  5. 2012-09-27 19:06:40  WARNING OGG-01003  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  Repositioning to rba 1829839 in seqno 19. 
  6. 2012-09-27 19:06:41  ERROR   OGG-01296  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  Error mapping from ***.TB_COMMON_CUSTEMPRELATION to ***.TB_COMMON_CUSTEMPRELATION. 
  7. 2012-09-27 19:06:41  ERROR   OGG-01668  Oracle GoldenGate Delivery for Oracle, C_R_C6.prm:  PROCESS ABENDING. 

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

Database error 1403 (OCI Error ORA-01403: no data found, SQL <UPDATE "***"."TB_COMMON_CUSTEMPRELATION" SET "PK" = :a0,"FK" = :a1,"CREATETIME" = :a2,"LASTMODIFYTIME" = :a3,"LINEID" = :a5,"DELETEFLAG" = :a6,"NOTE" = :a7,"VERSION" = :a11 WHERE "BRANCHID" = :b0 AND "CUSTID" = :b1 AND "BUSINESTYPECODE" = :b2 AND "STAFFID" = :b3>)

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

 

 

  1. GGSCI (WIN-O6ODS01HLMM) 119> info c_r_c6 
  2.  
  3. REPLICAT   C_R_C6    Last Started 2012-09-27 10:29   Status ABENDED 
  4. Checkpoint Lag       00:00:00 (updated 01:53:55 ago) 
  5. Log Read Checkpoint  File ./dirdat/cm000019 
  6.                      2012-09-27 04:00:47.720000  RBA 1771589 
  7. 然后用logdump查看: 
  8. Logdump 48 >open ./dirdat/cm000019 
  9.  
  10. LogTrail ***dirdat\cm000015 closed 
  11.  
  12. Current LogTrail is ***\dirdat\cm000019 
  13.  
  14. Logdump 49 >pos 1771589 
  15.  
  16. Reading forward from RBA 1771589 
  17.  
  18. Logdump 50 >n 

 

  1. 2012/09/27 08:36:10.858.000 FieldComp            Len   194 RBA 1776078 
  2. Name: ***.TB_COMMON_CUSTEMPRELATION 
  3. After  Image:                                             Partition 4   G  m 
  4.  0000 000d 0000 0009 3937 3035 3130 3030 3100 0100 | ........970510001... 
  5.  0c00 0000 0833 3039 3130 3030 3600 0200 1500 0032 | .....30910006......2 
  6.  3031 322d 3038 2d32 383a 3130 3a33 303a 3037 0003 | 012-08-28:10:30:07.. 
  7.  0015 0000 3230 3132 2d30 392d 3237 3a30 383a 3336 | ....2012-09-27:08:36 
  8.  3a30 3900 0400 0700 0000 0346 5741 0005 000a 0000 | :09........FWA...... 
  9.  0000 0000 0000 0000 0006 000a 0000 0000 0000 0000 | .................... 
  10.  0000 0007 0004 ffff 0000 0008 000f 0000 000b 4457 | ..................DW 
  11. Column     0 (x0000), Len    13 (x000d) 
  12.  0000 0009 3937 3035 3130 3030 31                  | ....970510001 
  13. Column     1 (x0001), Len    12 (x000c) 
  14.  0000 0008 3330 3931 3030 3036                     | ....30910006 
  15. Column     2 (x0002), Len    21 (x0015) 
  16.  0000 3230 3132 2d30 382d 3238 3a31 303a 3330 3a30 | ..2012-08-28:10:30:0 
  17.  37                                                | 7 
  18. Column     3 (x0003), Len    21 (x0015) 
  19.  0000 3230 3132 2d30 392d 3237 3a30 383a 3336 3a30 | ..2012-09-27:08:36:0 
  20.  39                                                | 9 
  21. Column     4 (x0004), Len     7 (x0007) 
  22.  0000 0003 4657 41                                 | ....FWA 
  23. Column     5 (x0005), Len    10 (x000a) 
  24.  0000 0000 0000 0000 0000                          | .......... 
  25. Column     6 (x0006), Len    10 (x000a) 
  26.  0000 0000 0000 0000 0000                          | .......... 
  27. Column     7 (x0007), Len     4 (x0004) 
  28.  ffff 0000                                         | .... 
  29. Column     8 (x0008), Len    15 (x000f) 
  30.  0000 000b 4457 4930 3030 3531 3138 37             | ....DWI00051187 
  31. Column     9 (x0009), Len     8 (x0008) 
  32.  0000 0004 4253 3036                               | ....BS06 
  33. Column    10 (x000a), Len    15 (x000f) 
  34.  0000 000b 5a49 5930 3030 3031 3836 36             | ....ZIY00001866 
  35. Column    11 (x000b), Len    10 (x000a) 
  36.  0000 0000 0000 0000 0002                          | .......... 
  37.  
  38. Logdump 67 > 

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

  1. REPLICAT c_r_c6 
  2. SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")  
  3. GETENV (NLS_LANG) 
  4. USERID ************ 
  5. --HANDLECOLLISIONS 
  6. ASSUMETARGETDEFS 
  7. --DDLERROR DEFAULT IGNORE RETRYOP 
  8. --REPERROR DEFAULT, DISCARD 
  9. 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在后面执行),而应该先去查明原因。若是数据问题,可以跳过该表的同步,然后重新同步该表。

本文出自 “oracle研习” 博客,请务必保留此出处http://2874575.blog.51cto.com/2864575/1009786

时间: 2024-11-14 12:05:14

(转)goldengate 复制进程replicat出现ORA-01403 错误的相关文章

plsql连接oracle数据库报ora 12154错误解决方法_oracle

plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

Oracle数据库ORA 54013错误的解决办法_oracle

ORA-54013: 不允许对虚拟列执行 INSERT 操作 这是Oracle 11 的新特性 -- 虚拟列. 在以前的Oracle 版本,当我们需要使用表达式或者一些计算公式时,我们会创建数据库视图,如果我们需要在这个视图上使用索引,我们会创建基于函数的索引.现在Oracle 11允许我们直接在表上使用虚拟列来存储表达式.虚拟列的值是不存储在磁盘的,它们是在查询时根据定义的表达式临时计算的.我们不能往虚拟列中插入数据,我们也不能隐式的添加数据到虚拟列,我们只能使用物理列来插入数据.然后可以查询

GoldenGate 配置extract,replicat进程自启动

在GoldenGate中主进程是manager进程,使用start mgr启动.可以在mgr进程中添加一些参数用来在启动mgr进程的同时启动extract和replicat进程   GGSCI (gg01) 130> VIEW params mgr   --mgr主进程端口号   PORT 7809   --动态端口,当指定端口不可用时,会从以下列表中选择一个可用端口   DYNAMICPORTLIST 7800-7909   --启动mgr进程启动启动extract进程   AUTOSTART

GoldenGate复制的几个简单测试

今天测试了一下GoldenGate的复制,发现还是有不少的细节之处需要测试,保证可控,而下面做了几个测试也加深了我对OGG的理解. 默认是不支持DDL的,而线上业务的DDL也是完全可控的,在升级前几天可以冻结DDL,所以在线业务中还是充分利用DML的数据变化即可,不过这些影响还是需要测试到的,做到心中有数. 源端在Solaris下,数据库为10gR2,所以适用的OGG版本只是11.2的版本了.目标端为Linux X86,数据库为11gR2,也是使用同样版本的OGG软件. 同步的过程可以参考之前的

oracle 11g导出数据时报ORA 1455错误的处理方法_oracle

由于导出的该用户的表可能存在空数据表,那么可能就会出现此其异常. 首先: 查看: SQL>show parameter deferred_segment_creation; 如果为TRUE,则将该参数改为FALSE: 在sqlplus中,执行如下命令: SQL>alter system set deferred_segment_creation=false; 然后: 可以针对数据表.索引.物化视图等手工分配Extent SQL>Select 'alter table '||table_n

ORA 00054错误处理方法

1.通过以下查找出已被锁定的数据库表及相关的sid.serial#及spid select object_name as 对象名称,s.sid,s.serial#,p.spid as 系统进程号 from v$locked_object l , dba_objects o , v$session s , v$process p where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr; 2.在数据库中灭掉相关s

FastCGI 进程意外退出造成500错误_php技巧

在一台新服务器上,安装新网站,之前只放至了一个网站.是服务器商配置好的,非集成环境. 添加了一个新站,路径都制定好了,但是在访问时出现了500错误.提示貌似是php的问题,但是之前的网站,运行的是discuz,一切正常,加了个新网站就报错.用phpinfo语句执行也是同样的错误. 经过一番百度,解决方法如下. 打开iis,应用程序池.选择右侧的设置应用程序池默认设置. 在弹出的窗口中,找到标识,点击右侧的小方块. 把值改为LocalSystem.重启IIS,即可解决. 以上所述就是本文的全部内容

【OGG】OGG基础知识整理

[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟. GoldenGate能够支持多种拓扑结构,包括一对一,一对多,多对一,层叠和双向复制等等.   GoldenGate基本架构   Oracle GoldenGate主要由如下组件组成 ● Extract ● Data pump ● Trails ● Co

我的MYSQL学习心得(十七) 复制

最近把大学时候的ORACLE教程书本翻出来看,真的是感触良多 以前在学校的时候,每次ORACLE测验和考试都是不合格的,期末的时候靠补考才勉强过关 大家看到下图的封面应该知道大学教我们ORACLE课程的老师,没错,他就是李爱武老师 大家可能对李爱武老师不太熟悉,在ORACLE领域,大家第一时间肯定会想到"盖国强" 还记得前段时间某个媒体说"盖国强"是中国第一DBA,但是我在百度里面搜索"中国第一DBA"并没有出现"盖国强"三个