|
原帖由 fly_bug 于 2008-3-4 09:20 发表 ![]()
如果发生了实例崩溃,需要在日志文件中找到检查点位置,从此处开始应用所有的重做日志文件,就完成了前滚操作.
这里有一个疑问,在应用重做日志文件时,oracle是如何判断某个数据块是否需要重新apply redo log,因为数据块的内容有可能在实例崩溃前已经写入硬盘,也有可能还未写入硬盘。
难道是每个数据块都有保存对这个数据块最后一次dml操作的rba ? 在做前滚时,这个数据块只应用大于这个rba之后的redo日志?
从检查点开始到redo log tail 全部apply ,这样就完成CACHE recovery了,
然后再tansaction forward rollback好了 |
|