复制包含可空主键列的表行会失败
当某些 Db2 版本被用作 Data Gate 复制的目标,且用户复制了具有可为空主键列的表的行时,复制引擎可能会失败。
故障现象
事件消息(若启用加速则为DSNX消息)的发生,其内容如下:
/E2030/ 并行应用期间的SQL异常: DB2 SQL错误: SQLCODE=-901 , SQLSTATE=58004 , SQLERRMC=在 JoinRewriter.cpp:1529 处发生意外错误, DRIVER=4.34.30
原因
复制引擎将陷入重启循环,要么被挂起(重启时间更长),要么持续重启。
解决问题
要修复此问题:
- 登录到 Data Gate pod。
- 进入 datagate-apply 容器。
- 导航至以下位置的复制跟踪文件:
/head/dwa/iu/instances/<yourinstance>/log and check for above message - 如果存在事件消息,则需要为 db2 wh 实例设置优化器属性:
然后清除动态包缓存:db2set -im DB2_OPTIMIZER_MODIFIERS="COL_NEQN_SCOPE_CHECK OFF"db2 connect to db; db2 flush package cache dynamic