暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓 解决金仓KingbaseFlySync同步服务源端DB2报com.ibm.db2.jcc.am.SqlException]的问题

KFS补给站 2023-07-27
299

解决金仓KingbaseFlySync同步服务源端DB2报com.ibm.db2.jcc.am.SqlException [jcc][t4][1065][12306]的问题

关键字

KingbaseFlySync,KFS,同步服务,DB2,CDC

问题描述

KFS解析DB2增量数据,源端启动时报错:com.ibm.db2.jcc.am.SqlException [jcc][t4][1065][12306]

问题分析

DB2解析增量数据采用的是CDC方式进行捕获,配置CDC时会记录下当时对应表的表结构(此时会将表中对应的列在ASNCDC模式下记录)。 如果对应的表结构发生了变化,CDC进行增量数据捕获时,由于列不匹配,就会发生报错

解决方案

规范DDL变更流程,需要依照特定的流程进行DDL变更,防止因为表结构变化导致的KFS解析异常。具体规范如下:

1、确保需要变更的表上暂无业务数据,且相关业务数据已经完全同步到目标端(如果没有同步完成,执行后续的remove操作后,就可能会丢失相关数据)

2、停止KFS应用(replicator stop)

3、在DB2inst1用户下,连上相关数据库(使用setupCDC.conf文件中source_user配置的用户),然后执行如下命令:db2 "call ASNCDC.REMOVETABLE('模式名','表名');

4、在DB2数据库中变更相关DDL(变更后需要执行reorg TABLE 模式名.表名)

5、在{KFS解压目录}/flysync-replicator/extractors/db2-cdc下

A 、如果setupCDC.conf文件中source_user配置的用户有dba权限,则: 直接执行 setupCDC.sh

B、如果setupCDC.conf文件中source_user配置的用户是最小权限,则:

1):先查看捕获进程的状态

/home/db2inst1/sqllib/bin/asnccmd capture_schema=asncdc capture_server=DBName status

2)如果进程未启动,则启动进程,否则跳过此步骤

/home/db2inst1/sqllib/bin/asncap capture_schema=asncdc capture_server= DBName autoprune=n commit_interval=5 &

3)使用source_user用户连接数据库,然后执行:

db2 "call ASNCDC.ADDTABLE('模式名','表名');

4)reinit捕获进程

/home/db2inst1/sqllib/bin/asnccmd capture_schema=asncdc capture_server= DBName reinit

注意修改sqlib的路径,以及将DBName修改为真实的数据库

6、启动KFS应用(replicate start)

更多信息,参见https://help.kingbase.com.cn/v8/index.html

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论