【专业课学习】《数据库原理》第九章习题

175 阅读4分钟

111612267_p0.png

9.1 简述数据库系统的故障种类。

  • 事务故障:运行的事务T遭到强行终止,没有正常commit或rollback
  • 系统故障:除了储存介质之外的计算机硬件故障(CPU、内存或电源等)、操作系统故障、DBMS故障和停电...
  • 介质故障:外存储设备(硬盘)故障
  • 病毒故障

9.2 简述恢复机制的核心技术以及建立冗余数据的常用技术。

恢复机制的核心技术:建立冗余数据和利用冗余数据实施数据库恢复。

建立冗余数据的常用技术:数据转储、登记日志文件

9.3 解释数据转储。简述数据转储的常用方法。

数据转储:DBA定期地把整个数据库备份到磁盘、磁带或光盘等外存。

数据转储的常用方法:静态海量转储、静态海量转储、动态增量转储和动态增量转储

静态转储:在无事务运行时,进行数据转储。即:数据转储期间不能读写数据库。数据转储与事务不能同时执行。

动态转储:在有事务运行时,进行数据转储。即:数据转储期间允许读写数据库。数据转储与事务可以同时执行。

海量转储(Full Dump):转储数据库的全部数据。

增量转储(Incremental Dump):只转储上一次转储后更新的数据

9.4 解释日志文件。简述常用的日志文件及其内容。

日志文件:记录事务对数据库的更新操作的文件。

日志文件分类:记录日志文件和数据块日志文件等。

记录日志文件:以记录为单位的日志文件。内容:

  1. 事务标记(事务开始标记,事务结束标记,事务名称等)。
  2. 事务操作类型(插入,修改,删除)。
  3. 事务操作对象。
  4. 更新前数据旧值。
  5. 更新后数据新值。

数据块日志文件:以数据块为单位的日志文件。内容:

  1. 事务标记(事务开始标记,事务结束标记,事务名称)。
  2. 更新前数据块旧值。
  3. 更新后数据块新值。

9.5 简述日志文件的登记规则。并解释原因。

规则一 严格按照并发事务(逻辑上的)实际执行的次序依次登记。

虽然多个并发事务的读写操作是交错执行的,但在DBMS会依照某种"等效的串行顺序"(与数据库的并发调度方案执行效果一致)来记录日志,以便于在必要时可以正确地回放(redo)或撤销(undo)这些事务。

规则二 先登记日志文件,后更新数据库。

如果先更新数据库,后登记日志文件,且故障发生在更新数据库之后,登记日志文件之前,则会导致数据库被更新了,而日志文件却没有登记该更新操作,因此在恢复数据库时,将无法从日志文件中得到该更新操作的记录,从而无法恢复该更新操作。

如果先登记日志文件,后更新数据库,且故障发生在登记日志文件之后,更新数据库之前, 则日志文件记录了事务对数据库的更新操作,却没有真正更新数据库,因此在恢复数据库时, 可从日志文件中得到该未做完的更新数据库操作的记录并撤销之。

9.6 简述事务故障、系统故障和介质故障的恢复策略。

事务故障恢复:利用日志文件撤消未完成事务对数据库的一系列更新操作。

(1)反向扫描文件日志(即:从尾向前扫描),查找未完成事务的更新(INSERT、UPDATE 和DELETE)操作。

(2)对事务的更新操作执行逆操作,即把日志记录中更新前的值写入数据库。

(3)重复(1)和(2),直到读取该事务的开始标记。

系统故障恢复:撤销未完成事务(UNDO)和重做已完成事务(REDO)。

(1)正向扫描日志文件(即:从头向后扫描),建立 REDO 队列和 UNDO 队列。

(2)对 REDO 队列的事务执行重做操作。

(3)对 UNDO 队列的事务执行撤销操作。

介质故障恢复方法:重装数据库,重做已完成事务。

(1)重装数据库。装入距离故障时间最近的最新后备副本,使数据库恢复到最近一次转 储时的一致性状态。

(2)重做已完成事务。装入转储结束时刻的日志文件副本,重做已完成的事务。