checkpoint RBA 和on-disk RBA的说明

来源:互联网 发布:苏州程序员培训 编辑:程序博客网 时间:2024/06/03 17:07

什么是rba

脏数据块改对应的redo记录条目的位置                                  

rba包括哪些内容?

  • 条目所在redo文件的sequence号
  • 条目所在日志文件的块号
  • 条目距离日志文件开始位置的偏移量

rba的分类

  • low  rba :在buffer cache中的数据块第一次数据改变所对应的RAB。 脏数据块在检查点队列里面按照low rba排列。
  • high rba :在buffer cache中的数据块最近一次数据改变时所对应的RAB。
  • checkpoint rba:在checkpint queue中(每次checkpoint queue被clean以后)第一个脏数据块第一次被修改对应的RAB,这个RBA之前的脏数据已经被全部写入磁盘。
  • on-disk rba:是 lgwr 写日志文件的最末位置的地址。

数据库实例恢复的范围

checkpoint RBAon-disk RBA的充作记录。8i所引入的增量检查点每隔三秒钟或发生日志切换时启动。它启动时只做一件事情:找出当前检查点队列上的第一个buffer header,并将该buffer header中所记录的LRBA(这个LRBA也就是checkpoint position了)记录到控制文件中去(checkpoint RBA)。而on-disk RBA是 lgwr 写日志文件的最末位置的地址。

与rba相关的数据字典

X$BH
用于查看脏块的LRBA和HRBA(There is also a recovery RBA which is used to record the progress of partial block recovery by PMON.) 。
X$TARGETRBA
查看增量checkpoint RBA,target RBA和on-disk RBA。
X$KCCCP
这里面也有增量checkpoint RBA,target RBA的信息。
X$KCCRT
完全checkpoint(full thread checkpoint)RBA信息

redo_log_format

Redo Byte Address (RBA)

Recent entries in the redo thread of an Oracle instance are addressed using a 3-part redo byte address, or RBA. An RBA is comprised of

  • the log file sequence number (4 bytes)
  • the log file block number (4 bytes)
  • the byte offset into the block at which the redo record starts (2 bytes)

RBAs are not necessarily unique within their thread, because the log file sequence number may be reset to 1 in all threads if a database is opened with the RESETLOGS option.

RBAs are used in the following important ways.

With respect to a dirty block in the buffer cache, the low RBA is the address of the redo for the first change that was applied to the block since it was last clean, and the high RBA is the address of the redo for the most recent change to have been applied to the block.

Dirty buffers are maintained on the buffer cache checkpoint queues in low RBA order. The checkpoint RBA is the point up to which DBWn has written buffers from the checkpoint queues if incremental checkpointing is enabled -- otherwise it is the RBA of last full thread checkpoint. The checkpoint RBA is copied into the checkpoint progress record of the controlfile by the checkpoint heartbeat once every 3 seconds. Instance recovery, when needed, begins from the checkpoint RBA recorded in the controlfile. The target RBA is the point up to which DBWn should seek to advance the checkpoint RBA to satisfy instance recovery objectives.

The on-disk RBA is the point up to which LGWR has flushed the redo thread to the online log files. DBWn may not write a block for which the high RBA is beyond the on-disk RBA. Otherwise transaction recovery (rollback) would not be possible, because the redo needed to undo a change is always in the same redo record as the redo for the change itself.

The term sync RBA is sometimes used to refer to the point up to which LGWR is required to sync the thread. However, this is not a full RBA -- only a redo block number is used at this point.

The low and high RBAs for dirty buffers can be seen in X$BH. (There is also a recovery RBA which is used to record the progress of partial block recovery by PMON.) The incremental checkpoint RBA, the target RBA and the on-disk RBA can all be seen in X$TARGETRBA. The incremental checkpoint RBA and the on-disk RBA can also be seen in X$KCCCP. The full thread checkpoint RBA can be seen in X$KCCRT.

 

 

参考:

http://space.itpub.net/20844861/viewspace-589000

http://blog.chinaunix.net/u/25142/showart_324342.html