|
原帖由 eagle3250 于 2008-3-4 16:15 发表 ![]()
MM,这个问题是否混淆概念呢?
比如A块执行了两次insert操作,第二次insert操作的rba在D块的lrba之后,那么实际上A块的两次操作的结果都已经写入了磁盘。在实例恢复时,取出控制文件中的所记录的D块的lrba,开始apply日志,那么就会读到A块第二次insert操作的rba;
两次操作的结果都已经写入了磁盘,说明该块已经写入磁盘,为何还需要在Cache recovery时重新构造该块到CACHE 队列?
实例恢复时,是无法根据一个块是脏块或者不是脏块来判断是否对这个块进行恢复的.实例恢复的起始点就是控制文件中的low cache rba,即使在此RBA之后的重做信息.所对应的块的修改已经被写进磁盘,也要在重新对这些块应用重做.一个块被重复修改多次,是正常的.每次对块的修改,都会有重做记录生成.那些RBA高于low cache rba的重做记录,就会被应用. |
|