《数据库技术与应用》第8章 习题答案

第8章 数据库恢复技术

1. 试述事务的概念及事务的四个特性。 解:

事务是用户定义的一个基本操作序列,这个基本操作序列可以包含一个或者多个数据库的基本操作。事务所包含的基本操作要么都做,要么都不做,它们构成了一个不可分割的工作单元。

事务具有四个基本特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),简称为 ACID特性。

2. 数据库运行中可能产生的故障有哪些?简述不同故障对数据库造成的影响有何不同。 解:

数据库运行中可能发生各种各样的故障,大致分为以下几类:事务故障、系统故障、介质故障、其他一些因素导致的故障,如计算机病毒、操作失误等。

不同故障对数据库造成的影响不同,事务故障、系统故障影响事务的正常执行,介质故障和计算机病毒破坏数据库数据。

3. 恢复机制的基本思想是什么?恢复的实现技术有哪些? 解: 恢复机制的基本思想是:建立冗余数据;利用这些冗余数据实施数据库恢复。

数据转储和登录日志文件是建立冗余数据最常用的技术。当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。

4. 什么是日志文件?日志文件的作用是什么?登记日志文件的原则是什么? 解:

日志文件是用来记录事务对数据库的更新操作的文件,是系统运行的历史记载。

日志文件的作用是:用来进行事务故障恢复和系统故障恢复,协助后备副本进行介质故障恢复。

登记日志文件必须要遵循两条原则:一是登记的次序严格按并发事务执行的时间次序。二是必须先写日志文件,后写数据库。

5. 试述事务故障、系统故障、介质故障的恢复策略和方法。 解:

? 事务故障的恢复:

事务故障的恢复是由系统自动完成的,对用户是透明的。其过程如下:

(1) 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。 (2) 对该事务的更新操作执行逆操作。

(3) 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 (4) 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。 ? 系统故障的恢复

系统故障的恢复是由系统在重启时自动完成的,无需用户干预。其过程如下:

(1) 正向扫描日志文件,找出在故障发生前已经提交事务,将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤消队列。 (2)对撤消队列中的各个事务进行撤消(UNDO)处理。反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。

(3)对重做队列中的各个事务进行重做(REDO)处理。正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库。

? 介质故障的恢复:

介质故障是最严重的一种故障,介质故障会导致磁盘上的物理数据和日志文件被破坏。介质故障的恢复需要DBA介入。其过程如下:

(1) 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。 对于动态转储的数据库副本,还须同时装入转储开始时刻的日志文件副本,利用恢复系统故障的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。 (2) 装入转储结束时刻的日志文件副),重做已完成的事务。 这样就可以将数据库恢复至故障前某一时刻的一致状态了。 6. 检查点记录的内容包括什么? 解:

检查点记录是一类新的日志记录。它的内容包括两项:一是建立检查点时刻所有正在执行的事务清单;二是这些事务的最近一个日志记录的地址。

7. 试举例说明具有检查点的恢复技术的优点。 解:

具有检查点的恢复技术的优点包括: 缩短了扫描日志的时间。采用具有检查点的恢复技术进行恢复时,不必从头扫描日志文件,只需要从最近一个检查点开始。

改善了恢复效率。当事务T在一个检查点之前提交,T对数据库所做的修改一定都已写入数据库,写入时间是在这个检查点建立之前或在这个检查点建立之时。这样,在进行恢复处理时,没有必要对事务T执行REDO操作。

8. 试述使用检查点方法的恢复策略。 解:

系统使用检查点方法进行恢复的流程是:

(1) 根据重新开始文件找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。

(2) 由该检查点记录得到建立检查点时所有正在执行的事务清单ACTIVE-LIST。 设置两个事务队列:

UNDO-LIST:需要执行UNDO操作的事务集合。 REDO-LIST:需要执行REDO操作的事务集合。

暂时将事务清单ACTIVE-LIST放入UNDO-LIST队列,并令REDO-LIST队列暂为空集;

(3) 从该检查点开始正向扫描日志文件到文件结束为止。 凡遇有BEGIN_TRANSACTION的事务放入UNDO-LIST;

凡遇有COMMIT的事务, 将它从UNDO-LIST移入REDO-LIST;

(4) 对UNDO-LIST中的事务执行UNDO操作,对REDO-LIST中的事务执行REDO操作。

9. 什么是数据库镜像? 解:

数据库镜像指将整个数据库或其中的关键数据同时存放在两个分离的物理磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制到另一个磁盘上,从而自动保证主数据库与镜像数据库的一致性。这样,一旦出现介质故障,可由镜像磁盘继续提供使用,同时

DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。在没有出现故障时,数据库镜像还可以用于并发操作,即当一个用户对数据加排他锁修改数据时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4