OGG replicat出现ORA-01403 错误NO data found

OGG replicat出现ORA-01403 错误NO data found
今天OGG出现表数据不同步,入库端接收update和delete语句时出现ORA-01403 错误NO data found

一直同步,排除掉表也无法解决!


解决方法一:
在参数中添加HANDLECOLLISIONS 当target端缺失delete 、update数据时,target端 自动处理。

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


HANDLECOLLISIONS参数说明:
HANDLECOLLISIONS是我们使用goldengate过程中常有的一个REPLICAT参数,该参数依赖于主键或唯一索引处理冲突数据,常用于初始化阶段。对于无主键或唯一索引的表无法处理冲突,且可能导致重复记录。注意打开此参数则所有数据错误不管reperror如何配置均不再写discard文件,即所有数据冲突信息被默认规则处理,没有任何日志(则会忽略error mapping数据错误,而且不会报告到discard文件),因此日常复制不建议使用该参数;可予以考虑的特殊场景为只需新增数据,无需复制历史数据。

使用HANDLECOLLISIONS的几个场景:

1、target丢失delete记录(missing delete),忽略该问题并不记录到discardfile
2、target丢失update记录(missing update)
            更新的键值是主键=》 update转换成INSERT ,默认情况下插入记录不完整
            更新的键值是非主键=》 忽略该问题并不记录到discardfile
3、重复插入已存在的主键值到target表中,这将被replicat转换为UPDATE现有主键值的行的其他非主键列情景1 target丢失delete记录(missing delete) :



解决方法二:

以上方法是针对数据量较小,相对静态的表。而一般在生产环境中遇到大表很少能重新初始化的,此时可以按照以下方法操作:
1.找到该REPLICAT进程的dsc文件

在view report rxx中可以找,也可以view params rxx 找到discardfile;
然后打开该文件。
2.将所有no data found的数据在目标库造出,目的是让ogg进程能找到数据。
3.start 进程
4.如果进程abenden,则重复以上操作。

该方法比较保险,但如果出现记录数较多时的话则需花费较长时间。

请使用浏览器的分享功能分享到微信等