ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle10g Supplemental Log(追加日志) [final]

Oracle10g Supplemental Log(追加日志) [final]

原创 Linux操作系统 作者:tolywang 时间:2010-03-04 01:00:23 0 删除 编辑

在做Oracle10g Logical Standby 或 Oracle Stream的时候, 大多数时候,我们需要设置 Supplemental Log(追加日志) , 这个主要是因为Logical Standby或 Oracle Stream 是使用解析日志的方式得出DDL , DML 语句, 然后Apply到Standby 或 从库中 。      由于普通redo 日志只是记录rowid 及更改前后的列的值即可对数据库进行恢复或roll forward 等动作, 但是  类似 logical stand DB不是根据rowid 来做recover,    所以需要在redo里记录PK or unique index的信息来定位操作的data  行,  而只有pk或unique index对应的列被更改时才会被记录,所以 Supplemental Log 出现了 。  

 

物理Standby 在应用数据库块的时候,可以根据rowid 知道更新,插入或删除了哪些行, 但是 logical standby及stream 应用中都是采用解析log的方式Apply SQL , 而不是block ,  源数据库上做的操作需要反映到目标数据库上的table,  这里需要注意, 主库的redo在备库中解析出来后每一行数据的变更都会生成一条SQL (比如主库中的一个批量更新SQL , 在备库可能是 1000 条SQL 语句) , 这就要求备库能够唯一区别出每一条数据  , 由于主库备库只是逻辑上一致,ROWID属于物理结构,是不一样的 (block位置也许完全不一样了),  那么备库需要能够唯一区别出一条数据只有通过pk 或 unique index 来进行判断  。

情况一:     对于有pk 或unique index 的table  , 且pk 或 unique index 是由一个字段组成,不是组合索引。 如果每次更新的是PK列或unique index列,  那么可以不用启用 Supplemental Log , redo log 会附加记录这些pk 或unique index  , 以便logical standby 等进行恢复的时候能知道哪些行被更新了 。 这样生成的redo log也是最小的。 但是如果更新的不是PK或unique index列,那么还是需要启用Supplemental Log 的, 以便记录PK/FK , unique index信息 。

情况二 :     对于有但只有组合的pk 或组合的unique index 的table (index由多个字段组成) , 那么需要启用 Supplemental Log , 如果更新了pk 中的部分字段, Supplemental Log 的作用就是将pk的其余部分也记录到redo log 中 。 

情况三 :     对于没有pk 或 unique index  的table , 数据库需要启用Supplemental Logging,  对于更新操作, Oracle会同时附加一些能够唯一标识修改记录的列到redo log中 。  这种情况下oracle会将所有列(提示,非lob , long之类大字段类型的列)  都做为附加信息记录到redo中,这种情况下redo有可能增长迅速,并且在target端应用时也会受到一些影响。因此oracle建议最好为每个涉及到复制的表都创建主键或者唯一键。


 

对于选择的列和那些用于精确定位的附加列的组合,oracle也对其做了定义叫做supplemental log group。随后oracle又对supplemental log group做了分类,目的是更精确的设置redo  log中都记录些什么信息,分如下两类:


a.Unconditional Supplemental Log Groups:无条件记录指定列的前映像,而不管发生修改操作的是不是指定列。  因此它还有个外号,叫"老记录日志组"。
b.Conditional Supplemental Log Groups:只有至少一个指定列发生修改操作时被触发,并记录下修改列的前映像。

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

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    14696595