oracle block恢复机制的理解

之前学习oracle block recovery时,对整个过程的理解做了个简单的记录。看过的朋友请指正。

可以通过dump oracle数据块,结合dump文件分析oracle的块恢复过程。


数据块的版本(version)是该块中的SCN和SEQ number所决定的。
每个数据块头部都存储着SCN,SEQ和DBA的信息,同样在每个change vector中也存在。

block与change vector中的SCN,SEQ和DBA值相等说明,该块已经应用了redo,不需要recovery了。
在redo被应用的前后cache都要对块进行检查,以确定数据块是否存在问题。

如果块中的SCN高于change vector中的SCN,表明redo已经应用过,可以废弃了。如果redo推进了SCN,SEQ将会重置为1,否则SEQ也推进。

如果块中的SCN低于change vector中的SCN,表明数据库丢失了部分redo changes。说明数据库存在lost writes或者bug。

posted on 2010-08-18 16:58  大肚熊  阅读(466)  评论(1编辑  收藏  举报

导航