一、报错
OGG复制进程报错!
ERROR OGG-00222 The column(s) used for the @RANGE filter for table C.IC contain only NULL value(s) or missing value(s): There must be at least one non-NULL value present.
复制进程参数
MAP C.IC, TARGET C.IC,filter(@range(2,6,ID)), RESOLVECONFLICT(UPDATEROWMISSING(DEFAULT, OVERWRITE)),RESOLVECONFLICT(INSERTROWEXISTS(DEFAULT, OVERWRITE));
传入的值是空值,正常情况下不存在这个问题,排查源端情况
二、问题处理
1)源端,抽取进程
这种明显不太正常的报错,说明源端抽取是否存在异常
抽取出来的值是null???
dblogin USERID ogg,PASSWORD xx
info trandata C.IC
Logging of supplemental redo log data is disabled for table xxx
现场出来了,由于源端表的最小补充日志关闭,导致抽取的很多字段为null
需要重新添加表级别的补充日志
add trandata xxx
-什么原因导致这个问题,咨询数据库发版人员,对业务表进行rename,新建一个table as表结构,目的是清理业务表的历史数据,但是没有考虑到OGG 同步的问题,需要对新表重新add trandata xx
2)目标端,复制进程
源端抽取重新add trandata,目标端呢???
方案一、重新对这个表进行数据初始化同步,复制进程根据源端scn进行同步数据一致;
方案二、数据不是特别重要的情况,表太大,并且报错及时的情况下,源端重新add trandata ,目标端在此之后,重最新开始同步即可! 由于源端进行了rename操作,因此历史数据其实无需在意,本次选择方案二。 begin now会丢失复制进程报错-源端传来最新dump内的变化!
alter REPLICAT XXX ,BEGIN NOW