TRANLOGOPTIONS
有效对象
提取
说明
根据数据库或捕获模式,使用 TRANLOGOPTIONS 参数控制 Extract 与事务处理日志或传递事务处理数据的 API 交互的方式。可以在同一参数文件中使用多个 TRANLOGOPTIONS 语句,或者可以在同一 TRANLOGOPTIONS 语句中指定多个选项(如果允许这些选项)。
仅对其要使用的数据库使用给定的 TRANLOGOPTIONS 选项。
默认值
无
语法
TRANLOGOPTIONS {[ALLOW_BINLOG_ROW_METADATA_MINIMAL]
[ALLOWTABLECOMPRESSION][ALTLOGDEST <path> | REMOTE]
[ALWAYSONREADONLYROUTING]
[ASMUSERALIAS <alias> [DOMAIN <domain>]]
[ASYNCTRANSPROCESSING <buffer_size>]
[BUFSIZE <size>]
[CHECKPOINTRETENTIONTIME <days>][DB2APIRETRY <retry_count>]
[DB2ZV11COMPATIBILITYMODE]
[DICTIONARY_CACHE_SIZE <value>]
[DLFAILOVER_TIMEOUT <seconds>]
[DISABLESOFTEOFDELAY]
[EXCLUDEFILTERTABLE <table>]
[EXCLUDETAG {<tag> | + | NULL}]
[EXCLUDETRANS <transaction>]
[EXCLUDEUSER <user>]
[EXCLUDEUSERID <Oracle_uid>][FAILOVERTARGETDESTID <n>][FETCHPARTIALJSON]
[FETCHPARTIALLOB][FETCHPARTIALXML]
[FORCEFETCHLOB]
[GETCTASDML | NOGETCTASDML][HANDLEDLFAILOVER [STANDBY_WARNING | STANDBY_ABEND]]
[IFILOCKSECONDS]
[IGNOREDATACAPTURECHANGES | NOIGNOREDATACAPTURECHANGES]
[INCLUDEAUX (<AUX_specification>)]
[INCLUDEREGIONID | INCLUDEREGIONIDWITHOFFSET]
[INTEGRATEDPARAMS]
[INCLUDETAG <tag>]
[ENABLE_PROCEDURAL_REPLICATION Y]
[ENABLE_AUTO_CAPTURE | DISABLE_AUTO_CAPTURE]
[LOB_CHUNK_SIZE <size>]
[MAXAUTOCMTTRANSSIZE (<range>, <default>)]
[LOGREADTIMEOUT <value>]
[MININGUSERIDALIAS <alias> [DOMAIN <domain>]][MIXEDENDIAN [ON|OFF]]
[MANAGECDCCLEANUP | NOMANAGECDCCLEANUP ]
[MANAGESECONDARYTRUNCATIONPOINT | NOMANAGESECONDARYTRUNCATIONPOINT ]
[PERFORMANCEPROFILE HIGH|MEDIUM|LOW_RES|LOW_WORKLOAD][QUERYTIMEOUT <seconds>]
[QUERYRETRYCOUNT <seconds>]
[READQUEUESIZE <size>]
[READTIMEOUT <milliseconds>]
[REDO_TRANSPORT_LAG_THRESHOLD <seconds>]
[REDO_TRANSPORT_LAG_TIMEOUT <value>]
[REMOTESCHEMA <value>]
[REQUIRELONGDATACAPTURECHANGES | NOREQUIRELONGDATACAPTURECHANGES]
[SOURCE_OS_TIMEZONE <timezone>]
[SKIPUNKNOWNEVENT] [STREAMINGOPTIONS (publication_names=<pub_name1>, <pub_name2>, <pub_name3>)
[SUPPRESSNOOOPUPDATES]
[TRACKSCHEMACHANGES | NOTRACKSCHEMACHANGES]
[TRANCOUNT <integer>]
[TSLOOKUPBEGINLRI | TSLOOKUPENDLRI]
[VALIDATEINLINESFLOB]
[USE_ROOT_CONTAINER_TIMEZONE]
[USENATIVEOBJSUPPORT | NOUSENATIVEOBJSUPPORT]
[VERSIONCHECK DYNAMIC | IMMEDIATE][WARNCREATEASSELECT]
}
[ALLOW_BINLOG_ROW_METADATA_MINIMAL]
对 MySQL 有效
使用提取参数文件中的 ALLOW_BINLOG_ROW_METADATA_MINIMAL 继续使用 MySQL Server 变量 BINLOG_ROW_METADATA 设置为 MINIMAL。
MySQL Server BINLOG_ROW_METADATA 变量不支持 TRACKSCHEMACHANGES 和 DDL 复制等功能。要使用这些功能,请在 MySQL 服务器配置文件中将 BINLOG_ROW_METADATA 设置为 Full。如果不需要这些功能,请继续使用带有 ALLOW_BINLOG_ROW_METADATA_MINIMAL 参数的 MINIMAL。
ALWAYSONREADONLYROUTING
对 SQL Server 有效
ALWAYSONREADONLYROUTING 参数允许 Extract for SQL Server 在连接到 Always On 可用性组监听程序时将其只读处理路由到可用的只读辅助服务器。
ALTLOGDEST <path | REMOTE>
对 MySQL 有效。
指定 MySQL 日志索引文件的位置。提取将查找此位置而不是数据库默认位置中的日志文件。当数据库配置不包括日志的完整路径名或计算机上有多个 MySQL 安装时,可以使用 ALTLOGDEST。提取会读取日志文件索引文件以查找需要读取的二进制日志文件。使用 ALTLOGDEST 时,Extract 将假定日志和索引位于同一位置。
提供目录的完整路径名。
在 Windows 上,如果路径包含任何空格,则将路径括在双引号内,如以下示例中所示。
TRANLOGOPTIONS ALTLOGDEST "C:\Program Files\MySQL\MySQL Server
5.7\log\binlog.index"
在 Linux 系统上:
TRANLOGOPTIONS ALTLOGDEST "/mnt/rdbms/mysql/data/logs/binlog.index"
针对远程 MySQL 数据库进行捕获时,请使用 REMOTE 选项而不是索引文件路径。此外,如果未指定 ALTLOGDEST,则系统假定该选项为 REMOTE。
从远程捕获中,在提取参数文件中指定以下内容。
TRANLOGOPTIONS ALTLOGDEST REMOTE
有关使用 REMOTE 选项的更多信息,请参见 Configure Logging Properties 。
ASYNCTRANSPROCESSING <buffer_size>
在 Oracle 的集成捕获模式下对提取有效。
控制集成捕获是以异步还是同步处理模式运行,并控制提取处于异步模式时的缓冲区大小。最小值为 1,最大值为 1024;默认值为 300。
ASYNCTRANSPROCESSING <buffer_size>
在异步 <transaction> 处理模式下,有两个控制线程:
-
一个线程将逻辑更改记录 (logical change record,LCR) 分组到事务中,执行对象级过滤,并执行部分回退处理,
-
其他线程将格式化已提交的事务,执行任何用户指定的转换,并写入线索文件。
事务处理缓冲区是这两个线程之间的缓冲区,用于将工作从一个线程转移到另一个线程。默认事务缓冲区大小为 300 个已提交事务,但如果高速缓存内存接近耗尽,则 Oracle GoldenGate 内存管理器会向下调整。
NOASYNCTRANSPROCESSING
禁用异步处理,并导致 Extract 处于同步模式下操作。在此模式下,一个线程执行所有捕获工作。
BUFSIZE <size>
对 Db2 LUW 和 Db2 z/OS 有效。对 Oracle GoldenGate 19c 及更高版本的 i 的 Db2 有效。适用于 Oracle GoldenGate 21c 及更高版本的 Oracle AI 数据库。
控制分配用于包含从事务处理日志读取的数据的缓冲区的最大大小(以字节为字节)。
高值可提高捕获速度,但会导致提取消耗更多内存。值较低会减少内存使用量,但会增加 I/O,因为提取必须将超过高速缓存大小的数据存储到磁盘。
对于 Oracle AI Database,DDL 操作记录大小受 Oracle GoldenGate 内部记录捕获缓冲区大小的限制。DDL 大小可以达到 Oracle RDBMS 大小限制。尽管 Oracle 数据库 21c 允许创建大于 10MB 的 DDL,但最大内部记录捕获缓冲区大小限制为 10MB。
<default> 缓冲区 <size> 由重做数据的源确定。以下是有效的范围和 <default> 大小(字节):
Db2 LUW:
-
最小值:8,192
-
最大值:10,000,000
-
默认值:204,800
-
上述值必须是 4096 页面大小的倍数。如果给定值不满足此要求,提取将截断为多个。
i 的 Db2 z/OS 和 Db2:
-
最小容量:36KB (36864)
-
最大值:32MB (33554432)
-
默认值:2MB (2097152)
-
上述值必须是 4096 页面大小的倍数。如果给定值不满足此要求,提取将截断为多个。
-
每个提取在提取连接到的 Db2 z/OS 系统上使用固定的 ECSA 32bytes。这不适用于 i 的 Db2。
CHECKPOINTRETENTIONTIME <days>
仅对 Oracle 在集成模式下对提取有效。
控制提取在清除检查点之前保留检查点的天数。可以使用小数值指定部分天数。例如,8.25 指定 8 天 6 小时。当某个处于集成捕获模式的 Extract 的检查点被清除时,将清除与该检查点相对应的归档重做日志文件的 LogMiner 数据字典信息,并将捕获进程的 first_scn 值重置为与下一个归档重做日志文件中的首次更改对应的 SCN 的值。默认值为 7 天,最小值为 0.00001。
DB2APIRETRY <number> 次重试
如果提取从读取 API db2ReadLog(), 的 Db2 日志中收到错误,则对于某些错误,将重试 API 调用。使用 DB2APIRETRY 更改重试次数。缺省重试次数设置为 3。重试 API 的 SQL 代码为 SQLCODE -30108。
DB2ZV11COMPATIBILITYMODE
对 Db2 z/OS 的提取有效。
在某些兼容模式下使用 Oracle GoldenGate 从 Db2 z/OS 版本 11 提取时,提取流程可能无法以编程方式确定实际数据库版本,并且出现 OGG-00551 或 OGG-00804 错误。在提取参数文件中使用此选项可手动设置所需的数据库版本。
DICTIONARY_CACHE_SIZE <value>
使用此选项可以优化提取中的字典高速缓存大小。默认值为 5000。如果 PERFORMANCEPROFILE 设置为 HIGH,则默认值为 10000。
DLFAILOVER_TIMEOUT <seconds>
在 Oracle 的集成模式下对提取有效。
提供以秒为单位的可配置超时,以允许在角色转换后恢复备用数据库。它与 HANDLEDLFAILOVER 结合使用,允许集成提取在角色转换后立即启动。在超时时段结束时,如果备用数据库仍不可用,则提取将终止。
默认值是 300 秒。您也可以使用厘秒或毫秒。
DISABLESOFTEOFDELAY
仅在集成模式下对 Oracle 和 Db2 LUW 有效。
使用“提取”参数文件中的 DISABLESOFTEOFDELAY 设置在报告 EOF 状态时等待时间生效,而没有要返回的记录。
ENABLE_AUTO_CAPTURE |
DISABLE_AUTO_CAPTURE |
设置此选项可启用 auto_capture 模式,该模式将提供启用自动捕获的表 LCR。当源数据库的 Oracle 二进制版本为 21c 或更高版本时,可以设置此选项。
EXCLUDETAG {<tag> | + | NULL}]
对提取有效。(仅限 Oracle)
EXCLUDETAG 用于排除以前由 Replicat 使用 DBOPTIONS SET TAG 选项或在 Oracle AI Database 会话中使用 DBMS_XSTREAM_ADM.SET_TAG 过程标记的更改。
使用 EXCLUDETAG tag> 指示提取处理忽略使用指定重做标记标记的单个记录。
使用 EXCLUDETAG NULL 可排除未标记的所有操作。这与 EXCLUDETAG + 相反。
使用 EXCLUDETAG + 指示“提取”处理忽略使用任何重做标记的单个记录。
示例
下面是有关如何将标记说明符与 EXCLUDETAG 一起使用的示例。
要排除所有标记的更改,请执行以下操作:
TRANLOGOPTIONS EXCLUDETAG +
要排除特定标记的更改,请执行以下操作:
TRANLOGOPTIONS EXCLUDETAG 00
TRANLOGOPTIONS EXCLUDETAG 0952
使用 EXCLUDETAG 和 INCLUDETAG 参数时的准则
将 EXCLUDETAG 和 INCLUDETAG 参数与 TRANLOGOPTIONS 和 DDLOPTIONS 命令一起使用时,请考虑以下事项:
-
如果指定了
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG且未指定DDLOPTIONS EXCLUDETAG/INCLUDETAG,则TRANLOGOPIIONS EXCLUDETAG/INCLUDETAG参数将同时应用于DML和DDL操作。 -
如果指定了
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG选项并且还指定了DDLOPTIONS EXCLUDETAG/INCLUDETAG,则TRANLOGOPIIONS EXCLUDETAG/INCLUDETAG将应用于DML操作,DDLOPTIONS EXCLUDETAG/INCLUDETAG将应用于DDL操作。 -
如果未指定
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG且指定了DDLOPTIONS EXCLUDETAG/INCLUDETAG,则DDLOPTIONS EXCLUDETAG/INCLUDETAG将应用于DDL操作,并且DML操作没有标记筛选。 -
如果未指定
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG且未指定DDLOPTIONS EXCLUDETAG/INCLUDETAG,则缺省选项DDLOPTIONS EXCLUDETAG +适用,该选项将排除所有标记的DDL操作。 -
对于
DDLOPTIONS,同时指定EXCLUDETAG和INCLUDETAG时,应先指定EXCLUDETAG。
EXCLUDETRANS <transaction>
对 Oracle 的集成提取有效。
指定复制数据库用户或任何其他用户的事务处理名称,以便提取不会捕获这些事务处理。用于双向处理,以防止在数据库之间循环数据。
有关双向同步的更多信息,请参见Oracle GoldenGate Microservices Documentation 中的 Configuring Bidirectional Replication 。
EXCLUDEUSER <user>
对 Db2 LUW、Db2 for z/OS、Db2 for i、Oracle 和 Sybase 有效。
指定要用作过滤器的复制数据库用户或任何其他用户的名称。通常,此选项用于标识双向或级联处理配置中的复制事务,以便排除或捕获它们。但是,它可用于标识任何其他用户的事务处理,例如特定业务应用程序的事务处理。
可以在同一参数文件中使用 EXCLUDEUSER 和 EXCLUDEUSERID。请勿在任何参数中使用通配符。
用户名必须有效。Oracle GoldenGate 查询数据库以获取关联的用户 ID,并将数字标识符映射回用户名。因此,如果在名称解析设置为 DYNAMICRESOLUTION 的默认值时删除并重新创建了指定的用户,则 EXCLUDEUSER 仍然有效。如果在名称解析设置为 NODYNAMICRESOLUTION 时执行相同的事务处理,则 EXCLUDEUSER 将变为无效,并且必须停止提取,然后开始使 EXCLUDEUSER 生效,请参见 DYNAMICRESOLUTION \| NODYNAMICRESOLUTION 。
-
Db2 z/OS guidelines: In Db2 for z/OS, the user is always the primary authorization
IDof the transaction, which is typically that of the original RACF user who logged on, but also could be a different authorizationIDif changed by a transaction processor or by Db2 exits. -
Oracle 准则:对于 Oracle AI Database,可以使用多个
EXCLUDEUSER语句。将所有指定用户视为与复制用户相同。
示例
以下 Oracle 示例筛选了两个用户(一个按名称,一个按用户 ID)。这些用户生成的事务处理将使用筛选器标记进行处理,并指定新的事务处理缓冲区大小。
TRANLOGOPTIONS EXCLUDEUSER ggsrep, EXCLUDEUSERID 90, BUFSIZE 100000
要将 EXCLUDEUSER 与多租户一起使用,必须指定 PDB.USERNAME。以下示例排除 PDBXYZ.SCOTT 执行的任何 DML 操作:
TRANLOGOPTIONS EXCLUDEUSER PDBXYZ.SCOTT
EXCLUDEUSERID <Database_uid>
对 Oracle 提取有效。
指定要用作过滤器的复制数据库用户或任何其他用户的数据库用户 ID (uid)。此参数对多租户提取无效。请改用标记和 EXCLUDETAG。
用法与 EXCLUDEUSER 的用法相同。
<Oracle_uid> 是非负整数,最大值为 2147483638。可以查询多个系统视图来获取用户 ID。最简单的视图是 ALL_USERS 视图。Oracle GoldenGate 不验证用户 ID。如果删除并重新创建与指定用户 ID 关联的用户,则会分配新用户 ID;因此,EXCLUDEUSERID 对该用户无效。
FAILOVERTARGETDESTID <n>
对 Oracle 提取有效。
在 Oracle Data Guard 配置中使用 Oracle GoldenGate 提取进程时,GoldenGate 提取进程必须保留在已应用于 Oracle Data Guard 备用数据库的重做之后。FAILOVERTARGETDESTID 参数用于标识指向备用数据库的 LOG_ARCHIVE_DEST_n 初始化参数,即提取必须保留在后面的故障转移目标。此参数与 HANDLEDLFAILOVER 结合使用,用于控制提取是否会根据 Oracle Data Guard 备用数据库的应用进度限制线索数据的写入。请注意,如果 Data Guard 配置启用了快速启动故障转移 (Fast Start Failover,FSFO),则不需要 FAILOVERTARGETDESTID。最小值为 0,最大值为 32,默认值为 0。
示例
要确定 TRANLOGOPTIONS FAILOVERTARGETDESTID Extract 参数的相应值,请连接到从中提取提取数据的数据库,并发出以下命令。
SQL> show parameters log_archive_dest
NAME TYPE VALUE
-----------------------------------------------------------------------------
log_archive_dest_1 string location=USE_DB_RECOVERY_FILE_DEST,
valid_for=(ALL_LOGFILES, ALL_ROLES)
log_archive_dest_2 string service="ggs2d",
ASYNC NOAFFIRM delay=0 optional compression =disable max_failure=0
max_connections=1 reopen=300 db_unique_name="GGS2D" net_timeout=30,
valid_for=(online_logfile,all_roles)
提取参数 TRANLOGOPTIONS FAILOVERTARGETDESTID 将设置为 2,因为这是备用数据库 Oracle GoldenGate 应留下的位置。第一个条目 (log_archive_dest_1) 用于该数据库的本地归档日志,第二个条目用于备用数据库。
它将设置为 2,因为 Oracle GoldenGate 应滞后于备用数据库。第一个条目 (log_archive_dest_1) 用于该数据库的本地归档日志,第二个条目用于备用数据库。
FETCHPARTIALJSON
对 MySQL 的提取有效
在“提取”参数文件中使用此选项直接从表中提取数据(如果对表的 JSON 数据类型列进行了部分更新)。注意:处理 JSON 列数据更新取决于 MySQL 服务器变量 binlog_row_value_options 的值,该值需要设置为 PARTIAL_JSON,提取参数文件包括 FETCHPARTIALJSON 参数。
FETCHPARTIALLOB
在 Oracle 的集成捕获模式下对提取有效。
复制到异构目标时或在需要完整 LOB 映像的其他情况下使用此选项。它会导致 Extract 提取完整的 LOB 对象,而不是使用重做记录中的部分更改对象。默认情况下,数据库日志挖掘服务器会发送提取完整或部分 LOB,具体取决于源 LOB 的全部或部分更新。要确保 LOB 的正确快照,必须为表启用 Oracle Flashback 功能,并且必须将 Extract 配置为使用它。提取 FETCHOPTIONS 参数控制提取,并且必须设置为 USESNAPSHOT(在缺少 NOUSESNAPSHOT 时为默认值)。如果没有闪回快照,Extract 将从表中获取 LOB,这可能是与生成重做记录时的时间点不同的映像。
FETCHPARTIALXML
在集成捕获模式 Oracle 中对提取有效。
复制到异构目标时或在需要完整 LOB 映像的其他情况下使用此选项。它会导致 Extract 提取完整的 XML 文档,而不是使用重做记录中的部分更改映像。默认情况下,数据库日志挖掘服务器会发送提取完整或部分 XML 文档,具体取决于源 XML 的全部或部分是否已更新。要确保 XML 的正确快照,必须为表启用 Oracle Flashback 功能,并且必须将 Extract 配置为使用它。提取 FETCHOPTIONS 参数控制提取,并且必须设置为 USESNAPSHOT(在缺少 NOUSESNAPSHOT 时为默认值)。如果没有闪回快照,Extract 将从表中获取 XML 文档,该文档可能与生成重做记录的时间点不同。
EXCLUDEFILTERTABLE <table>
对 MySQL、PostgreSQL 和 SQL 服务器的提取有效。
使用此选项可标识要筛选的源事务处理。如果源事务处理包括指定 EXCLUDEFILTERTABLE 的任何操作,则该事务处理将被标识为复制的事务处理。事务处理筛选基于标记。
当 Replicat 使用检查点表时,它会在其应用的每个事务的末尾在检查点表中写入恢复记录。考虑到 Replicat 应用的所有事务都包含对检查点表的更新,提取会忽略 Replicat 应用的整个事务,从而防止数据循环。对于 PostgreSQL 和 SQL 服务器,请确保已为检查点表添加 TRANDATA。
如果在双向复制中使用并行复制,则使用 TRANLOGOPTIONS EXCLUDEFILTERTABLE 选项支持多个过滤器表。多个过滤器表允许使用不同的表名或通配符多次指定 TRANLOGOPTIONS EXCLUDEFILTERTABLE。
您可以在提取参数文件中包括单个或多个 TRANLOGOPTIONS EXCLUDEFILTERTABLE 条目。在以下示例中,提取参数文件中包含多个具有显式对象名称和通配符的 TRANLOGOPTIONS EXCLUDEFILTERTABLE 条目。
TRANLOGOPTIONS EXCLUDEFILTERTABLE ggs.chkpt2
TRANLOGOPTIONS EXCLUDEFILTERTABLE ggs.chkpt_RABC_*
有关创建检查点表的信息,请参阅添加主要提取。要正确指定对象名称和通配符,请参见 Oracle GoldenGate Microservices 文档中的 Using Wildcards in Command Arguments 。
FORCEFETCHLOB
对 Oracle 提取有效。
覆盖从重做日志中捕获 LOB 数据的默认行为。默认情况下会从数据库中提取 LOB。
注意:如果在提取之前删除了某个值,则 Extract 会将空值写入线索。如果在提取之前更新了某个值,则提取将写入更新的值。为了防止这些不准确,请尝试保持提取延迟低。Oracle GoldenGate 文档提供了优化流程性能的准则。另外,有关设置提取选项的说明,请参见 Interactions Between Fetches from a Table and DDL 。
GETCTASDML | NOGETCTASDML
启用“创建表为选择”(CTAS) 功能。启用 GETCTASDML 时,将从 LogMiner 发送 CTAS DML 并将其复制到目标上。默认情况下将启用此选项。将禁止在目标上执行 CTAS DDL。
HANDLEDLFAILOVER [ STANDBY_WARNING <value> | STANDBY_ABEND <value>]
对 Oracle 提取有效
STANDBY_WARNING 和 STANDBY_ABEND 对 Oracle Database 21c 及更高版本有效。
控制提取是否将根据快速启动故障转移备用数据库的应用进度限制其线索数据的写入。它旨在将 Extract 保持在任何数据丢失故障转移后的安全点。
在没有快速启动故障转移 (Fast Start Failover,FSFO) 的 Data Guard 配置中使用此功能时,必须设置 FAILOVERTARGETDESTID 提取参数,以标识归档日志目标 ID 可连接到备用数据库的位置。
提取查询备用数据库应用 SCN 信息 (SELECT applied_scn FROM v$archive_dest where dest_id=n) 并且此 SCN 小于提取处理 LCR SCN 时,发现提取处于停滞状态。在这种情况下,提取不会处理 LCR,并等待 applied_scn 变得大于或等于提取处理 LCR SCN。
STANDBY_WARNING <value>
如果提取已停滞,则将警告消息写入提取报告文件之前的时间量。默认值为 60 秒。
STANDBY_ABEND <value>
提取异常终止之前的时间量(如果提取已停滞)。默认值是 30 分钟。
如果同时指定了 STANDBY_WARNING 和 STANDBY_ABEND,则 STANDBY_ABEND 应始终大于 STANDBY_WARNING。
IFILOCKSECONDS <seconds>
对 Db2 z/OS 有效
设置以 <seconds> 表示的间隔,其中提取通过调用 IFCID 来保存数据库中保留的隐式锁
- 锁定可能会影响执行某些数据库操作(例如
REORGS)的能力。默认值为 20 秒,最小值和最大值分别为 1 秒和 300 秒。注意:如果将IFILOCKSECONDS参数设置为较长的持续时间,则其他数据库操作(如REORGS)可能会受到影响,因为提取 IFI 调用导致内部锁定。因此,如果与提取相关的任何锁定争用发生,请将操作的锁定超时设置为比IFILOCKSECONDS参数值更长的持续时间,或关闭提取。
IGNOREDATACAPTURECHANGES |
NOIGNOREDATACAPTURECHANGES |
对 Db2 LUW 有效
控制提取是否捕获未设置 DATA CAPTURE CHANGES 的表。IGNOREDATACAPTURECHANGES 将忽略未为其设置 DATA CAPTURE CHANGES 的表。在指定了带有通配符的表时使用,以确保对具有更改捕获集的表继续进行处理。对于跳过的表,会向错误日志发出警告。默认值为 NOIGNOREDATACAPTURECHANGES。
INCLUDEREGIONID |
INCLUDEREGIONIDWITHOFFSET |
对 Oracle 提取有效。
这些选项支持指定为 TZR(表示时区区域,例如 US/Pacific)的 Oracle 数据类型 TIMESTAMP WITH TIME ZONE。默认情况下,如果 Extract 包含时区区域,则会在 TIMESTAMP WITH TIME ZONE 上异常终止。这些选项使您能够根据目标数据库类型处理此时间戳。
当 Extract 检测到源数据类型为 TIMESTAMP 并且存在区域 ID 映射标记时,Replicat 将按如下方式应用时间戳:
-
A
TIMESTAMP WITH TIME ZONEwithTZRis applied if the target Oracle version supports it. -
带有 UTC 偏移量的时间戳将应用于异构数据库,或应用于不支持带有
TZR的TIMESTAMP WITH TIME ZONE的 Oracle 早期版本。
INCLUDEREGIONID
对 Oracle 的集成提取有效。
Oracle GoldenGate 19c (19.1.0) 的 INCLUDEREGIONID 已过时。从 Oracle GoldenGate 19c (19.1.0) 开始,默认情况下包括包含区域 ID 数据的 TIMESTAMP WITH TIME ZONE(包括初始加载)。
从 Oracle 源复制到相同版本或更高版本的 Oracle 目标时使用。指定 INCLUDEREGIONID 时,Extract 将添加列索引和双字节 TMZ 值作为时区映射标记,并以 UTC 格式 YYYY-MM-DD HH:MI.SS.FFFFFF +00:00 将其输出到线索。
INCLUDEREGIONIDWITHOFFSET
对 Oracle 的集成提取有效。
使用此选项可将区域 ID 转换为小时和分钟偏移值(以 +06:00 为例)。如果未指定该选项,则始终将时间戳写入 UTC 中的线索文件,并且时区始终为 +00:00。
如果需要以小时和分钟为单位保留时区值,而不是 UTC,则可以使用此选项。
在以下情况下,将强制启用该选项以保留 <offset> 小时和分钟中的 TIMEZONE <value>:
-
旧线索文件格式,因为复制不支持区域
ID。 -
XML、TEXT和SQL格式,因为它们不支持区域ID。
INCLUDETAG {<tag>| +}
对提取有效。(仅限 Oracle)
使用 INCLUDETAG <tag> 可在线索文件中包括特定标记的 DDL 操作。标记值最多可为 2000 个十六进制数字 (0-9 A-F)。
为避免冲突,请勿将 INCLUDETAG 与 EXCLUDETAG 结合使用。
示例:tranlogoptions includetag 00
LOB_CHUNK_SIZE
对 SQL Server 有效,PostgreSQL。
如果您有巨大的 LOB 数据大小,则可以将 LOB_CHUNK_SIZE 从 4000 字节的默认值调整为最高为 65535 字节的较高值,以便增加提取大小,从而减少提取整个 LOB 所需的行程
示例:TRANLOGOPTIONS LOB_CHUNK_SIZE 8000
(PostgreSQL) 指定将用于在 COM 中推送的 LOB (CLOB/BLOB) 数据的块大小。它的单位为字节。最小和最大 lob_chunk_size 值介于 4000 到 65535 字节之间。
LOGREADTIMEOUT
对 PostgreSQL 版本 12 及更高版本的提取有效。
启用或禁用 WAL 发送器进程的 wal_sender_timeout 选项。
value 选项只能是整数值,默认值为 60000 毫秒。最大值为 2147483647 毫秒,最小值为 0 毫秒。
INTEGRATEDPARAMS (<parametervalue> [, ...])
在 Oracle Standard 或 Enterprise Edition 12c 或更高版本的集成捕获模式下对提取有效。
提取处于集成捕获模式时,将参数和值传递到 Oracle AI Database 日志挖掘服务器。输入必须采用 <parameter value> 的形式,如下所示:
TRANLOGOPTIONS INTEGRATEDPARAMS (downsream_real_time_mine Y)
有效的参数规范及其值如下:
max_sga_size
指定数据库日志挖掘服务器使用的 SGA 内存量。可以是正整数(以 MB 为单位)。如果 streams_pool_size 大于 1 GB,则默认值为 1 GB;否则,为 streams_pool_size 的 75%。
parallelism
指定支持数据库日志挖掘服务器的进程数。可以是正整数。默认值为 2。
downstream_real_time_mine
指定集成捕获是否在实时模式下挖掘下游挖掘数据库。值 Y 指定实时捕获,并要求在下游挖掘数据库中配置备用重做日志。值 N 指定从发送到下游挖掘数据库的归档日志中捕获。默认值为 N。
enable_procedural_replication
启用捕获时的过程复制。默认情况下,会禁用过程复制。值为 Y 将启用过程复制。为提取打开此选项后,该选项将保持打开状态。无法切换参数值。
MANAGESECONDARYTRUNCATIONPOINT |
NOMANAGESECONDARYTRUNCATIONPOINT |
对 PostgreSQL 有效。
MANAGESECONDARYTRUNCATIONPOINT 是缺省设置,用于控制特定提取的复制插槽的 restart_lsn。
NOMANAGESECONDARYTRUNCATIONPOINT 不会移动提取的复制插槽,并且通常仅用于开发和测试目的,其中提取需要从提取的恢复 LSN 重新定位到早期的 LSN。如果使用,PostgreSQL 预写日志将继续增长并占用磁盘空间。
MAXAUTOCMTTRANSSIZE (<range>, <default>)
仅对 i 有效 DB2
提供最大自动通信事务处理大小的范围。
Db2 for i autocommited records(日记帐分录的 CCID 等于 0)在日记帐中没有提交记录,因此 Oracle GoldenGate 必须创建隐式事务处理,才能将这些记录包括在线索中。默认值允许单个记录包含在单个事务处理中,这会维护每个记录的指定 IO 时间的准确性,因为 IO 时间基于事务处理的提交。
此参数设置将包括在隐式创建的事务处理中的最大记录数,但如果在达到最大值之前在日记账中看到任何其他类型的条目,则该数量可能会更少。此响应可避免属于显式提交记录的记录上的检查点出现重叠问题。
将此参数的值设置为 1(解散)将为自动提交(在日记账分录中为 CCID 为 0)的记录中的每条记录提供准确的 IO 时间,而这可能会牺牲提取的吞吐量。此参数的值还会影响内存中这些记录的高速缓存事务处理的最大潜在大小。如果提取能够存储每个隐式事务处理的最大条目数,则将其设置为较低的值将导致事务处理内存降低。根据定义,在任何给定时间内存中只能存在一个此类隐式事务处理,因为任何其他事务处理记录都将导致立即提交到内存中已隐式事务处理中任何记录的线索。
默认范围介于 1 到 10000 之间,默认值为 1。
MININGUSER {/ | <useridalias> [<algorithm> ENCRYPTKEY {<key_name> | DEFAULT}] [SYSDBA]]
对 Oracle 的 Oracle GoldenGate 提取有效。
指定用于提取的登录身份证明以登录到下游 Oracle 挖掘数据库以与日志挖掘服务器交互。如果未使用 Oracle GoldenGate 身份证明存储,则可以使用 MININGUSERIDALIAS 选项。
此用户必须:
-
具有在
OGG_CAPTURE和OGG_APPLY角色中授予的 Oracle GoldenGate 26ai 及更高版本的权限。对于 Oracle Database 21c,必须应用dbms_goldengate_auth.grant_admin_privilege中授予的权限。 -
为与此
MININGDBLOGIN USERIDALIAS.关联的提取组发出MININGDBLOGIN、MININGDBLOGIN USERIDALIAS和REGISTER EXTRACT或UNREGISTER EXTRACT命令的用户 -
不可更改。
/
指示 Oracle GoldenGate 对 Oracle 使用操作系统登录,而不是数据库用户登录。仅当数据库允许在操作系统级别进行验证时,才使用此参数。如果应用程序密码频繁更改,则绕过数据库级验证无需更新 Oracle GoldenGate 参数文件。
要使用此选项,数据库中必须存在匹配的用户名(与 Oracle OS_AUTHENT_PREFIX 初始化参数的值相关)。带有 OS_AUTHENT_PREFIX 的值集与用户的操作系统帐户名称的开头连接,然后与数据库名称进行比较。这两个名字必须匹配。
当 OS_AUTHENT_PREFIX 设置为‘‘(空字符串)时,必须使用 IDENTIFIED EXTERNALLY 创建用户名。例如,如果 OS 用户名为 ogg,则应使用以下命令创建数据库用户:
CREATE USER ogg IDENTIFIED EXTERNALLY;
当 OS_AUTHENT_PREFIX 设置为 OPS$ 或其他字符串时,必须按以下格式创建 <user> 名称:
<OS_AUTHENT_PREFIX_value><OS_user_name>
例如,如果 OS <user> 名称为 ogg,则应使用以下命令创建数据库 <user>:
CREATE USER ops$ogg IDENTIFIED BY oggpassword;
<user>
指定挖掘数据库用户的名称或 SQL*Net 连接字符串。
<password>
用户口令。需要数据库验证来指定数据库用户的口令时使用。如果密码已通过 ENCRYPT PASSWORD 命令加密,则提供加密密码;否则提供明文密码。如果密码区分大小写,则按原样键入。如果用户 ID 或密码更改,则必须在 Oracle GoldenGate 参数文件中进行更改,包括必要时重新加密密码。
<algorithm>
指定用于使用 ENCRYPT PASSWORD 加密 <password> 的加密 <algorithm>。可以是以下一项:
AES128
AES192
AES256
ENCRYPTKEY {<key_name> | DEFAULT}
指定使用 ENCRYPT PASSWORD 指定的加密密钥。
-
在
ENCKEYS查找文件中,ENCRYPTKEY <key_name>指定用户创建的加密密钥的逻辑名称。在ENCRYPT PASSWORD与KEYNAME <key_name>选项结合使用时使用。 -
ENCRYPTKEY DEFAULT指示 Oracle GoldenGate 使用随机密钥。在ENCRYPT PASSWORD与KEYNAME DEFAULT选项结合使用时使用。
SYSDBA
指定用户以 sysdba 身份登录。
MININGUSERIDALIAS <alias>
对 Oracle 提取有效。
指定提取用于登录到下游 Oracle 挖掘数据库以与日志挖掘服务器交互的登录身份证明的别名。如果使用 Oracle GoldenGate 身份证明存储,则可以使用 MININGUSER。
此别名必须:
-
与本地 Oracle GoldenGate 身份证明存储中存储的数据库用户登录身份证明关联。此用户必须具有
dbms_goldengate_auth.grant_admin_privilege中授予的 Oracle Database 21c 及更低版本的权限,以及 Oracle AI Database 26ai 及更高版本的OGG_CAPTURE和OGG_APPLY角色。 -
为与此
MININGUSERIDALIAS.关联的 Extract 组发出MININGDBLOGIN、MININGDBLOGINALIAS和REGISTER EXTRACT或UNREGISTER EXTRACT命令的用户
提取处于集成捕获模式时,不能更改此别名和用户。
MIXEDENDIAN [ON |
OFF] |
对具有 Oracle GoldenGate 主提取的 Db2 LUW 有效
Oracle GoldenGate Extract for Db2 LUW 支持在不同字节顺序服务器上运行数据库和 Oracle GoldenGate 的跨端捕获。对于 Db2 LUW 数据库版本 10.5 及更高版本,自动检测字节顺序。如果需要对 Db2 LUW 10.5 禁用自动检测,则可以通过指定此参数来覆盖它。对于版本 10.1,该参数必须用于跨 Endian 捕获的提取参数文件。默认情况下,版本 10.1 的值设置为 OFF。
语法:
TRANLOGOPTIONS MIXEDENDIAN [ON|OFF]
ON:如果设置了此项,则提取将假定数据库和 Oracle GoldenGate 在具有不同字节顺序的服务器上运行,并且执行必要的字节反转转换。
OFF:如果已设置此项,则提取将假定数据库和 Oracle GoldenGate 在具有相同字节顺序且不执行字节顺序反转转换的服务器上运行。
MANAGECDCCLEANUP |
NOMANAGECDCCLENUP |
对 SQL 服务器有效。
MANAGECDCCLEANUP 是默认的建议设置,指示提取根据 Oracle GoldenGate 的体系结构和版本验证是否存在 Oracle GoldenGate CDC 清除作业或清除更改数据任务。
对于所有 Oracle GoldenGate 经典体系结构版本以及 Oracle GoldenGate 21.4 之前的微服务版本,请使用 ogg_cdc_cleanup_setup.bat/sh 程序安装 Oracle GoldenGate CDC 清除作业以及关联的表和存储过程。
对于 Oracle GoldenGate Microservices 21.4 及更高版本的安装,请从 WebUI 管理服务的“配置”部分中的“任务”页创建“清除更改数据”任务。“清除更改数据”任务创建所需的存储过程和关联的表,并处理 Oracle GoldenGate 中的清除功能,而不是通过 SQL Server Agent 作业。
NOMANAGECDCCLEANUP 选项指示 Extract 不检查是否存在 Oracle GoldenGate CDC 清除作业或清除更改数据任务。这不是生产环境的建议选项,但可用于测试提取,而不必创建 Oracle GoldenGate CDC 清除作业或任务。
PERFORMANCEPROFILE HIGH |
MEDIUM |
LOW_RES |
LOW_WORKLOAD |
在集成捕获模式下对提取有效。
用于优化集成捕获。
可以将其设置为 HIGH、MEDIUM(默认值)或 LOW_RES。它通过对影响性能的参数进行分组来帮助实现更好的性能。设置性能配置文件后,此选项会自动配置相关参数,以实现所需的吞吐量和延迟。
-
HIGH选项允许在端到端复制方面更高效地处理具有连续吞吐量的高工作量。HIGH选项将线索文件缓冲区大小增加到 4 MB,并将文件结尾和刷新选项值减小到 0.1 秒。 -
MEDIUM选项将线索文件缓冲区大小设置为 1 MB,将文件末尾延迟和刷新值设置为 1 秒。 -
LOW_RES选项适用于资源较低且已为内存或资源受限部署添加的资源。 -
LOW_WORKLOAD选项与 Oracle GoldenGate 一起使用,适用于工作负载较低的 Oracle AI Database 环境,但延迟必须以子秒为单位。
如果为中低强度工作负荷启用了 HIGH 选项,则将集成的提取延迟提升到几秒钟。这是因为 HIGH 选项将提取的读取缓冲区大小增加到 8MB。但是,刷新提取读取缓冲区的规则是在缓冲区已满或 0.2 秒内没有传入记录时。因此,提取摄取速率低于 8MB 的任何连续工作负载都将导致集成提取延迟超过 1 秒。确保如果提取摄取速率(或重做生成速率(如果捕获的重做为 100%)低于指定值(例如 ~15 MB/秒以获得 ~0.5 秒的提取延迟),不要使用 HIGH 选项。如果需要亚秒延迟,建议相应地减小缓冲区大小。例如,将缓冲区大小设置为重做生成速率的三分之一(以 MB/秒为单位),以获得大约 0.3 秒的最大提取延迟。
QUERYTIMEOUT <seconds>
对 SQL 服务器有效。
指定查询到 SQL 服务器将在多长时间内等待结果,然后再报告超时错误消息。此选项接受一个整数值来表示秒数。默认查询超时值是 300 秒(5 分钟)。最小值为 0 秒(无限超时)。最大值是 2147483645 秒。
以下示例指示 SQL 服务器在超时之前等待 60 秒查找结果。
TRANLOGOPTIONS QUERYTIMEOUT 60
QUERYRETRYCOUNT <seconds>
对 SQL 服务器和 MySQL 的提取有效。
指定在结果集超时时重试对提取使用的 CDC 存储过程的调用次数。
可以指定 QUERYRETRYCOUNT 以重试多次。如果所有重试尝试均失败,提取将异常终止,并显示正常连接超时错误消息。
对于 SQL 服务器,默认值为一次重试尝试,之后进程 abends.The 最小设置 (0) 为无限,最大值为 1000,默认值为 1。
对于 MySQL,最小和默认设置为 50,最大设置为 1000。没有无限的价值。将 QUERYRETRYCOUNT 设置为小于最小值的任何尝试都将被忽略,不会出现错误或警告。
以下示例导致 Extract 尝试其 CDC 存储过程调用 4 次:
TRANLOGOPTIONS QUERYRETRYCOUNT 4
以下示例导致 Extract 尝试其 CDC 存储过程调用 100 次:
TRANLOGOPTIONS QUERYRETRYCOUNT 100
READQUEUESIZE <size>
对 MySQL 有效。
指定事务处理数据的内部队列大小(字节)。它可以提高性能。有效值为从 3 到 1500 的整数。缺省值为 256 字节;从缺省值开始计算性能,然后再向上调整。
REDO_TRANSPORT_LAG_THRESHOLD <seconds>
适用于下游采矿模式的集成提取。
传送重做日志时,监视源数据库与目标数据库之间的网络延迟。如果延迟超过指定的阈值,则报告文件中将显示警告,当延迟降到正常级别时,将显示后续信息消息。
缺省阈值为 30 秒。可以指定的最小阈值是 15 秒。
有关更多信息,请参见 Downstream Extract
REDO_TRANSPORT_LAG_TIMEOUT <value>
适用于下游采矿模式的集成提取。
此参数选项中作为输入提供的值是提取将等待每个线程重做的时间段。如果所有线程都已等待超时(以秒为单位),并且尚未收到任何重做,则提取将异常终止。
REQUIRELONGDATACAPTURECHANGES |
NOREQUIRELONGDATACAPTURECHANGES |
对 Db2 LUW 有效。
(DB2 LUW) 控制以下情况下 Extract 的响应:DATA CAPTURE 设置为 NONE 或者设置为 CHANGES 但没有 INCLUDE LONGVAR COLUMNS,并且参数文件中包含对部分或全部列值需要存在前像的以下任意 Oracle GoldenGate 参数:GETBEFOREUPATES,NOCOMPRESSUPDATES 和 NOCOMPRESSDELETES。这两个 DATA CAPTURE 设置都阻止记录 LONGVAR 列的之前值。如果这些列不可用于提取,则可能会影响目标数据的完整性。
REQUIRELONGDATACAPTURECHANGES
提取异常终止并出现错误。
NOREQUIRELONGDATACAPTURECHANGES
提取发出警告,但继续处理数据记录。
REMOTESCHEMA <value>
对 Db2 z/OS 提取有效。
将多个版本的 Oracle GoldenGate 用于 Db2 z/OS Extract 时,必须在 Db2 z/OS 中的不同方案名称下创建多个版本的 GoldenGate Extract 组件。REMOTESCHEMA 参数用于指示提取要使用的方案。
有关详细信息,请参阅 Oracle GoldenGate Microservices Documentation 中的 Install Extract Components on Db2 z/OS 。
SOURCE_OS_TIMEZONE <timezone>
在 Oracle 的集成捕获模式下对提取有效。
指定源数据库的系统时区。数据库的系统时区通常由其操作系统的默认时区指定,也可以通过在数据库启动时设置 TZ 环境变量来覆盖。仅当源数据库和提取处理使用不同的系统时区时,才应指定此选项。例如,在下游捕获部署中,源数据库和提取进程在不同时区的不同服务器上运行。
您可以在时区区域名称或 UTC 偏移表单中指定此选项的值,并且必须使用源数据库使用的相同表单。例如,如果源数据库使用区域名称表单(如 America/New_York),则必须指定 America/New_York、US/Eastern 或 EST5EDT。或者,如果源数据库使用类似于 -05:00 的 UTC 偏移形式,则必须使用语法 (GMT)[+|-]hh[:mm]。例如,GMT-05:00 或 -5。
SKIPUNKNOWNEVENT
对 MySQL 有效。
您可以在提取参数文件中使用此参数,以允许跳过 MySQL 二进制日志中的任何未处理或未知事件。如果指定了此参数,则 Oracle GoldenGate for MySQL Extract 在查找当前提取进程未处理的事件时会继续进行处理,不会出现任何错误。
STREAMINGOPTIONS
对 PostgreSQL 有效。
使用此参数提供复制启动期间所需的参数。另请参阅 Oracle GoldenGate Microservices 文档中的注册 PostgreSQL 提取。
例如:
TRANLOGOPTIONS STREAMINGOPTIONS (publication_names="my*123,my_publication2, my_publication";)
SUPPRESSNOOOPUPDATES
在 Oracle AI Database 上对提取有效。
您可以控制是否在集成提取中筛选不操作更新。缺省值为 no suppression。
TRACKSCHEMACHANGES |
NOTRACKSCHEMACHANGES |
对 Db2 z/OS 和 MySQL 有效
对于适用于 Db2 z/OS 的 Oracle GoldenGate,此参数使 Extract 能够捕获表级别 DDL 语句,并保留在日志记录引用早于表当前版本的表版本时用于处理 DML 的更改的历史记录。这通常是在更新映像之前,但如果提取在日志积压的滞后情况下运行,则可能是在映像、插入或删除之后。当 Extract 遇到相应的 DDL 操作时,它将记录 DDL 的版本号并使用新信息更新 DDL 历史记录表。提取将创建一个新的 TDR 记录,该记录也与线索中的更改相关。当 Extract 遇到日志中表的早期版本时,它将引用 DDL 历史记录,以便能够正确解释表的早期版本的 DDL。DDL 更改实际上未被复制,对源表的任何更改的同步仍需要由用户在目标数据库中手动执行。
输入此命令时,它将允许提取跟踪表级 DDL 更改,并根据需要更新线索元数据。要正确使用 TRACKSCHEMACHANGES,表元数据必须处于已知的一致状态,这意味着在使用 TRACKSCHEMACHANGES 之前,必须创建需要版本跟踪的所有表,并且必须从不更改或重组这些表,以便更新或删除操作时不会在事务处理日志中显示以前的表版本。已提供脚本 ddl_update.sh 以协助创建数据库的初始 DDL 历史记录集。
要使用 DDL 处理,需要使用历史记录表设置数据库,该表将捕获数据库系统上所有表的各个版本的 DDL 更改。还需要为数据捕获更改启用系统表。要创建和维护历史记录表,提供了以下 UNIX shell 脚本:
-
ddl_create.sh:此脚本用于创建DDL历史记录表。它还允许对以下系统表进行数据捕获更改:-
SYSIBM.SYSTABLES -
SYSIBM.SYSCOLUMNS -
SYSIBM.SYSINDEXES -
SYSIBM.SYSKEYCOLUSE
示例:
./ddl_create.sh -f crt_ddl_hist.sql -s OGGSCHEMA在此示例中,生成的文件
crt_ddl_hist.sql必须由其他程序处理。./ddl_create.sh -d DB2DSXY -u gguser -p ggpw -s OGGSCHEMA这将调用本地 Db2 以建立与大型机数据库的远程连接,从而立即创建
DDL历史记录表。 -
-
ddl_remove.sh:此脚本用于删除DDL历史记录表。但是,系统表不会更改。 -
ddl_update.sh:应运行此脚本,以使用TRACKSCHEMACHANGES为DDL版本跟踪建立初始起点。它必须在创建DDL历史记录表后运行,并且不需要再次运行,除非必须重新定位提取,以使其在事务处理日志中可能遗漏表版本。重新运行 ddl_update.sh 将仅为DDL历史记录中尚未存在的表添加信息。 -
execsql.sh:此脚本不应直接运行,但必须可供要寻源的其他脚本使用。它提供了用于解析命令行和执行SQL或将其写入文件的通用工具。
这些脚本可用于直接使用 Db2 连接创建表,也可以用于创建可在所选的 SQL 处理程序中运行的 SQL 文件。已检查这些文件是否与 Db2 remote 和 SPUFI 兼容。
下面是这些脚本接受的选项的说明:
-
-h显示了此用法帮助。 -
-d dsn指定要连接到的 Db2 DSN。 -
-u userid指定要连接到数据库的用户ID。 -
-p password指定用于连接到数据库的密码。 -
-s ggschema指定DDL历史记录表应存储到的方案的名称。此方案应与GLOBALS中的GGSCHEMA相同。 -
-t ddltable指定DDL历史记录表的表的名称。缺省值为GGS_DDL_HIST。 -
-f outfile指定要将SQL语句写入的文件的名称,而不是执行这些语句。如果使用-d、-u、-p,则必须全部指定(如果使用)或-f。当前不应使用-t。如果只有db2cli命令在远程主机上可用,则必须使用-f,因为db2cli无法运行生成的SQL语句。
对于 Oracle GoldenGate for MySQL,捕获和交付支持 DDL 复制。启用 DDL 复制时,Extract 会检测源数据库表的 DDL 操作,处理 DDL 语句,刷新表元数据并将 DDL 语句和元数据写入线索文件。Replicat 将这些 DDL 操作应用于 MySQL 目标数据库,并从线索中选取新版本的元数据,并处理后续的 DML 操作。整个过程是无缝的,不涉及停机时间,但这仅适用于类似场景(如 MySQL 到 MySQL)。
TRACKSCHEMACHANGES 参数可用于在源表上执行 DDL 操作后捕获表元数据更改,以便捕获能够在没有任何停机时间的情况下处理后续 DML 操作。启用 TRACKSCHEMACHANGES 时,捕获会将新的 TDR 记录写入包含每个 DDL 操作上的新元数据的线索,后跟相应的数据。Capture 不会处理 DDL 语句并将其写入线索文件,因此 DDL 更改不会实际复制到目标数据库。需要在目标数据库中手动执行与源对应的任何 DDL 更改的同步。使用此功能的好处是,与 DDL 复制不同,TRACKSCHEMACHANGES 可用于跨数据库复制方案,例如 MySQL 到 Db2 z/OS。
下面是使用命令 TRANLOGOPTIONS TRACKSCHEMACHANGES 时的注意事项:
-
默认情况下,从 Oracle GoldenGate 23.7 开始启用
TRACKSCHEMACHANGES参数。因此,默认情况下也会捕获修改后的元数据。 -
DDL和TRACKSCHEMCHANGES不冲突。如果启用了DDL,则会捕获并处理DDL。 -
要捕获方案更改,用户需要在提取参数文件中显式启用
TRACKSCHEMACHANGES。 -
如果 MariaDB 和 MySQL 上的
binlog_row_metadata不是FULL,则禁用TRACKSCHEMCHANGES,并显示提取报告文件中的以下警告消息:"Schema change tracking has been disabled because the MySQL system variable binlog_row_metadata is set to MINIMAL. The metadata recorded in the MySQL binlog is insufficient for schema change tracking and may result in data discrepancies. It is recommended to set it to FULL." -
使用
TRANLOGOPTIONS NOTRACKSCHEMACHANGES参数选项可以禁用方案跟踪。但是,建议不要关闭方案跟踪。如果禁用方案跟踪,则提取报表中将发出警告消息,如下所示Schema change tracking has been disabled because TRANLOGOPTIONS NOTRACKSCHEMACHANGES is specified in the Extract parameter file. It is recommended to enable the schema change tracking. To enable the schema tracking, set the MySQL system variable binlog_row_metadata to FULL and remove the parameter TRANLOGOPTIONS NOTRACKSCHEMACHANGES from the extract parameter file. -
尽管默认情况下启用了
TRACKSCHMEACHANGES,但如果在提取参数文件中未启用DDL和TRACKSCHMEACHANGES,并且提取找到了CREATE TABLE AS SELECT,则会忽略处理DDL操作CREATE TABLE,并且提取会捕获关联的DML(INSERT) 操作。在处理此类表的 DML 时,目标复制将异常终止,因为表
DDL未复制到目标。在这种情况下,需要手动创建目标中的表,方法是仅发出
CREATE TABLE操作,而不是发出CREATE TABLE AS SELECT操作。 -
如果在提取参数文件中未启用
TRACKSCHEMACHANGES或DDL,并且对属于提取列表的特定表执行了DDL操作,则提取将异常终止。 -
如果在提取参数文件中未启用
TRACKSCHEMACHANGES或DDL,并且对不属于捕获列表的特定表执行了DDL操作,则提取不会异常终止
TRANCOUNT
对 SQL 服务器有效。
允许调整提取为从 SQL 服务器更改数据捕获准备表中提取数据而每次调用的事务处理数。根据您的事务处理工作量,调整此值可能会提高捕获速率吞吐量。最小值为 1,最大值为 100,默认值为 10。
示例:
TRANLOGOPTIONS TRANCOUNT 20
此示例指示 Extract 一次从启用更改数据捕获的表提取 20 个事务处理。
[TSLOOKUPBEGINLRI |
TSLOOKUPENDLRI] |
对 Db2 LUW v 10.1 及更高版本有效。
使用这些参数指定 LRI 范围时,Extract 将查找在此范围内 ADD 或 ALTER EXTRACT 命令中指定的时间戳。这有助于提取优化数据库事务处理日志中特定时间戳的查找过程。TSLOOKUPBEGINLRI 参数是必需的,而 TSLOOKUPENDLRI 是可选的。仅指定不带 TSLOOKUPBEGINLRI 的 TSLOOKUPENDLRI 无效,这将导致提取异常终止。例如:
TRANLOGOPTIONS TSLOOKUPBEGINLRI 75200.666197, TSLOOKUPENDLRI 75207.666216
TRANLOGOPTIONS TSLOOKUPBEGINLRI 75200.666197
如果提供的时间戳介于给定 LRI 范围之间,或者提供的时间戳在 TSLOOKUPBEGINLRI LRI 时间戳之后,则提取从时间戳等于或小于提供的时间戳的记录开始。
如果提供的时间戳在 TSLOOKUPBEGINLRI LRI 时间戳之前,则从指定的 TSLOOKUPBEGINLRI LRI 启动提取。如果提供的时间戳在 TSLOOKUPENDLRI 时间戳之后,则提取异常终止。
USENATIVEOBJSUPPORT |
NOUSENATIVEOBJSUPPORT |
在 Oracle 的集成捕获模式下对提取有效。
集成捕获可为用户定义类型 (UDT) 和 ANYDATA 数据类型添加基于重做捕获。默认情况下,它处于启用状态,并且只能在源数据库版本为 12.1.0.1 或更高版本且源数据库兼容性为 12.0.0.0 或更高版本时启用。必须使用 Oracle GoldenGate 发行版 12.1.2.1.0 中的复制。要使用原生支持,您的所有 Oracle AI Database 和 Oracle GoldenGate 实例必须版本 12.1.0.1 或更高版本才能兼容。
如果启用了基于重做捕获,但 UDT 包含不支持的属性,则 Integrated Capture 将尝试使用提取捕获 UDT。有关对捕获的支持限制,请参见 XML Data Types 。如果使用 CREATE TABLE AS SELECT (CTAS) 语句创建对象表,则必须将 Integrated Capture 配置为从 CTAS 操作捕获 DML,以便完全支持对象表。对于 CTAS,请参阅 Oracle GoldenGate 微服务文档中的Oracle GoldenGate 如何处理派生对象名称
如果支持,默认值为 USENATIVEOBJSUPPORT。
在 Oracle Extract 参数文件中启用 TRANLOGOPTIONS NOUSENATIVEOBJSUPPORT 参数,以将 UDT 数据捕获为线索文件中的 XML 数据。然后,此数据可以应用于接受 XML 数据(如 CLOB/TEXT/CHAR/VARCHAR 等)的任何目标列。
USE_ROOT_CONTAINER_TIMEZONE
仅对 Oracle 集成提取有效。
此参数用于 CDB 环境。CDB 中的每个 PDB 都可以使用不同的数据库时区。如果数据库时区可用,则 Extract 将尝试从 Integrated Dictionary 中获取 PDB 的时区。时区提取需要挖掘数据库上的修补程序。如果补丁程序不可用,则 Extract 会向 PDB 发送查询以获取时区。如果数据库补丁程序或与 PDB 的连接不可用且指定了此参数,则 Extract 假定 PDB 数据库时区与根容器数据库时区相同。
VERSIONCHECK DYNAMIC |
IMMEDIATE |
这对 SQL 服务器有效。
当您希望 Extract 在启动时验证常见存储过程(例如 OracleCDCExtract 和 OracleGGCreateProcs)的 CDC 对象版本时,使用此选项。
DYNAMIC(默认值)在处理记录时为每个表标识在参数文件中指定的表的 CDC 对象版本一次。
IMMEDIATE 会提前识别 CDC 对象版本问题,而不是在处理记录时。为捕获配置了大量表的数据库需要更长的启动验证时间。
WARNCREATEASSELECT
这适用于 MySQL 的提取。
不支持 DDL 操作 CREATE TABLE AS SELECT,并且 Oracle GoldenGate Extract for MySQL 在遇到此 DDL 时异常终止。提取首次异常终止时,将出现类似于以下内容的错误:
DDL statement "CREATE TABLE AS SELECT" is detected for table <table-name> at binary log
number <binlog number> and offset <binlog offset>. The DDL operation "CREATE TABLE AS SELECT"
is not supported. Execute all 'CREATE TABLE AS SELECT' DDL operations manually to the target
database and start Extract by adding Extract parameter TRANLOGOPTIONS WARNCREATEASSELECT. Once
Extract gets past the 'CREATE TABLE AS SELECT' operation, restart Extract after disabling the
parameter TRANLOGOPTIONS WARNCREATEASSELECT.
在提取 <parameter> 文件中使用 TRANLOGOPTIONS WARNCREATEASSELECT 设置时,提取在提取报告文件中发出以下警告消息后继续:
DDL statement 'CREATE TABLE AS SELECT' is detected for table <table-name> at binary
log number <binlog number> and offset <binlog offset>. The DDL operation 'CREATE TABLE AS SELECT' is not supported.
The DDL and the associated DMLs are ignored.