OGG常用命令(十三)–SCHEMATRANDATA

1、ADD SCHEMATRANDATA

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

要ADD SCHEMATRANDATA对多租户数据库的PDB中的架构执行操作,需要登录到PDB发出命令。

ADD SCHEMATRANDATA 对于集成和经典Extract均有效,并且执行以下操作:

为使用新建的表启用Oracle补充日志记录 CREATE TABLE。

更新受ALTER TABLE添加或删除列影响的表的补充日志记录 。

更新重命名表的补充日志记录。

更新为其添加或删除了唯一键或主键的表的补充日志记录。

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

首要的关键

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

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

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

使用ADD SCHEMATRANDATA在以下情况:

对于要配置为集成捕获的作为“提取”组一部分的所有表。ADD SCHEMATRANDATA 通过记录所有键来确保记录正确的键。

对于将在集成复制组中处理的所有源表。提供的选项可以记录主键,唯一键和外键,以支持计算通过不同应用服务器处理的关系表之间的依赖关系。

当DDL复制处于活动状态并且DML与DDL并发时,DDL会创建新表或更改键列。它最适合处理DML在对象上发布DDL之后不久可以应用于对象的情况。ADD SCHEMATRANDATA导致将适当的键值与每个DDL操作原子地记录在重做日志中,从而确保从日志中捕获DML时DML的元数据连续性,尽管在Extract处理方面有任何滞后。

使用的数据库级日志记录要求 ADD SCHEMATRANDATA

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

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

schema
您要为其记录补充密钥信息的架构。不要使用通配符。要ADD SCHEMATRANDATA在多租户容器数据库的多个可插拔数据库中发布模式,请使用分别登录到每个可插拔数据库DBLOGIN,然后发出 ADD SCHEMATRANDATA。在根conatiner中,您可以添加带有容器前缀的schematrandataADD SCHEMATRANDATA [pdb_name].schema

ALLOWNONVALIDATEDKEYS
该选项对Oracle 11.2.0.3或12.1.0.1。无效。它 在补充日志记录中包含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启用给定模式中主键的无条件记录以及所有当前表和将来表的所有唯一键和外键的条件补充记录。无论当前操作中的键是否已更改,无条件日志记录都会将主键值强制记录到日志中。如果在当前操作中更改了外键或唯一键的所有列值,则条件日志记录日志。集成的R​​eplicat主键,唯一键,

ALLCOLS
为给定架构中的所有当前和将来的表启用所有受支持的键和非键列的无条件补充日志记录。通过此选项,可以记录计算依赖项所需的键以及过滤,冲突解决或其他目的所需的列。不包括LOB,LONG和ADT之类的列。

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

禁止显示有关由处理的表的其他信息ADD SCHEMATRANDATA。默认情况下,启用此选项。附加信息处理会在命令响应上创建一个经过时间,因此可以使用此选项来增加响应时间。

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}
对DML和DDL的Oracle有效。在源头自动准备表,因此Oracle数据泵导出转储文件将包含实例化CSN。复制使用Oracle数据泵(在导入时)设置的每表实例化CSN来过滤跟踪记录。在目标上,数据泵导入使用DBOPTIONS ENABLE_INSTANTIATION_FILTERING启用参数的表级实例化过滤,使用实例化SCN填充系统表和视图。

WAIT
等待任何进行中的事务并准备表实例化。

LOCK
在表上放一个锁(为表实例化做准备)。

NOWAIT
默认行为,立即为实例化做准备。

NONE
没有实例化准备发生。

举例1:

ADD SCHEMATRANDATA scott

举例2:

ADD SCHEMATRANDATA scott ALLCOLS

举例3:

ADD SCHEMATRANDATA acct NOVALIDATE

2、DELETE SCHEMATRANDATA

对Oracle有效。

使用DELETE SCHEMATRANDATA以去除与添加的Oracle模式级补充日志ADD SCHEMATRANDATA命令。使用此DBLOGIN命令之前,请使用该命令建立数据库连接。用此命令指定的用户必须具有删除补充日志组的特权。

默认情况下,此命令尝试删除Oracle GoldenGate使用的键列(可以是主键,唯一键,KEYCOLS列或所有列)以及调度列的补充日志记录。调度列是主键,所有唯一键和所有外键。要删除Oracle GoldenGate键列而不是调度列的日志记录,请在NOSCHEDULINGCOLS选项中包含DELETE SCHEMATRANDATA。如果ADD SCHEMATRANDATA 发出了该ALLCOLS选件,请DELETE SCHEMATRANDATA与ALLCOLS 选项以删除所有列的补充日志记录,包括Oracle GoldenGate键列。

语法:
DELETE SCHEMATRANDATA schema [NOSCHEDULINGCOLS | ALLCOLS]

schema
您要删除其补充日志的架构。不要使用通配符。如果源是Oracle多租户容器数据库,请确保登录到包含要删除其日志的架构的可插拔数据库。

NOSCHEDULINGCOLS
防止命令删除指定架构中表的调度列的补充日志记录。调度列是表的主键,所有唯一键和所有外键。

ALLCOLS
删除指定架构中表的所有列的补充日志记录。

举例1:

DELETE SCHEMATRANDATA scott

举例2:

DELETE SCHEMATRANDATA scott ALLCOLS

3、INFO SCHEMATRANDATA

使用INFO SCHEMATRANDATA以确定Oracle架构级别的补充日志是否为指定的架构或者任何实例信息,请启用。使用此命令之前,请使用DBLOGIN该命令建立数据库连接。

语法:
INFO SCHEMATRANDATA schema

schema
您要为其确认补充日志记录的架构。不要使用通配符。要获取有关Oracle多租户容器数据库中适当模式的信息,请确保使用来登录到正确的可插入数据库DBLOGIN。

举例1:

INFO SCHEMATRANDATA scott

Related Posts