第十章    数据库恢复技术
《概论》第十章、第十一章讨论DBMS中重要的事务处理技术。事务处理技术主要包括数据库恢复技术和并发控制技术。本章讨论数据库恢复的概念和常用技术。
一、基本知识点
   
需要了解的:什么是数据库的一致性状态。数据库运行中可能产生的故障类型,他们如何影响事务的正常执行,如何破坏数据库数据。数据转储的概念及分类。什么是数据库镜像功能。                       
    需要牢固掌握的:事务的基本概念和事务的ACID性质。数据库恢复的实现技术。 日志文件的内容及作用。登记日志文件所要遵循的原则。具有检查点的恢复技术。
    需要举一反三的:恢复的基本原理,针对不同故障的恢复的策略和方法。
    难点:日志文件的使用,系统故障恢复策略。
    事务管理模块是DBMS实现中的关键技术。事务恢复的基本原理是数据备份,它貌似简单,实际实现却很复杂。数据库的事务管理策略(不仅有数据库恢复策略,还有并发控制策略)DBMS缓冲区管理策略、事务一致性级别密切相关,读者要在学习完全书后再来重新考虑这些问题,提升对这些技术的理解和掌握。
    读者要掌握数据库故障恢复的策略和方法。对于刚刚学习数据库课程的读者来讲可能并不体会数据库故障恢复的复杂性和重要性。到了实际工作中,作为数据库管理员,则必须十分清楚每一个使用中的DBMS产品提供的恢复技术、恢复方法,并且能够根据这些技术正确制定出实际系统的恢复策略,以保证数据库系统7×24小时正确运行,保证数据库系统在遇到故障时能及时恢复正常运行,提高抗灾难的能力。
二、习题解答和解析
   
1. 试述事务的概念及事务的4个特性。
 
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
    事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这4个特性也简称为ACID特性
    原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
    一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
  隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。
  2*.为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
   
    事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
    例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。
则可以定义一个事务TT包括两个操作;Q1Q1- QQ2Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q
  3*. 数据库中为什么要有恢复子系统?它的功能是什么?
   
    因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)
  4*. 数据库运行中可能产生的故障有哪几类? 哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
   
    数据库系统中可能发生各种各样的故障,大致可以分以下几类:
    (1)事务内部的故障;
    (2)系统故障;
    (3)介质故障;
    (4)计算机病毒。
事务故障、系统故障和介质故障影响事务的正常执行介质故障和计算机病毒破坏数据库数据。
  5. 数据库恢复的基本技术有哪些?
数据库故障恢复
   
    数据转储和登录日志文件是数据库恢复的基本技术。
    当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
    7. 什么是日志文件? 为什么要设立日志文件?
   
    (1) 日志文件是用来记录事务对数据库的更新操作的文件。
    (2) 设立日志文件的目的是:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。有关日志文件的具体作用,参考《概论》7.4.2
    8. 登记日志文件时为什么必须先写日志文件,后写数据库?
   
    把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件 中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
    如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。                 
    10*. 什么是检查点记录?检查点记录包括哪些内容?
   
    检查点记录是一类新的日志记录。它的内容包括:
    建立检查点时刻所有正在执行的事务清单(如图中的T1T2)
    这些事务的最近一个日志记录的地址(如图中的D1D2)
                           
   

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。