supplemental logging

关于supplemental loggingOracle是这样解释的:

Redo log files are generally used by for instance recovery and media recovery.The data needed for such operations is automatically recorded in the redo log files.However,a redo-based application may require that additional columns be logged in the redo log files.The process of logging these additional columns is called supplemental logging.

默认情况下,Oracle数据库是不开启任何supplemental logging的,那么意味着LogMiner缺省是无法使用的。因此,如果需要使用LogMiner分析日志,则至少需要开启minimal supplemental logging

下面介绍下supplemental log groupsupplemental log group意思就是当启用了supplemental logging后,需要被额外记录的列的集合,有两种类型:

Unconditional supplemental log groups:在任何时候,不管更新的columns是否为指定的columns,都要在redo log中记录指定列的前镜像(before-images),有时也被称为Always log group

Conditional supplemental log groups:在指定列中,至少有一个列被更新了,那么就会记录所有指定列的前镜像。

supplemental logging group除了有两种类型,还有两种级别:

Database-Level Supplemental LoggingTable-Level Supplemental Logging

Database-Level Supplemental Logging

Database-level Supplemental Logging中又分为两种类型:
minimal supplemental logging
identification key logging。需要说明的是,启用minimal logging不会给数据库在产生redo log files时带来严重的性能开销;而启用identification key logging会带来一定的性能影响。如果要使用LogMiner的话,Oracle建议你至少要启用minimal supplemental logging

Minimal supplemental logging:

Minimal supplemental logging会收集最少数量的信息来满足LogMiner的需要,不过可以确保LogMiner拥有足够的信息去支持chained rows和各种storage arrangements,如簇表和索引组织表。

启用minimal supplemental logging

SQL> alter database add supplemental log data;

注意:在Oracle9.0.1版本中,minimal supplemental logging默认开启;而在9.2之后的版本中,默认是不开启任何supplemental logging的。

Database-level Identification Key Logging:

使用identification key logging,可以通过alter database add supplemental log语句指定某些选项,可以使数据库在数据库范围内记录所有被更新的前镜像。

ALL system-generated unconditional supplemental log group

该选项指定了当一行被更新后,那么改行的所有列的前镜像都会被记录到redo log file中(当然,LOBsLONGSADTs除外)。

在数据库级启用all columns logging的语句为:

SQL> alter database add supplemental log data (all) columns;

PRIMARY KEY system-generated unconditional supplemental log group

该选项会使数据库在一包含主键的行被更新时,数据库记录行的所有主键列的前镜像到redo log中(即使主键的值没有发生改变,也会被记录)。

如果一张表没有主键,但是有一个或者多个non-null unique index key constraints或者index key,那么一个或者多个的unique index key将会被认为是可以唯一标识更新行的列被记录。

如果一张表既没有primary key,也没有non-null unique index key,那么所有列将会被记录(除了LOB)。这个时候就跟ALL选项的效果是一样的了。因此Oracle建议当你选择使用database-level primary key supplemental logging时,尽量使所有的表都定义primary key或者unique index keys.

启用数据库级启用primary key logging的语句为:

SQL> alter database add supplemental log data (primary key) columns;

UNIQUE system-generated conditional supplemental log group

如果属于composite unique key或者bitmap index的任何列被更新,那么数据库就会在redo log中记录改行的所有列。

启用数据库级的unique index keybitmap index logging的语句为:

SQL> alter database add supplemental log data (unique) columns;

FOREIGN KEY system-generated conditional supplemental log group

当任何属于foreign key的列被修改时,那么数据库就会在redo log中记录改行的所有列。

在数据库级启用foreign key logging的语句为:

SQL> alter database add supplemental log data (foreign key) columns;

你选择使用identification key logging时,需要记住:

1、如果在数据库为open状态时启用identification key logging,在cursor cache中的所有DML cursor都将失效,此时,性能将会受到影响,知道cursor cache被重新载入。
2
、如果在数据库级启用了identification key logging,那么minimal supplemental logging将会被隐式启用。

3、在数据库中执行的supplemental logging语句是被累积的。例如发出如下语句时,primary keyunique key supplemental logging都会被启用。
alter database add supplemental log data (primary key) columns;
alter database add supplemental log data (unique) columns;

禁用Database-level supplemental logging

需要逐步的禁用supplemental logging,你必须首先禁用掉所有的identification key logging,然后才能禁用minimal supplemental logging,如下面这个例子:

SQL>alter database add supplemental log data (primary key) columns;
SQL>alter database add supplemental log data (unique) columns;
SQL>alter database drop supplemental log data (primary key) columns;
SQL>alter database drop supplemental log data (unique) columns;
SQL>alter database drop supplemental log data;

如果不按照这个顺序的话,就会报错,如:

ORA-32589: unable to drop minimal supplemental logging

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25834554/viewspace-709217/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25834554/viewspace-709217/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值