DELETE TRANDATA
使用 DELETE TRANDATA 执行以下操作之一:
-
Db2 LUW 和 Db2 z/OS:将表更改为
DATA CAPTURE NONE. -
Oracle:禁用补充日志记录。
-
SQL Server:停止表的扩展日志记录。
-
PostgreSQL:将表的
REPLICA IDENTITY变更为NOTHING。
默认情况下,此命令尝试删除 Oracle GoldenGate 使用的键列的补充日志记录(可能是主键、唯一键、KEYCOLS 列或所有列)以及调度列。调度列是主键、所有唯一键以及所有外键。要删除 Oracle GoldenGate 键列(但不添加调度列)的日志记录,请在 DELETE TRANDATA 中包含 NOSCHEDULINGCOLS 选项。如果发出 ADD TRANDATA 时带有 ALLCOLS 选项,则将 DELETE TRANDATA 与 ALLCOLS 选项一同使用会删除所有列(包括 Oracle GoldenGate 键列)的补充日志记录。DELETE TRANDATA 将在禁用或删除所有表级别补充日志记录后禁用表的逻辑复制。Oracle 19c 及更高版本支持此行为。此外,如果 DELETE TRANDATA 操作删除表上的最后一个补充日志组,它之后还将执行 ALTER TABLE owner.table DISABLE LOGICAL REPLICATION。
It is mandatory to run ADD TRANDATA table_name command to enable logical replication after running DELETE TRANDATA.
注:无法使用 ADD SCHEMATRANDATA 启用逻辑复制。{:.infoboxnote}
使用 DBLOGIN 命令之前,应使用此命令建立数据库连接。使用此命令指定的用户必须具有执行 ADD TRANDATA 所需的相同权限。
语法
DELETE TRANDATA [container.]owner.table [NOSCHEDULINGCOLS | ALLCOLS]
[container.]owner.table
可插入数据库(如果是 Oracle 多租户容器数据库)、表或文件的所有者和名称。任何名称组成部分都可以使用通配符。
NOSCHEDULINGCOLS
阻止该命令删除指定表调度列的补充日志记录。调度列是表的主键、所有唯一键以及所有外键。
ALLCOLS
删除指定表所有列的补充日志记录。
示例
DELETE TRANDATA hr.employees
DELETE TRANDATA hr.reg*
DELETE TRANDATA hr.jobs ALLCOLS