KingbaseFlySync delete语句WHERE条件缺失的解析出错问题处理思路

关键字:

KingbaseFlySync、Linux、x86_64、mips64el、aarch64、Java
 

KES到Oracle同城灾备场景

源:kesv8r6c5b0023一主一备
目标端:Oracle rac 11g (4个实例)

注意本操作比较危险,需要核实源生产库归档是否存在,如果可以的话,考虑采用别的方式,比如跳过报错事务,通过数据比对方式修复等等

1、目标端KFS后台日志报错ORA-00936:缺失表达式


从上图报错可知:delete from "USERTMP"."AFFIX_INFO" WHERE 解析存在问题。
根据报错的日志号,查找该日志号解析,发现where条件部分确实缺失。

2、 检查源端kfs配置文件


从以上KFS源端配置中,源端过滤器存在custompkey存在无主键过滤器和无主键配置文件custompkey.json。

3、 检查表是否有配置无主键解析

\d AFFIX_INFO检查是否有配置identity full。
如果没有的话,无法解析delete和update业务。
登录源生产库执行以下命令:

alter table AFFIX_INFO REPLICA IDENTITY FULL;

4、 检查无主键配置文件custompkey.json


在custompkey.json存在"affix_info":"",配置,这意味着把affix_info所有列过滤了。

解决办法一:在custompkey.json删除"affix_info":"";

解决办法二:把那个表affix_info的配置改对,比如"affix_info":"id",表示将id列作为表的主键。

此步我们采用解决办法一。

5、 在源端生产库确认最旧归档日志时间


从归档日志的日期看,最旧的归档是在13号,目前delete解析的业务是15号,如下图红框。

6、 在KFS源端清除解析错误日志号

fsrepctl -service kesoracle offline
kufl -service kesoracle purge -low 29623

选择y

7、 在KFS目标端清除解析错误日志号

kufl -service kesoracle purge -low 29623

选择y

8、 验证KFS源端kufl解析正常

replicator restart
fsrepctl service 看看解析日志号是否有往前走,确定解析正常后,执行如下命令验证kufl解析正常:
kufl -service kesoracle list -seqno 29623

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值