第3章 补充日志(Supplemental Logging)
补充日志并不是独立的一种日志,它是对重做记录中变更矢量的补充信息,增加了变更矢量记载的数据量。Oracle某些功能要求启用补充日志才能正常地或更好地工作,比如LogMiner(日志挖掘器)、闪回事务查询、闪回事务等,这些功能可以用来找回因为人为错误而遭到损坏的数据。本书将会介绍这些功能,因此有必要提前对补充日志有一个正确的认识。
3.1 功 能 介 绍
insert与delete命令在默认情况下产生的重做记录足以表明被修改的行的每个字段在被修改前后的值是什么。对insert来说,变更前行不存在,其产生的重做记录会记载新行的每个字段的值;对delete来说,虽然变更后行不存在,但是因为重做记录也要负责产生撤销数据块的变更,所以行被删除之前的各字段的值也记载在撤销数据块的变更矢量中。简单地说,在insert和delete命令的重做记录中,能找到整行的所有信息。
update就没有那么幸运了,它不像insert和delete命令那样一定会影响一行的所有字段,常常只更改一个或几个字段,出于对性能的考虑,Oracle没必要将没有被修改的字段的值也保存在变更矢量中。事实是在撤销块的变更矢量中只记载被修改的字段的旧值(更改前的值),而在数据块的变更矢量中则记载了被修改的字段的新值(更改后的值),同一行中其他没有被修改的字段,不会记载其旧值,因为它们没有被修改,Oracle想不出记载它们的理由。......