IBM CDC Table 应该已经刷新。转换服务器将终止

IBM CDC Table should already have been refreshed. Transformation Server will terminate

我有一个 table,源和目标都是 IBM DB2 iSeries。复制方式为镜像。镜像前刷新后,消息Table <lib>/<table> should already have been refreshed. Transformation Server will terminate.出现并且table的状态保持为刷新。同一订阅中的其他 table 通常是 运行。下面是详细日志:

来源

  1. Tablelib/table,会员table将刷新为订阅.
  2. Tablelib/table,会员table刷新为订阅 已发送 200000 行。
  3. Table lib/table 会员table无法刷新
  4. Table lib/table应该已经刷新了。转换服务器将终止。

目标

  1. 已开始刷新目标 table lib/table,成员 *ONLY。
  2. 220310 行从成员 *FIRST of table lib/table.
  3. 中删除
  4. 刷新完成 table lib/table,成员 *ONLY。收到 200000 行,成功应用 199500 行,500 行失败。

有没有人对这种情况有什么想法?

查看作业日志可能会更清楚地说明导致此行为的原因,因为发生这种情况的原因有很多。 可以尝试的一件事是,在管理控制台 select 中映射 tables

  1. 停在table
  2. 将其标记为刷新并开始订阅它将刷新 table 并进入“活动”状态。

谢谢

CDC iSeries 将尝试获取一个非常短的独占锁(允许读取)以确保在刷新开始时没有涉及 table 的未提交提交周期。如果它无法获得锁定,则它会跳过刷新,移至下一个 table,发布您报告的消息。 因此,您将需要 运行 在 table(或没有 activity)的低 activity 时刷新 table。 如果源应用程序在提交控制下更新 table,则需要此锁以确保一致性,否则日志抓取器将忽略属于在刷新本身开始之前开始的提交周期的任何事务。 如果源应用程序根本不使用提交控制并且 iSeries 是唯一的源,那么您可以让目标忽略提交控制。然后源将知道不要尝试锁定。 要关闭基于 Java 的目标的承诺控制,请添加目标系统参数 mirror_commit_on_transaction_boundary 并将其设置为 false,如果目标是 iSeries,则将目标承诺控制参数更改为 *NONE。 如果您在目标上进行此更改,请确保根本不使用承诺控制,否则如果更改与 table 刷新

并发回滚,您可能会遇到一些麻烦的同步问题