解决金仓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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




