更新时间:2023-09-04
补充日志记录可确保 LogMiner 和使用 LogMiner 技术的产品具有足够的信息,来支持链接的行和存储布置 (如集群表)。
有两种类型的数据库级补充日志记录:最小补充日志记录和标识键日志记录,如以下部分所述。
最少的补充日志不会对生成重做日志文件的数据库造成很大的开销。但是,启用数据库范围的标识键日志记录可能会给生成重做日志文件的数据库带来开销。Oracle 建议您至少为 LogMiner 启用最少的补充日志记录。
最少的补充记录
最少的补充日志记录 LogMiner 识别、分组和合并与 DML 更改相关的重做操作所需的最少信息量。它确保 LogMiner(以及基于 LogMiner 技术构建的任何产品)具有足够的信息来支持链式行和各种存储安排,例如集群表和索引组织表。要启用最少的补充日志记录,请执行以下 SQL 语句:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
数据库级识别键记录
当重做日志文件不会在源数据库实例中被挖掘时,标识键日志记录是必要的,例如,当重做日志文件将在逻辑备用数据库中被挖掘时。
ALTER DATABASE ADD SUPPLEMENTAL LOG使用数据库标识键日志记录,您可以通过为 SQL语句指定以下一个或多个选项来为所有更新启用数据库范围的前映像日志记录:
ALL系统生成的无条件补充日志组
此选项指定当更新行时,该行的所有列(LOB、LONGS和ADTs 除外)都放置在重做日志文件中。
要在数据库级别启用所有列日志记录,请执行以下语句:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
PRIMARY KEY系统生成的无条件补充日志组
每当更新包含主键的行时(即使主键中的值没有更改),此选项会使数据库将行的主键的所有列放在重做日志文件中。
如果表没有主键,但具有一个或多个非空唯一索引键约束或索引键,则选择其中一个唯一索引键进行记录,作为唯一标识正在更新的行的一种方式。
如果表既没有主键也没有非空唯一索引键,则LONG补充记录除和 LOB 之外的所有列;这等效于ALL为该行指定补充日志记录。因此,Oracle 建议在使用数据库级主键补充日志记录时,将所有或大部分表定义为具有主索引键或唯一索引键。
要在数据库级别启用主键日志记录,请执行以下语句:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
UNIQUE 系统生成的条件补充日志组
如果修改了属于复合唯一键或位图索引的任何列,则此选项使数据库将行的复合唯一键或位图索引的所有列放在重做日志文件中。唯一键可能是由于唯一约束或唯一索引。
要在数据库级别启用唯一索引键和位图索引日志记录,请执行以下语句:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
FOREIGN KEY系统生成的条件补充日志组
如果修改了属于外键的任何列,则此选项使数据库将行的外键的所有列放在重做日志文件中。
要在数据库级别启用外键日志记录,请执行以下 SQL 语句:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;