📅  最后修改于: 2021-01-07 05:31:31             🧑  作者: Mango
为了从数据库故障中恢复过来,数据库管理系统采用了许多恢复管理技术。在本章中,我们将研究数据库恢复的不同方法。
数据库恢复的典型策略是-
如果出现软故障导致数据库不一致,则恢复策略包括事务撤消或回滚。但是,有时也可以采用事务重做来恢复到一致的事务状态。
如果发生严重故障导致数据库受到广泛破坏,则恢复策略包括从档案备份中还原数据库的过去副本。通过从事务日志重做已提交事务的操作,可以获得数据库的最新状态。
电源故障会导致非永久性内存中的信息丢失。恢复电源后,操作系统和数据库管理系统将重新启动。恢复管理器从事务日志启动恢复。
在即时更新模式下,恢复管理器将执行以下操作-
活动列表和失败列表中的事务将被撤消并写入中止列表中。
重做提交前列表中的事务。
对于提交或中止列表中的事务,不执行任何操作。
在推迟更新模式的情况下,恢复管理器将执行以下操作-
活动列表和失败列表中的事务将被写入中止列表。由于更改尚未写入磁盘,因此不需要撤消操作。
重做提交前列表中的事务。
对于提交或中止列表中的事务,不执行任何操作。
磁盘故障或硬崩溃会导致数据库整体丢失。为了从这次硬崩溃中恢复,准备了一个新磁盘,然后还原了操作系统,最后使用数据库备份和事务日志恢复了数据库。立即更新和延迟更新模式的恢复方法相同。
恢复管理器采取以下操作-
重做提交列表和提交前列表中的事务,并将其写入事务日志中的提交列表中。
撤消活动列表和失败列表中的事务,并将其写入事务日志中的中止列表。
Checkpoint是将记录从缓冲区写入数据库的时间点。因此,在系统崩溃的情况下,恢复管理器不必重做在检查点之前已提交的事务。定期检查点可以缩短恢复过程。
两种类型的检查点技术是-
一致的检查点在检查点处创建数据库的一致映像。在恢复期间,仅撤消或重做最后一个检查点右侧的那些事务。最后一个一致检查点左侧的事务已提交,因此无需再次进行处理。检查点采取的行动是-
如果在步骤4中也存储了事务日志,则此检查点有助于从磁盘故障和电源故障中恢复,否则,仅有助于从电源故障中恢复。
在模糊检查点中,在进行检查点时,所有活动事务都将写入日志中。如果发生电源故障,恢复管理器将仅处理在检查点及以后期间处于活动状态的那些事务。在检查点之前已提交的事务将写入磁盘,因此无需重做。
让我们考虑一下,在系统中,检查点的时间为tcheck,系统崩溃的时间为tfail。假设有四个事务T a ,T b ,T c和T d使得-
T a在检查点之前提交。
T b在检查点之前开始,并在系统崩溃之前提交。
T c在检查点之后开始,并在系统崩溃之前提交。
T d在检查点之后开始,并在系统崩溃时处于活动状态。
下图描述了这种情况-
恢复管理器采取的操作是-
进行事务恢复是为了消除故障事务的不利影响,而不是从故障中恢复。错误事务包括将数据库更改为不良状态的所有事务,以及使用了错误事务写入的值的事务。
在这些情况下的事务恢复是一个两步过程-
撤消所有错误事务和可能受错误事务影响的事务。
重做所有非故障但由于故障事务而已撤消的事务。
撤消操作的步骤是-
如果故障事务已完成INSERT,则恢复管理器将删除插入的数据项。
如果故障事务已完成DELETE,则恢复管理器将从日志中插入已删除的数据项。
如果错误的事务已完成UPDATE,则恢复管理器通过从日志中写入更新前的值来消除该值。
REDO操作的步骤是-
如果事务已完成INSERT,则恢复管理器将从日志中生成一个插入。
如果事务已完成DELETE,则恢复管理器将从日志中生成一个删除。
如果事务已完成UPDATE,则恢复管理器将从日志中生成更新。