ADD SCHEMATRANDATA

对 Oracle 有效。

使用 ADD SCHEMATRANDATA 可以为表启用方案级别补充日志记录。ADD SCHEMATRANDATA 对给定方案中所有当前和将来的表执行操作的操作,以自动记录 Oracle GoldenGate 进行行标识所需的可用键的超集。

注:Oracle GoldenGate 23.6 不支持在方案级别为 JSON Relational Duality Views (JSON DV) 和 JSON Collection Tables (JCT) 启用逻辑复制。

要对多租户数据库的 PDB 中的方案执行 ADD SCHEMATRANDATA,您需要登录到 PDB 以发出命令。

ADD SCHEMATRANDATA 对提取有效,并执行以下操作:

默认情况下,ADD SCHEMATRANDATA 按以下优先级顺序记录表的键列:

  1. 主键

  2. (在没有主键的情况下)表的所有唯一键,包括已禁用、不可用或不可见的唯一键。此外,还会记录包含 ADT 成员列的唯一键。只有虚拟列(基于函数的索引)上的唯一键不会被记录。

  3. 如果以上都不存在,则记录表的所有标量列。(始终记录系统生成的行 OID。)

ADD SCHEMATRANDATA 还支持使用集成复制的条件或无条件日志记录要求。

在以下情况下使用 ADD SCHEMATRANDATA:

UsingADD SCHEMATRANDATA 的数据库级日志记录要求

Oracle 强烈建议在使用 Oracle GoldenGate 时,将源数据库置于强制日志记录模式,并在数据库级别启用最少补充日志记录。这样,在执行更新操作时,会将行链接信息(如果存在)添加到重做日志中。

UsingADD SCHEMATRANDATA 的其他注意事项

语法

ADD SCHEMATRANDATA schema
{
[ALLOWNONVALIDATEDKEYS]
[NOSCHEDULINGCOLS | ALLCOLS]}
[NOVALIDATE]
[PARTIALJSON]
[PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

schema

要为其记录补充键信息的方案。请不要使用通配符。要为多租户容器数据库的多个可插入数据库中的方案发出 ADD SCHEMATRANDATA,请使用 DBLOGIN 分别登录到每个可插入数据库,然后发出 ADD SCHEMATRANDATA。从根 conatiner 中,可以随容器前缀 ADD SCHEMATRANDATA [pdb_name].schema 添加 schemamatrandata

如果从 cdb$root 运行该命令,请确保还在数据库端设置以下用户权限:

ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;

ALLOWNONVALIDATEDKEYS

它在补充日志记录中包含 NON VALIDATED 和 NOT VALID 主键。这些键将覆盖 Oracle GoldenGate 使用的常规键选择标准。如果使用 GLOBALS 参数 ALLOWNONVALIDATEDKEYS,则无论是否指定,ADD SCHEMATRANDATA 都将与 ALLOWNONVALIDATEDKEYS 一起运行。默认情况下,不会记录 NON VALIDATED 和 NOT VALID 主键,请参见 GLOBALS ALLOWNONVALIDATEDKEYS 参数。

NOSCHEDULINGCOLS | ALLCOLS

这些选项用于控制 Oracle 目标数据库的补充日志记录。虽然将使用后一选项,但是可以结合使用这些选项。例如,对于 ADD SCHEMATRANDATA oggadm_ext ALLCOL NOSCHEDULINGCOLS 命令,将使用 NOSCHEDULINGCOLS 选项。

NOSCHEDULINGCOLS

禁用调度列的日志记录。默认情况下,ADD SCHEMATRANDATA 启用对给定方案中的所有当前和将来表的所有唯一键和外键的无条件日志记录,以及对其中所有当前和将来表的条件补充日志记录。无条件日志记录强制将主键值写入日志,无论该键在当前操作中是否已更改。如果在当前操作中至少更改了外键或唯一键之一,则条件日志记录将记录外键或唯一键的所有列值。集成复制主键、唯一键和外键都必须对入站服务器可用,才能计算相关项。

如果启用 auto_capture,则不使用此选项。这样就可以自动捕获此方案中的表,除非明确排除/禁用表(例如通过 TABLEEXCLUDE、DELETE TRANDATA 或 ALTER TABLE DISABLE LOGICAL REPLICATION DDL)。

ALLCOLS

对给定方案中所有当前和将来表的所有受支持键和非键列启用无条件补充日志记录。此选项支持记录计算相关项所需的键,以及筛选、冲突解决或其他目的所需的列。不包括 LOB、LONG 和 ADT 等列。

NOVALIDATE

对 ADD SCHEMATRANDATA 支持的所有数据库有效。

禁止显示有关 ADD SCHEMATRANDATA 正在处理的表的其他信息。默认情况下,此选项是启用的。其他信息处理会产生命令响应用时,因此,可以使用此选项增加响应时间。

PARTIALJSON

对 Oracle 有效。

在方案级别提取部分 JSON 更新。如果启用,重做将包含部分 JSON 记录。

另请参见 TRANLOGOPTIONS FETCHPARTIALJSON 参数。

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

对 Oracle 的 DML 和 DDL 都有效。

自动在源中准备表,以便 Oracle 数据泵导出转储文件将包含实例化 CSN。复制使用 Oracle 数据泵(在导入时)设置的按表实例化 CSN 以筛选出线索记录。在目标中,数据泵导入通过 DBOPTIONS ENABLE_INSTANTIATION_FILTERING 参数启用表级别实例化筛选,使用实例化 SCN 填充系统表和视图。

WAIT

等待任何正在运行的事务处理并准备表实例化。

LOCK

锁定表(以准备表实例化)。

NOWAIT

默认行为,实例化准备立即完成。

NONE

未进行实例化准备。

示例


以下示例为方案 hr 启用补充日志记录。

ADD SCHEMATRANDATA hr

以下示例记录名为 hr 的方案中所有当前和将来表所有受支持键和非关键字列。

ADD SCHEMATRANDATA hr ALLCOLS

以下示例禁止显示其他表信息处理。

ADD SCHEMATRANDATA hr NOVALIDATE