数据库原理第5章54_第1页
数据库原理第5章54_第2页
数据库原理第5章54_第3页
数据库原理第5章54_第4页
数据库原理第5章54_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、返回返回1 主讲人:王青松2 5.4.1 5.4.1 数据库恢复的含义数据库恢复的含义虽然数据库系统中已采取一定的措施,来防虽然数据库系统中已采取一定的措施,来防止数据库的安全性和完整性的破坏,保证并发事止数据库的安全性和完整性的破坏,保证并发事务的正确执行,但数据库中的数据仍然无法保证务的正确执行,但数据库中的数据仍然无法保证绝对不遭受破坏,比如计算机系统中硬件的故障、绝对不遭受破坏,比如计算机系统中硬件的故障、软件的的错误,操作员的失误,恶意的破坏等都软件的的错误,操作员的失误,恶意的破坏等都有可能发生,这些故障的发生影响数据库数据的有可能发生,这些故障的发生影响数据库数据的正确性,甚至可

2、能破坏数据库,使数据库中的数正确性,甚至可能破坏数据库,使数据库中的数据全部或部分丢失。据全部或部分丢失。因此,系统必须具有检测故障并把数据从错因此,系统必须具有检测故障并把数据从错误状态中恢复到某一正确状态的功能,这就是数误状态中恢复到某一正确状态的功能,这就是数据库的恢复。据库的恢复。返回返回35.4.2 5.4.2 数据库恢复的原理服及其实现技术数据库恢复的原理服及其实现技术数据库恢复的基本原理十分简单,就是数据的数据库恢复的基本原理十分简单,就是数据的冗余。冗余。数据库中任何一部分被破坏的或不正确的数据数据库中任何一部分被破坏的或不正确的数据都可以利用存储在系统其他地方的冗余数据来都可

3、以利用存储在系统其他地方的冗余数据来修复。修复。因此恢复系统应该提供两种类型的功能:因此恢复系统应该提供两种类型的功能:v 一种是生成冗余数据,即对可能发生的故障作某些准备;v 另一种是冗余重建,即利用这些冗余数据恢复数据库。生成冗余数据最常用的技术是登记日志文件和生成冗余数据最常用的技术是登记日志文件和数据转储,在实际应用中,这两种方法常常结数据转储,在实际应用中,这两种方法常常结合起来一起使用。合起来一起使用。 返回返回45.4.2.1 5.4.2.1 登记日志文件(登记日志文件(LoggingLogging)日志文件是用来记录事务对数据库的更新操作日志文件是用来记录事务对数据库的更新操作

4、的文件。对数据库的每次修改,都将被修改项的文件。对数据库的每次修改,都将被修改项目的旧值和新值写在一个叫做运行日志的文件目的旧值和新值写在一个叫做运行日志的文件中,目的是为数据库的恢复保留详细的数据。中,目的是为数据库的恢复保留详细的数据。典型的日志文件主要包含以下内容:典型的日志文件主要包含以下内容:1更新数据库的事务标识(标明是哪个事务);2操作的类型(插入、删除或修改)3操作对象;4更新前数据的旧值(对于插入操作而言,没有旧值);返回返回55更新前数据的新值(对于删除操作而言,没有新值);6事务处理中的各个关键时刻(事务的开始、结束及其真正回写的时间)。日志文件是系统运行的历史记载,必须

5、高度可日志文件是系统运行的历史记载,必须高度可靠。靠。所以一般都是双副本的,并且独立地写在两个所以一般都是双副本的,并且独立地写在两个不同类型的设备上。不同类型的设备上。日志的信息量很大,一般保存在海量存储器上。日志的信息量很大,一般保存在海量存储器上。在对数据库修改时,在运行日志中要写入一个在对数据库修改时,在运行日志中要写入一个表示这个修改的运行记录。表示这个修改的运行记录。为了防止在这两个操作之间发生故障后,运行为了防止在这两个操作之间发生故障后,运行日志中没有记录下这个修改,以后也无法撤消日志中没有记录下这个修改,以后也无法撤消这个修改。为保证数据库是可恢复的,登记日这个修改。为保证数

6、据库是可恢复的,登记日志文件必须遵循两条原则原则:志文件必须遵循两条原则原则:返回返回6v 1.至少要等到相应运行记录的撤消部分已经写入日志文件中以后,才允许该事务往物理数据库中写入记录;v 2.直到事务的所有运行记录的撤消和重做两部分都已写入日志文件中以后,才允许事务完成提交处理。 这两条原则称为日志文件的先写原则。这两条原则称为日志文件的先写原则。 先写原则蕴含了如下意义:如果出现故障,只可能在先写原则蕴含了如下意义:如果出现故障,只可能在日志文件中登记所做的修改,但没有修改数据库,这日志文件中登记所做的修改,但没有修改数据库,这样在系统重新启动进行恢复时,只是撤消或重做因发样在系统重新启

7、动进行恢复时,只是撤消或重做因发生事故而没有做过的修改,并不会影响数据库的正确生事故而没有做过的修改,并不会影响数据库的正确性。而如果先写了数据库修改,而在运行记录中没有性。而如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。登记这个修改,则以后就无法恢复这个修改了。 所以这了安全,一定要先定日志文件,后写数据库的所以这了安全,一定要先定日志文件,后写数据库的修改。修改。返回返回75.4.2.2 5.4.2.2 数据转储(数据转储(Data DumpData Dump)数据转储是指定期地将整个数据库复制到多个数据转储是指定期地将整个数据库复制到多个存储设备如磁带

8、、磁盘上保存起来的过程,它存储设备如磁带、磁盘上保存起来的过程,它是数据库恢复中采用的基本手段。是数据库恢复中采用的基本手段。转储的数据文本称为后备副本或后援副本,当转储的数据文本称为后备副本或后援副本,当数据库遭到破坏后就可利用后援副本把数据库数据库遭到破坏后就可利用后援副本把数据库有效地加以恢复。有效地加以恢复。转储是十分耗费时间和资源的,不能频繁地进转储是十分耗费时间和资源的,不能频繁地进行,应该根据数据库使用情况确定一个适当的行,应该根据数据库使用情况确定一个适当的转储周期。转储周期。按照转储方式转储可以分为海量转储和增量转按照转储方式转储可以分为海量转储和增量转储。储。海量转储是指每

9、次转储全部数据库。海量转储是指每次转储全部数据库。增量转储每次只转储上次转储后被更新过的数增量转储每次只转储上次转储后被更新过的数据。据。返回返回8上次转储以来对数据库的更新修改情况记录在上次转储以来对数据库的更新修改情况记录在日志文件中,利用日志文件就可进行这种转储,日志文件中,利用日志文件就可进行这种转储,将更新过的那些数据重新写入上次转储的文件将更新过的那些数据重新写入上次转储的文件中,就完成了转储操作,这与转储整个数据库中,就完成了转储操作,这与转储整个数据库的效果是一样的,但花的时间要少得多。的效果是一样的,但花的时间要少得多。按照转储状态转储又可分为静态转储和动态转按照转储状态转储

10、又可分为静态转储和动态转储。储。v 静态转储期间不允许有任何数据存取活动,因而需在当前用户事务结束之后进行,新用户事务又需在转储结束之后才能进行,这就降低了数据库的可用性。v 动态转储则不同,它允许转储期间继续运行用户事务,但产生的副本并不能保证与当前状态一致。解决的办法是把转储期间各事务对数据库的修改活动登记下来,建立日志文件。v 因此,备用副本加上日志文件就能把数据库恢复到某一时刻的正确状态。 返回返回95.4.3 5.4.3 数据库的故障和恢复的策略数据库的故障和恢复的策略数据库系统在运行中发生故障后,有些事务尚数据库系统在运行中发生故障后,有些事务尚未完成就被迫中断,这些未完成事务对数

11、据库未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库。所做的修改有一部分已写入物理数据库。这时数据库就处于一种不正确的状态,或者说这时数据库就处于一种不正确的状态,或者说是不一致的状态,这时可利用日志文件和数据是不一致的状态,这时可利用日志文件和数据库转储的后备副本将数据库恢复到故障前的某库转储的后备副本将数据库恢复到故障前的某个一致性状态。个一致性状态。数据库运行过程中可能会出现各种各样的故障,数据库运行过程中可能会出现各种各样的故障,这些故障可分为以下三类:这些故障可分为以下三类:事务故障事务故障、系统故系统故障障和和介质故障介质故障。根据故障类型的不同,应该采取

12、不同的恢复策根据故障类型的不同,应该采取不同的恢复策略。略。返回返回105.4.3.1 5.4.3.1 事务故障(事务故障(Transaction FailureTransaction Failure)及)及其恢复其恢复事务故障表示由非预期的、不正常的程序结束事务故障表示由非预期的、不正常的程序结束所造成的故障。所造成的故障。造成程序非正常结束的原因包括输入数据错误、造成程序非正常结束的原因包括输入数据错误、运算溢出、违反存储保护、并行事务发生死锁运算溢出、违反存储保护、并行事务发生死锁等。等。发生事务故障时,被迫中断的事务可能已对数发生事务故障时,被迫中断的事务可能已对数据库进行了修改,为了

13、消除该事务对数据库的据库进行了修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行影响,要利用日志文件中所记载的信息,强行回滚(回滚(ROLLBACKROLLBACK)该事务,将数据库恢复到修)该事务,将数据库恢复到修改前的初始状态。改前的初始状态。为此,要检查日志文件中由这些事务所引起的为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所发生变化的记录,取消这些没有完成的事务所做的一切改变。做的一切改变。这类恢复操作称为事务撤消(这类恢复操作称为事务撤消(UNDOUNDO),具体做),具体做法如下:法如下: 返回返回111反向扫描日志文件,查找该

14、事务的更新操作。2对该事务的更新操作执行反操作,即对已经插入的新记录进行删除操作,对已删除的记录进行插入操作,对修改的数据恢复旧值,用旧值代替新值。这样由后向前逐个扫描该事务己做所有更新操作,并做同样处理,直到扫描到此事务的开始标记,事务故障恢复完毕。因此,一个事务是一个工作单位,也是一个恢因此,一个事务是一个工作单位,也是一个恢复单位。复单位。一个事务越短,越便于对它进行一个事务越短,越便于对它进行UNDOUNDO操作。如操作。如果一个应用程序运行时间较长,则应该把该应果一个应用程序运行时间较长,则应该把该应用程序分成多个事务,用明确的用程序分成多个事务,用明确的COMMITCOMMIT语句

15、结语句结束各个事务。束各个事务。返回返回125.4.3.2 5.4.3.2 系统故障(系统故障(System FailureSystem Failure)及其恢复)及其恢复系统故障是指系统在运行过程中,由于某种原系统故障是指系统在运行过程中,由于某种原因,造成系统停止运转,致使所有正在运行的因,造成系统停止运转,致使所有正在运行的事务都以非正常方式终止,要求系统重新启动。事务都以非正常方式终止,要求系统重新启动。引起系统故障的原因可能有:硬件错误如引起系统故障的原因可能有:硬件错误如CPUCPU故障、操作系统或故障、操作系统或DBMSDBMS代码错误、突然断电等。代码错误、突然断电等。这时,内

16、存中数据库缓冲区的内容全部丢失,这时,内存中数据库缓冲区的内容全部丢失,存储在外部存储设备上的数据库并未破坏,但存储在外部存储设备上的数据库并未破坏,但内容不可靠了。内容不可靠了。返回返回13系统故障发生后,对数据库的影响有两系统故障发生后,对数据库的影响有两种情况:种情况:v一种情况是一些未完成事务对数据库的更新已写入数据库,这样在系统重新启动后,要强行撤消(UNDO)所有未完成事务,清除这些事务对数据库所做的修改。这些未完成事务在日志文件中只有BEGIN TRANSCATION标记,而无COMMIT标记。v另一种情况是有些己提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理

17、数据库中,这也使数据库处于不一致状态,因此应将这些事务己提交的结果重新写入数据库。这类恢复操作称为事务的重做(REDO)。这种己提交事务在日志文件中既有BEGIN TRANSCATION标记,也有COMMIT标记。返回返回14因此,系统故障的恢复要完成两方面的工作,因此,系统故障的恢复要完成两方面的工作,既要撤消所有未完成的事务,还需要重做所有既要撤消所有未完成的事务,还需要重做所有己提交的事务,这样才能将数据库真正恢复到己提交的事务,这样才能将数据库真正恢复到一致的状态。具体做法如下:一致的状态。具体做法如下:1正向扫描日志文件,查找尚未提交的事务,将其事务标识记入撤消队列。同时查找已经提交

18、的事务,将其事务标识记入重做队列。2对撤消队列中的各个事务进行撤消处理。方法同事务故障中所介绍的撤消方法相同。3对重做队列中的各个事务进行重做处理。进行重做处理的方法是:正向扫描日志文件,按照日志文件中所登记的操作内容,重新执行操作,使数据库恢复到最近某个可用状态。返回返回15系统发生故障后,由于无法确定哪些未完成的系统发生故障后,由于无法确定哪些未完成的事务己更新过数据库,哪些事务的提交结果尚事务己更新过数据库,哪些事务的提交结果尚未写入数据库,这样系统重新启动后,就要撤未写入数据库,这样系统重新启动后,就要撤消所有的未完成事务,重做所有的已经提交的消所有的未完成事务,重做所有的已经提交的事

19、务。事务。但是,在故障发生前已经运行完毕的事务有些但是,在故障发生前已经运行完毕的事务有些是正常结束的,有些是异常结束的。所以无需是正常结束的,有些是异常结束的。所以无需把它们全部撤消或重做。把它们全部撤消或重做。通常采用设立检查点(通常采用设立检查点(CheckpointCheckpoint)的方法来)的方法来判断事务是否正常结束。每隔一段时间,比如判断事务是否正常结束。每隔一段时间,比如说说5 5分钟,系统就产生一个检查点,做下面一分钟,系统就产生一个检查点,做下面一些事情:些事情:1把仍保留在日志缓冲区中的内容写到日志文件中;2在日志文件中写一个“检查点记录”;返回返回163把数据库缓冲

20、区中的内容写到数据库中,即把更新的内容写到物理数据库中;4把日志文件中检查点记录的地址写到“重新启动文件”中。每全检查点记录包含的信息有:在检查点时每全检查点记录包含的信息有:在检查点时间的所有活动事务一览表,每个事务最近日间的所有活动事务一览表,每个事务最近日志记录的地址。志记录的地址。在重新启动时,恢复管理程序先从在重新启动时,恢复管理程序先从“重新启重新启动文件动文件”中获得检查点记录的地址,从日志中获得检查点记录的地址,从日志文件中找到该检查点记录的内容,通过日志文件中找到该检查点记录的内容,通过日志往回找,就能决定哪些事务需要撤消,恢复往回找,就能决定哪些事务需要撤消,恢复到初始的状

21、态,哪些事务需要重做。到初始的状态,哪些事务需要重做。返回返回175.4.3.35.4.3.3介质故障(介质故障(Media FailureMedia Failure)及其)及其恢复恢复介质故障是指系统在运行过程中,由于辅助存介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据部储器介质受到破坏,使存储在外存中的数据部分丢失或全部丢失。分丢失或全部丢失。这类故障比事务故障和系统故障发生的可能性这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这磁盘上的物理数

22、据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的本,然后利用日志文件重做该副本后所运行的所有事务。所有事务。具体方法如下:具体方法如下:1装入最新的数据库副本,使数据库恢复到最近一次转储时的可用状态。2装入最新的日志文件副本,根据日志文件中的内容重做已完成的事务。首先正向扫描返回返回18日志文件,找出发生故障前已提交的事务,将日志文件,找出发生故障前已提交的事务,将其记入重做队例。其记入重做队例。再对重做队列中的各个事务进行重做处理,方再对重做队列中的各个事务进行重做处理,方法是:正向扫描日志文件

23、,对每个重做事务重法是:正向扫描日志文件,对每个重做事务重新执行登记的操作,即将日志文件中数据己更新执行登记的操作,即将日志文件中数据己更新后的值写入数据库。新后的值写入数据库。通过以上对三类故障的分析,我们可以看出故通过以上对三类故障的分析,我们可以看出故障发生后对数据库的影响有两种可能性:障发生后对数据库的影响有两种可能性:1数据库没有被破坏,但数据可能处于不一致状态。这是由事务故障和系统故障引起的,这种情况在恢复时,不需要重装数据库副本,直接根据日志文件,撤销故障发生时未完成的事务,并重做己完成的事务,使数据库恢复到正确的状态。这类故障的恢复是系统在重新启动时自动完成的,不需要用户干预。

24、2数据库本身被破坏。这是由介质故障引起的,这种情况在恢复时,把最近一次转储的数据装入,然后借助于日志文件,再在此基础上对数据库进行更新,从而重建了数据库。这类故障的恢复不能自动完成,需要DBA的介入,先由DBA重装最近转储的数据库副本和相应的日志文件的副本,再执行系统提供的恢复命令,具体的恢复操作由DBMS来完成。返回返回19数据库恢复的基本原理就是利用数据的数据库恢复的基本原理就是利用数据的冗余的,十分简单,实现的方法也比较冗余的,十分简单,实现的方法也比较清楚,但真正实现起来相当复杂,实现清楚,但真正实现起来相当复杂,实现恢复的程序非常庞大,常常占整个系统恢复的程序非常庞大,常常占整个系统

25、代码的百分之十以上。代码的百分之十以上。数据库系统所采用的恢复技术是否行之数据库系统所采用的恢复技术是否行之有效,不仅对系统的可靠程度起着决定有效,不仅对系统的可靠程度起着决定性使用,而且对系统的运行效率也有很性使用,而且对系统的运行效率也有很大的影响,是衡量系统性能优劣的重要大的影响,是衡量系统性能优劣的重要指标。指标。返回返回20 数据库的重要特征是它能为多个用户提供数据共享。数据库的重要特征是它能为多个用户提供数据共享。在多个用户使用同一数据库系统时,要保证整个系在多个用户使用同一数据库系统时,要保证整个系统的正常运转,统的正常运转,DBMSDBMS必须具备一整套完整而有效的必须具备一整

26、套完整而有效的安全保护措施。本章从安全性控制、完整性控制、安全保护措施。本章从安全性控制、完整性控制、并发性控制和数据库恢复四方面讨论了数据库的安并发性控制和数据库恢复四方面讨论了数据库的安全保护功能。全保护功能。 数据库的安全性数据库的安全性是指保护数据库,以防止因非法使是指保护数据库,以防止因非法使用数据库所造成数据的泄露、更改或破坏。实现数用数据库所造成数据的泄露、更改或破坏。实现数据库系统安全性的方法有用户标识和鉴定、存取控据库系统安全性的方法有用户标识和鉴定、存取控制、视图定义、数据加密和审计等多种,其中,最制、视图定义、数据加密和审计等多种,其中,最重要的是存取控制技术和审计技术。重要的是存取控制技术和审计技术。 数据库的完整性数据库的完整性是指保护数据库中数据的正确性、是指保护数据库中数据的正确性、有效性和相容性。完整性和安全性是两个不同的概有效性和相容性。完整性和安全性是两个不同的概念,安全性措施的防范对象是非法用户和非法操作,念,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是合法用户的不合语义的数完整性措施的防范对象是合法用户的不合语义的数据。这些语义约束构成了数据库的三条完整性规则,据。这些语义约束构成了数据库的三条完整性规则,即触发条件、约束条件和违约响应。完整性约束条即触发条件、约束条件和违约响应。完整性约束条件从使用对象分为值的约

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论