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

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

关键字:

KingbaseFlySync、Linux、x86_64、mips64el、aarch64、Java

kes到Oracle同城灾备场景

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

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

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

微信图片_20211119142442

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

微信图片_20211119142429

2、 检查源端kfs配置文件

微信图片_20211119151545

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

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

\d AFFIX_INFO检查是否有配置identity full。
如果没有的话,无法解析deleteupdate业务。
登录源生产库执行以下命令:
alter table AFFIX_INFO REPLICA IDENTITY FULL;

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

微信图片_20211119152210

在custompkey.json存在"affix_info":"",配置,这意味着把affix_info所有列过滤了,解决办法一:在custompkey.json删除"affix_info":"";解决办法二:把那个表affix_info的配置改对,比如"affix_info":"id",表示将id列作为表的主键。
此步我们采用解决办法一。

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

微信图片_20211119165457

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

微信图片_20211119142429

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
posted @   KINGBASE研究院  阅读(182)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示