0

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

资源

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

目标

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

有没有人对这种情况有任何想法?

4

2 回答 2

0

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

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

谢谢

于 2021-10-21T07:45:12.460 回答
0

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

于 2021-11-03T17:41:51.183 回答