数据库故障恢复

数据库故障恢复

  • 事务故障的恢复
  • 系统故障恢复
  • 介质故障恢复

事务故障的恢复

1、事务故障的恢复
事务故障是事务在运行至正常终止前被终止,这时恢复子系统应该用日志文件撤销(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。系统具体恢复步骤是:
(1) 反向扫描日志文件,即从最后向前扫描日志文件,查找该事务的更新操作
(2) 对该事务更新操作逆操作,即将日志文件更新前的值写入数据库。如果记录中操作是插入操作,则对其执行删除操作;如果记录中操作是删除操作,则对其执行插入操作;如果记录中操作是修改操作,则用修改前的值代替修改后的值。
(3) 继续反向扫描日志文件,查找该事务的其他操作,做同样操作;
(4) 如此反复,直至扫描到此事务的开始标记,事务故障恢复就完成了

系统故障恢复

2、系统故障恢复
系统故障的恢复是由系统在启动时,由系统自动完成的,不需要用户干扰。具体恢复步骤是:
(1) 正向扫描日志文件标记事务。即从头扫描日志文件,找出在故障发生前已经提交的事务(既有BEGIN TRANSACTION记录,也有COMMIT记录),并将其记入重做记录(REDO-LIST),同时找出故障发生时尚未完成的记录(只有BEGIN TRANSACTION记录,没有COMMIT记录),将其记入撤销队列。
(2) 对撤销队列中的事务进行撤销操作,反向扫描日志文件,对每个撤销事务的操作执行逆操作,将日志文件更新前的值写入数据库。
(3) 对重做队列中的事务重做处理。正向扫描日志文件,对每个重做事务执行日志文件登记,将日志文件中的更新后的值写入数据库。

介质故障恢复

3、介质故障的恢复,
这是最严重的故障。磁盘上的物理数据和日志文件都已经被破坏。重装数据库,重做已经完成的操作,
(1) 装入离故障发生时间最近的转储副本,使得数据库恢复到最近一次转储时的一致性状态。
(2) 装入转储结束时刻的日志文件副本。扫描日志,找出故障发生时已经提交的事务记入重做队列正向扫描日志文件将日志文件中的更新后的值写入数据库

你可能感兴趣的:(数据库,database,java)