GETUPDATEBEFORES | IGNOREUPDATEBEFORES

有效对象

提取和复制

说明

使用 GETUPDATEBEFORES 和 IGNOREUPDATEBEFORES 参数控制 UPDATE 操作中的列之前的图像是否包括在 Oracle GoldenGate 处理的记录中。在图像包含行更新之前存在的列详细信息之前。

(仅限 Oracle)默认情况下,Oracle GoldenGate 在单个统一更新记录中捕获更新操作的更改前值和更改后值。对于其他数据库,仅将更改前值写入线索文件。在以前的发行版中,默认值仅捕获更改后值。从此发行版开始,定制 SQL 语句 (SQLEXEC) 现在仅使用新的默认更新格式在每次更新操作中执行一次。在此发行版之前,定制 SQL 语句将执行两次,一次在遇到更改前值时执行,一次在遇到更改后值时执行。如果将 Oracle GoldenGate 用于统一更新格式,则可以使用 @BEFORE、@AFTER 和 @BEFOREAFTER 函数将前值或后值显式传递到定制 SQL 语句。虽然默认情况下 Oracle GoldenGate 可以使用此更新格式,但如果存在冲突的参数,则将保留旧格式 cam,这些参数以前会生成两个单独的更改前和更改后记录。在这些情况下,信息性消息会记录在报告文件中。

按如下方式使用 GETUPDATEBEFORES 参数:

您可以将图像之前与图像之后进行比较,以标识事务处理的净结果或执行其他增量计算。例如,如果 BALANCE 字段在更新之前为 $100,之后为 $120,则比较将显示 $20 的差额。您可以使用 Oracle GoldenGate 的列转换函数执行比较和计算。

要在参数文件中的图像之前进行引用,请使用 @BEFORE 转换函数。例如:

COLMAP (previous = @BEFORE (balance))

使用冲突检测和解决 (Conflict Detection and Resolution,CDR) 功能时,需要 GETUPDATEBEFORES。有关 CDR 的更多信息,请参见手动冲突检测和解决。

GETUPDATEBEFORES 和 IGNOREUPDATEBEFORES 参数特定于表。在遇到其他参数之前,所有后续的 TABLE 或 MAP 语句都有一个参数有效。

因为可以在 MAP 语句之间有选择地启用或禁用这些参数,所以可以针对协调复制的不同线程启用或禁用这些参数。在一组 MAP 语句中指定 GETUPDATEBEFORES 线程,并在另一组 MAP 语句中指定 IGNOREUPDATEBEFORES 线程。

GETUPDATESBEFORES 的限制:

默认值

IGNOREUPDATEBEFORES

语法

GETUPDATEBEFORES | IGNOREUPDATEBEFORES

示例

此示例说明如何有选择地将 GETUPDATEBEFORES 和 IGNOREUPDATEBEFORES 应用于不同的 MAP 语句,每个语句都表示协调复制的不同线程。

GETUPDATEBEFORES
MAP sales.cust, TARGET sales.cust, THREAD (1);
MAP sales.ord, TARGET sales.ord, THREAD (2);
IGNOREUPDATEBEFORES
MAP sales.loc, TARGET sales.loc, THREAD (3);