DBMS执行恢复 *** 作的步骤如下:
①反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新 *** 作。
②对该事务的更新 *** 作执行逆 *** 作,即将日志记录中“更新前的值”写入数据库。
③继续反向扫描日志文件,做同样处理。
④如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
(2)系统故障恢复。系统故障可能会造成数据库处于不一致性状态:一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。因此,恢复 *** 作就是要撤销故障发生时未完成的事务,重做已完成的事务。
系统故障的恢复步骤如下:
①正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。
②对撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新 *** 作执行逆 *** 作,即将日志记录中“更新前的值”写入数据库。
③对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是,正向扫描日志文件,对每个REDO事务重新执行日志文件登记的 *** 作,即将日志记录中“更新后的值”写入数据库。
(3)介质故障恢复。介质故障是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。具体过程如下:
①DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。
②DBA装入转储结束时刻的日志文件副本。
③DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。
哈,先写日志文件为保证数据库的可恢复性,日志文件能够用来进行事务故障恢复、系统故障恢复,并能够协助后备副本进行介质故障恢复。当数据库文件毁坏后,可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,再利用建立的日志文件,可以把已完成的事务进行重做处理,而对于故障发生时尚未完成的事务则进行撤消处理,这样不用运行应用程序就可把数据库恢复到故障前某一时刻的正确状态。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)