首页 > Linux操作系统 > Linux操作系统 > SUPPLEMENTAL LOG
事实上,目前最有可能用到Supplemental Logging的也只有逻辑standby和streams这两项特性。我们都知道,这两项特性的数据应用都属于逻辑应用,类似source database执行update语句之类,结果也要反映到target database,如何准确判断出source端修改的列,在target端中应该更新到哪条记录上呢?根据rowid?显然不靠谱啊,都说了是逻辑的,块的位置完全不一样,rowid已无用武之地。通过表中的唯一键?在更新表中记录时,将主键或唯一键做为附加的信息,与被修改的列一起存入redolog中,对于没有主键唯一键的表,则将表中所有列统统组合做为附加信息存入redolog,这样target端在分析redolog时,就知道该更新表中的哪些记录了。
数据库启用了Supplemental Logging之后,对于修改操作,oracle就会同时附加一些能够唯一标识修改记录的列到redolog中,对于拥有主键或唯一键的表,这个操作最简单,只需要附加主键或唯一键即可,这样生成的redo也是最小的,当然这只是一个理想状态,现实情况下某些表可能无法创建主键/唯一键,或者历史原因确无主键/唯一键,这种情况下oracle会将所有列(提示,非log,long之类大字段类型的列)都做为附加信息记录到redo中,这种情况下redo有可能增长迅速,并且在target端应用时也会受到一些影响。因此oracle建议最好为每个涉及到复制的表都创建主键或者唯一键。
对于选择的列和那些用于精确定位的附加列的组合,oracle也对其做了定义叫做supplemental log group。随后oracle又对supplemental log group做了分类,目的是更精确的设置redolog中都记录些什么信息,分如下两类:
a.Unconditional Supplemental Log Groups:无条件记录指定列的前映像,而不管发生修改操作的是不是指定列。因此它还有个外号,叫"老记录日志组"。
b.Conditional Supplemental Log Groups:只有至少一个指定列发生修改操作时被触发,并记录下修改列的前映像。
Supplemental Logging可以在数据库级设置,也可以精确到表级设置,对于数据库级有两种类型:minimal logging和identification key logging,其主要区别就在于写入redolog中的数据详尽程度不同。
参考:
http://space.itpub.net/7607759/viewspace-462640
PS:
1,Database Supplemental Logging Can be enabled:
For all columns
For primary key columns
For unique columns
For foreign key columns;
2,All columns are included with the exception of:
LONG
LOB
LONG RAW
Abstract Data Types
Collections
3,To monitor database level supplemental logging:
SELECT
supplemental_log_data_min,
supplemental_log_data_pk,
supplemental_log_data_ui,
supplemental_log_data_fk,
supplemental_log_data_all
FROM v$database;
4,To specify a conditional supplemental log group for unique key column(s) and/or bitmap index column(s):
ALTER TABLE t1
ADD SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS;
5,To specify a conditional supplemental log group that includes all foreign key columns:
ALTER TABLE t1
ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
6,To specify a conditional supplemental log group that includes selected columns:
ALTER TABLE t1
ADD SUPPLEMENTAL LOG GROUP t1_g1 (c1,c3);
7,To check whether minimal supplemental logging is enabled:
SELECT supplemental_log_data_min
FROM v$database;
8,DBA_LOG_GROUPS view Describes currently configured supplemental log groups
9,DBA_LOG_GROUP_COLUMNS view Describes columns in currently configured supplemental log groups
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11976525/viewspace-668504/ ,如需转载,请注明出处,否则将追究法律责任。