提取选项

有效对象

提取

说明

使用 FETCHOPTIONS 参数控制 Oracle GoldenGate 在以下情况下提取数据的某些方面:

FETCHOPTIONS 是特定于表的。在遇到其他 FETCHOPTIONS 语句之前,一个 FETCHOPTIONS 语句适用于所有后续 TABLE 语句。

对于大多数安装,默认提取属性已足够。

默认值

忽略缺少的行并继续处理

语法

FETCHOPTIONS
[, FETCHPKUPDATECOLS]
[, MISSINGCOLS]
[, INCONSISTENTROW <action>]
[, MAXFETCHSTATEMENTS <number>]
[, MISSINGROW <action>]
[, NOFETCH]
[, SUPPRESSDUPLICATES]
[, USEKEY | NOUSEKEY]
[, USELATESTVERSION | NOUSELATESTVERSION]
[, USESNAPSHOT | NOUSESNAPSHOT]
[, USEROWID | NOUSEROWID]

FETCHPKUPDATECOLS

更新主键时提取所有不可用列。默认情况下,此选项处于关闭状态。禁用后,将根据启用的其他 FETCHOPTIONS 选项执行列提取。

启用后,它仅在更新主键列期间生效。结果与在 TABLE 语句中使用 (*) 相同。提取中包括 LOB 列。

使用 HANDLECOLLISIONS. 时使用此参数当 Replicat 检测到缺少更新时,所有列都将可用于将更新转换为插入。

MISSINGCOLS

从更新和删除操作(包括 LOB 列)中提取任何缺少的列。此选项仅对 Oracle AI Database 有效。由于要提取数据的额外查询,它可能会对数据库和提取性能产生负面影响。特别是如果存在需要提取并写入到线索中的大型 LOB 值。

设置此参数与设置以下参数相同:

MISSINGCOLS(*) in the TABLE statement
NOCOMPRESSDELETES FETCHMISSINGCOLS
GETUPDATEBEFORES
NOCOMPRESSUPDATES
LOGALLSUPCOLS

但是,设置 FETCHOPTIONS MISSINGCOLS 与以下参数冲突:

FETCHOPTIONS NOFETCH
FETCHOPTIONS FETCHPKUPDATECOLS
COMPRESSDELETES
COMPRESSUPDATES
GETUPDATEBEFORES
LOGALLSUPCOLS

INCONSISTENTROW <action>

指示已成功按行 ID 提取列数据,但关键字不匹配。已回收行 ID,或者在此操作之后(以及提取之前)发生了主键更新。

<action> 可以是以下值之一:

ALLOW

允许条件并继续处理。

IGNORE

忽略该条件并继续处理。这是默认设置。

REPORT

将行的条件和内容报告到放弃文件,但继续处理部分行。

DISCARD

放弃数据,不处理部分行。

ABEND

放弃数据并退出处理。

MAXFETCHSTATEMENTS <number>

控制提取可用于从源数据库提取行数据的最大已准备查询数。当没有足够的信息可用来从事务处理日志记录构建逻辑 SQL 语句时,将使用提取的数据。查询将根据需要进行准备和缓存。达到使用 MAXFETCHSTATEMENTS 设置的值后,最早的查询将替换为最新查询。此参数的值控制提取仅为提取查询维护的打开游标数。Extract 可将其他游标用于其他目的,例如存储过程所需的游标。此参数仅对 Oracle AI Database 有效。默认值为 100 个语句。确保数据库可以支持指定的游标数以及其他应用程序和进程使用的游标数。

MISSINGROW <action>

在 Oracle GoldenGate 无法找到要提取的行时提供响应,导致仅部分行(更改的值)可供处理。通常,无法找到行,因为它是在创建更改记录和触发提取之间删除的,或者是由于所需的行映像早于还原保留期规范。

<action> 可以是以下值之一:

ALLOW

允许条件并继续处理。这是默认设置。

IGNORE

忽略该条件并继续处理。

REPORT

将行的条件和内容报告到放弃文件,但继续处理部分行。

DISCARD

放弃数据,不处理部分行。

ABEND

放弃数据并退出处理。

NOFETCH

阻止提取从数据库中提取列,默认情况下此选项处于禁用状态。Extract 将记录写入到线索,但插入一个指示缺少该列的标记。

SUPPRESSDUPLICATES

对 Oracle 有效。避免对 LOB 列进行更新时目标表空间变得过大。默认情况下,将 SUPPRESSDUPLICATES 设置为 off。例如,复制后,232MB 的源表空间将成为 7.52GB 的目标表空间。

USEKEY NOUSEKEY

确定 Oracle GoldenGate 是否使用主键来查找要提取的行。

如果同时指定了 USEKEY 和 USEROWID,则 ROWID 优先,以便更快地访问记录。缺省值为 USEROWID。

USELATESTVERSION NOUSELATESTVERSION

对 Oracle 有效。与 USESNAPSHOT 一起使用。如果默认值 USELATESTVERSION 无法从还原表空间提取数据,则指示 Extract 从源表提取数据。NOUSELATESTVERSION 指示提取在快照提取失败时忽略条件,然后继续处理。

要提供快照提取未成功时的备用操作,请使用 MISSINGROW 选项。

USESNAPSHOT NOUSESNAPSHOT

对 Oracle 有效。缺省值 USESNAPSHOT 会使 Extract 使用 Oracle Flashback 机制来提取重建无法从重做记录完全捕获的某些操作所需的数据的正确快照。NOUSESNAPSHOT 将导致 Extract 从源表而不是闪回日志提取所需的数据。

USEROWID NOUSEROWID

对 Oracle 有效。确定 Oracle GoldenGate 是否使用行 ID 来查找要提取的行。

如果同时指定了 USEKEY 和 USEROWID,则 ROWID 优先,以便更快地访问记录。缺省值为 USEROWID。

示例

示例 1

以下命令指示 Extract 使用闪回查询提取数据,并忽略条件,如果提取失败,则继续处理记录。

FETCHOPTIONS USESNAPSHOT, NOUSELATESTVERSION

示例 2

MAXFETCHSTATEMENTS 150

示例 3

以下命令指示 Extract 使用闪回查询提取数据,并在数据不可用时使 Extract 异常终止。

FETCHOPTIONS USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW ABEND