ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES

有效对象

复制

说明

使用 ALLOWNOOPUPDATES 和 NOALLOWNOOPUPDATES 控制 Replicat 如何响应 no-op 操作。无操作是对目标表没有影响的操作。下面是有关如何发生这种情况的一些示例。

使用 NOALLOWNOOPUPDATES 时,仅当源表和目标表未定义密钥或复制表未使用 KEYCOLS 时,复制才会异常终止。在这种情况下,如果目标表未定义唯一键并对任何源列执行更新操作,则会出现类似于以下内容的错误:

Encountered an update for target table TELLER, which has no unique key defined. KEYCOLS can be used to define a key. Use ALLOWNOOPUPDATES to process the update without applying it to the target database. Use APPLYNOOPUPDATES to force the update to be applied using all columns in both the SET and WHERE clause.

可以使用参数 APPLYNOOPUPDATES 强制应用 UPDATE。APPLYNOOPUPDATES 覆盖 ALLOWNOOPUPDATES。如果同时指定了二者,Replicat 将应用源表和目标表存在关键列的更新。

如果使用 HANDLECOLLISIONS 或 INSERTMISSINGUPDATES 参数时指定了 ALLOWNOOPUPDATES,并且 Oracle GoldenGate 具有所有目标键值,则 Oracle GoldenGate 将通过在 SET 子句中使用表的所有列和 WHERE 子句(调用 APPLYNOOPUPDATES 行为)应用 UPDATE。这是必要的,以便 Oracle GoldenGate 可以确定行是否存在。如果缺失,Oracle GoldenGate 会将 UPDATE 转换为 INSERT。

默认值

NOALLOWNOOPUPDATES

语法

ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES