DELETE TRANDATA

使用 DELETE TRANDATA 执行以下操作之一:

默认情况下,此命令尝试删除 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