【问题标题】:IBM CDC Table should already have been refreshed. Transformation Server will terminateIBM CDC 表应该已经刷新。转换服务器将终止
【发布时间】:2021-12-06 21:59:55
【问题描述】:

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

来源

  1. lib/table,成员table将被刷新为subscription
  2. lib/table,成员 table 刷新到 subscription 已完成 200000 行发送。
  3. 无法刷新表 lib/table 成员 table
  4. lib/table 应该已经被刷新了。 Transformation Server 将终止。

目标

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

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

【问题讨论】:

  • 正在使用某些代码页吗?所有表都有 PK 或 uniq 索引?

标签: db2 db2-400 ibm-data-replication


【解决方案1】:

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

  1. 把桌子停好
  2. 将其标记为刷新并开始订阅,它将刷新表并进入“活动”状态。

谢谢

【讨论】:

  • 当您没有明确的答案时,向 OP(“原始发帖人”)提出下一步要尝试什么的建议通常在对问题的评论中比在答案中更合适——假设您至少有 50 个代表可以发表评论。但是您始终可以建议仅 1 个代表进行编辑(“也许您可以在此处包含日志以更清晰”)。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2013-07-17
    相关资源
    最近更新 更多