文档介绍:第七章数据库恢复技术
精选课件
事务
事务定义
事务是用户定义的一个数据库操作序列构成,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
事务与应用程序是两个概念,一般来说,一个应用程序可以包含多个事务。
事务转储
海量转储指每次转储全部数据库。
增量转储
增量转储指每次只转储上一次转储后更新过的数据。
精选课件
恢复的实现技术
转储状态
动态转储
静态转储
转储
方式
海量转储
动态海量转储
静态海量转储
增量转储
动态增量转储
静态增量转储
精选课件
恢复的实现技术
登录日志文件
日志文件是用来记录事务对数据库的更新操作的文件。日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。
以记录为单位的日志文件记录的内容包括:
各个事务的开始标记
各个事务的结束标记
各个事务的所有更新操作
精选课件
恢复的实现技术
上述内容均作为日志文件中的一个日志记录,每个日志记录的内容包括:
事务标识(标明是哪个事务)
操作的类型(插入、删除或修改)
操作对象(记录的内部标识)
更新前数据的旧值(对插入操作,此项为空)
更新后数据的新值(对删除操作,此项为空)
对于以数据块为单位的日志文件,日志记录的内容包括事务标识以及更新前和更新后的数据块。
精选课件
恢复的实现技术
日志文件的作用
日志文件可以用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质恢复。其具体作用是:
事务故障和系统故障恢复必须使用日志文件。
在动态转储方式中必须建立日志文件,后备副本和日志文件综合起来才能保证备份的一致性,和有效地恢复数据库。
在静态转储方式中,也可以建立日志文件。当数据库发生故障时,用后援副本把数据库恢复到转储结束时的正确状态,然后利用日志文件重做已完成的事务,把数据库恢复到故障前的正确状态。
精选课件
恢复的实现技术
登记日志文件
为保证数据库是可恢复的,登记日志文件时必须遵循两条原则:
登记的次序严格按并发事务执行的时间顺序。
必须先写日志文件,后写数据库。
精选课件
恢复策略
事务故障的恢复
事务故障是指事务在运行至正常终止点之前被终止。事务故障的恢复是由系统自动完成的,其步骤是:
反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
对该事务的更新操作执行逆操作,即将日志记录中的“更新前的值”写入数据库。这时,如果记录中是插入操作,则相当于做删除操作;如果记录中是删除操作,则相当于做插入操作;如果记录中是修改操作,则用修改前的值代替修改后的值。
继续反向扫描日志文件,查找该事务的更新操作,并做同样处理
如此处理下去,直到读到该事务的开始标志。
精选课件
恢复策略
系统故障的恢复
系统故障造成数据库不一致状态的原因有两个,一是未完成的事务对数据库的更新可能已经写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区还没来得及写入数据库。因此恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。
精选课件
恢复策略
其步骤是:
正向扫描日志文件,找出故障发生前已经提交的事务,将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(UNDO)队列。
对撤销队列中的各个事务进行UNDO处理。即反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志文件中的“更新前的值”写入数据库。
对重做队列中的各个事务进行REDO处理。即正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作,即将日志文件中的“更新后的值”写入数据库。
精选课件
恢复策略
介质故障的恢复
介质故障将全部或部分地破坏数据库甚至是日志文件,其恢复的方法是:
装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致状态。对于动态转储的副本,还需要装入转储开始时刻的日志文件副本,将数据库恢复到一致状态。
装入转储以后的日志文件副本,重做已经完成的事务。
精选课件
推迟更新技术
推迟更新技术在日志中记录对事务T的所有更新操作,并把所有对数据库的更新操作推迟到该事务提交时执行。它遵循以下推迟更新协议:
每个事务在到达提交点之前不能更新数据库。
一个事务的所有更新操作所对应的日志记录写入永恒存储器之前,该事务不能到达提交点。
当一个事务到达提交点时,我们称该事务进入部分提交状态。推迟更新协议保证当一个事务部分提交时,该事务的所有更新操作的信息已经记录在日志中。
精选课件
推迟更新技术
当T开始执行时,推迟更新技术在日志中写入<T, start>。如果T执行Write(X)的操作