nbsp; 然后每个启用的线程(指在介质恢复开始SCN那一刻处于启用状态的线程,见2.10)都会分配一个缓冲区用来读取重做日志。每个文件的文件头的检查点 SCN被保存下来用来确保在这个SCN以前的重做日志不需要应用。结束SCN(控制文件中记录的)也被保存下来。如果是无穷大则取最大的结束SCN用来告诉介质恢复在何处停止,超出这个SCN的重做日志不需要应用(见6.10)。介质恢复结束时,之前结束SCN为无穷大的数据文件会在该结束SCN处做一个检查点操作(而不是在介质恢复结束点)。这使得一个干净脱机或者只读的数据文件在跟它的表空间干净结束SCN处进行检查点操作。毕业论文
6.6 应用重做日志,介质恢复检查点 每个在介质恢复起始SCN处启用的线程(见2.10)都打开了一个日志。如果该日志是联机状态,就会自动被打开;如果该日志是归档状态,就会提示用户输入日志名称,除非是自动恢复。所有线程中的重做日志按照产生的顺序被应用,在需要的时候还会切换线程。
有个例外就是在基于取消的不完全恢复(见6.12)或者是备份的控制文件的恢复(见6.13),按序列顺序计算出的下一个联机日志如果在磁盘上会自动被应用,否则会提示输入它的完整路径。
在日志分界点,介质恢复会执行一个检查点操作。脏数据会被写入到磁盘,数据文件头检查点推进,因此在此之前的重做日志不需要再重新应用。介质恢复的检查点还可能发生在介质恢复结束时会对介质恢复开始时一些结束SCN为无穷大的数据文件在结束SCN处做检查点操作。
6.7 介质恢复和模糊状态位
6.7.1 介质恢复模糊位
数据文件头部的介质恢复模糊位用来表示由于在进行介质恢复,该数据文件可能包含比数据文件头部检查点SCN还要晚的数据变更。介质恢复模糊位在介质恢复开始的被设置,通常来说在介质恢复对数据文件头发生一次检查点时该状态位可以被清除。当介质恢复成功结束或失败时该状态位才算永久清除。在8.1将见到,在不完全恢复后以重置日志方式打开数据库,如果还有数据文件的介质恢复模糊位被设置,将会打开失败。
6.7.2 联机模糊位
介质恢复在碰到一个崩溃恢复结束标记(或者一个立即脱机的标记:发生在数据文件还没有做检查点操作就脱机),介质恢复会在下一个介质恢复检查点清除数据文件头的联机模糊位和热备模糊位(如果被设置)。
6.7.3 热备份模糊位
在碰到一个结束热备份标记(或者一个崩溃恢复结束标记),介质恢复会在下一个介质恢复检查点操作时清除热备份模糊位。在不完全恢复后以重置日志方式打开数据库时如果有数据文件热备份模糊位或其他模糊位被设置,打开将失败。这防止了不完全恢复在热备份开始和结束中间时间点结束时还能以重做日志方式成功打开数据库。在这样的时间点结束不完全恢复将会导致数据文件处于不一致状态,因为还原的备份可能包含该结束点和热备份结束点之间的数据库变更。
6.8 线程启用 当一个实例启用一个新线程的时候会在该线程的重做日志中写入一笔线程启用记录。当介质恢复碰到这样的记录时就重新分配一个重做日志缓冲区,打开新的线程的重做日志,开始应用它的重做日志。
6.9 线程禁用 线程被禁用的时候,它的当前日志被标记为线程结束。介质恢复应用完该重做日志后,会释放它的重做日志缓冲区并停止查找该线程的重做日志。
6.10 结束介质恢复(完整的介质恢复) 每个线程的当前日志(也是最后一个)都会有个线程结束标记。完整的介质恢复(相对于不完全恢复,见6.12)都会应用重做日志直至所有线程的线程结束处。线程结束标记可以认为是没有当前控制文件,因为线程结束标记在日志头部而不是在控制文件中的记录中。
注意:备份当前联机日志并在后面还原是很危险的,很容易导致对当前线程结束的误判。因为备份中的线程结束标记相对于当前线程结束的日志而言是过期了的。
如果正在做介质恢复的数据文件在控制文件中(假定是当前控制文件)的结束SCN是无穷大,介质恢复将会联机程结束之前停止,重做程序将联机程结束点的SC 上一页 [1] [2] [3] [4] 下一页
|