|
知识路径: > 信息系统开发和运行管理知识 > 系统运行管理知识 > 系统故障管理(处理步骤、监视、恢复过程、预防措施) > 故障及问题管理 > 主要故障处理 > 数据库故障恢复措施 >
|
相关知识点:3个
|
|
|
|
系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误、操作系统故障、DBMS代码错误、突然停电等。这类故障影响正在运行的所有事务,但不会破坏数据库。此时主存内容(尤其是缓冲区中的内容)都将被丢失,所有运行事务都被非正常终止,有些已完成的事务可能有部分甚至全部留在缓冲区中尚未被写入磁盘,为了保证一致性,应将这些事务已提交的结果重新写入数据库;此外,一些尚未完成的事务结果可能已经被送入物理数据库,为了保证一致性,需要清除这些事务对数据库的所有修改。系统故障的恢复是由系统在重新启动时自动完成的,此时恢复子系统撤销所有未完成的事务并重做(redo)所有已提交的事务。具体的步骤是:
|
|
|
(1)正向(从头到尾)扫描日志文件,找出故障发生前已经提交的事务(这些事务既有Begin Transaction记录,也有commit记录),将其事务标识记入重做(redo)队列。同时找出故障发生时尚未完成的事务(这些事务只有Begin Transaction记录,无相应的commit记录),将其事务标识记入撤销(undo)队列。
|
|
|
(2)反向扫描日志文件,对每个undo事务的更新操作执行逆操作,也就是将日志记录中更新前的值写入数据库。
|
|
|
(3)正向扫描日志文件,对每个redo事务重新执行日志文件登记的操作,也就是将日志记录中更新后的值写入数据库。
|
|
|