数据库恢复技术25391

上传人:kms****20 文档编号:51469029 上传时间:2018-08-14 格式:PPT 页数:43 大小:134.50KB
返回 下载 相关 举报
数据库恢复技术25391_第1页
第1页 / 共43页
数据库恢复技术25391_第2页
第2页 / 共43页
数据库恢复技术25391_第3页
第3页 / 共43页
数据库恢复技术25391_第4页
第4页 / 共43页
数据库恢复技术25391_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《数据库恢复技术25391》由会员分享,可在线阅读,更多相关《数据库恢复技术25391(43页珍藏版)》请在金锄头文库上搜索。

1、第七章数据库恢复技术事务4事务定义 事务是用户定义的一个数据库操作序列构成 ,这些操作要么全做,要么全不做,是一个 不可分割的工作单位。 事务与应用程序是两个概念,一般来说,一 个应用程序可以包含多个事务。 事务的开始与结束可以由用户显式控制。如 果用户没有显式定义事务,则由DBMS按缺 省规定自动划分事务。SQL中事务的定义4事务以Begin transaction开始,以 Commit work或 Rollback work结束。4Commit work表示提交,事务正常结束 。4Rollback work表示事务非正常结束,撤 消事务已做的操作,回滚到事务开始时 状态。事务的特性(ACI

2、D)4原子性(Atomicity)事务是数据库的逻辑工作单位,事务中包括的 诸操作要么全做,要么全不做。 4一致性(Consistency) 事务执行的结果应当使数据库从一个一致性状 态转变为另一个一致性状态。事务的特性(ACID)4隔离性(Isolation)一个事务的执行不能被其它事务干扰。即 一个事务内部的操作及使用的数据对其它 并发事务是隔离的,并发执行的各个事务 之间不能相互干扰。事务的特性(ACID)4持久性(Durability)一个事务一旦提交之后,它对数据库的 影响必须是永久的。事务提交后,系统 发生故障不能改变事务的持久性。数据库恢复概述4虽然数据库系统中采用了各种措施来保

3、 证系统安全性和完整性,但计算机系统 的故障是不可避免的,这些故障轻则造 成运行事务的非正常中断,影响数据库 中数据的正确性,重则破坏数据库,使 数据库中的全部或部分数据丢失,因此 数据库管理系统必须具有把数据库从错 误状态恢复到某一已知正确状态的功能 ,这就是数据库的恢复。数据库恢复是 通过数据库管理系统的恢复子系统完成 的。数据库恢复概述4数据库恢复子系统的目的包括: 保证事务的原子性,即确保一个事务被交付 运行后,要么该事务中的所有数据库操作都 被成功地完成,而且这些操作的结果被永久 地存储到数据库中,要么这个事务对数据库 没有任何影响。 当系统发生故障以后,数据库能够恢复到正 确状态。

4、故障的种类4事务内部的故障 事务内部的故障包括可预期的和不可预期的 。可预期的是指可以通过事务程序本身发现 和处理的故障。而不可预期的错误是指那些 不能由应用程序处理的事务故障,如死锁, 运算溢出,违反完整性规则等。故障的种类4系统故障 系统故障是指造成系统停止运行的任何事情 ,使得系统要重新启动。如硬件错误,操作 系统故障,停电等。这类故障影响正在运行 的所有事务,所有事务都非正常终止,但不 会破坏数据库。恢复子系统必须清除所有未 完成的事务对数据库的修改,同时重做所有 已完成的事务,保证数据库的一致性。故障的种类4介质故障 介质故障指外存故障,如磁盘损坏,瞬时强 磁场干扰等。这类故障将破坏

5、全部或部分数 据库,并影响正在存取这部分数据的所有事 务。4计算机病毒 计算机病毒是一种人为的破坏或故障,已成 为数据库系统的主要威胁之一。恢复的实现技术4数据库恢复的原理 数据库恢复的基本原理为冗余。如果数据库 中任何一部分数据被破坏或处于不正确的状 态,则可以通过存储在系统别处的冗余数据 来重建。4数据库恢复的关键问题 如何建立冗余 如何利用冗余实施数据库恢复恢复的实现技术4建立冗余的常用方法 数据转储 数据转储是数据库恢复中采用的基本技术。所谓 转储即DBA定期地将整个数据库复制到磁带或其 它存储设备上保存起来的过程。这些备用的数据 文本称为后备副本或后援副本。 当数据库发生故障时,可以

6、将后备副本重新装入 ,并重新运行自转储以后的所有更新事务。恢复的实现技术T0T0T1T1T3T3正常运行恢复重装后备副本重新运行事务恢复的实现技术4转储可以分为: 静态转储 静态转储是在系统中无事务运行时进行的转储操 作。即转储开始时数据库处于一致状态,转储过 程中,不允许对数据库的任何存取、更新活动。 由于转储必须等待正在运行的事务结束才能开始 ,而新的事务必须等待转储结束才能执行,降低 了数据库的可用性。恢复的实现技术 动态转储 动态转储是指转储期间允许对数据库进行存取或 修改,即转储和用户事务可以并发执行。动态转 储克服了静态转储的缺点,但除了转储数据库的 数据以外,还必须把转储期间各事

7、务对数据库的 修改记录下来,这样才能保证把数据库恢复到某 一时刻的一致状态。恢复的实现技术4转储的方式 海量转储 海量转储指每次转储全部数据库。 增量转储 增量转储指每次只转储上一次转储后更新过的数 据。恢复的实现技术转储状态动态转储静态转储转储 方式海量转储动态海量转 储静态海量转 储 增量转储动态增量转 储静态增量转 储恢复的实现技术 登录日志文件 日志文件是用来记录事务对数据库的更新 操作的文件。日志文件主要有两种格式: 以记录为单位的日志文件和以数据块为单 位的日志文件。 以记录为单位的日志文件记录的内容包括 : 各个事务的开始标记 各个事务的结束标记 各个事务的所有更新操作恢复的实现

8、技术 上述内容均作为日志文件中的一个日志记录,每 个日志记录的内容包括: 事务标识(标明是哪个事务) 操作的类型(插入、删除或修改) 操作对象(记录的内部标识) 更新前数据的旧值(对插入操作,此项为空) 更新后数据的新值(对删除操作,此项为空) 对于以数据块为单位的日志文件,日志记录 的内容包括事务标识以及更新前和更新后的 数据块。恢复的实现技术4日志文件的作用 日志文件可以用来进行事务故障恢复和系统故障恢 复,并协助后备副本进行介质恢复。其具体作用是 : 事务故障和系统故障恢复必须使用日志文件。 在动态转储方式中必须建立日志文件,后备副本 和日志文件综合起来才能保证备份的一致性,和 有效地恢

9、复数据库。 在静态转储方式中,也可以建立日志文件。当数 据库发生故障时,用后援副本把数据库恢复到转 储结束时的正确状态,然后利用日志文件重做已 完成的事务,把数据库恢复到故障前的正确状态 。恢复的实现技术4登记日志文件 为保证数据库是可恢复的,登记日志文件 时必须遵循两条原则: 登记的次序严格按并发事务执行的时间顺序。 必须先写日志文件,后写数据库。恢复策略4事务故障的恢复 事务故障是指事务在运行至正常终止点之前被终 止。事务故障的恢复是由系统自动完成的,其步 骤是: 反向扫描文件日志(即从最后向前扫描日志文件),查 找该事务的更新操作。 对该事务的更新操作执行逆操作,即将日志记录中的“ 更新

10、前的值”写入数据库。这时,如果记录中是插入操 作,则相当于做删除操作;如果记录中是删除操作,则 相当于做插入操作;如果记录中是修改操作,则用修改 前的值代替修改后的值。 继续反向扫描日志文件,查找该事务的更新操作,并做 同样处理 如此处理下去,直到读到该事务的开始标志。恢复策略4系统故障的恢复 系统故障造成数据库不一致状态的原因有两 个,一是未完成的事务对数据库的更新可能 已经写入数据库;二是已提交事务对数据库 的更新可能还留在缓冲区还没来得及写入数 据库。因此恢复操作就是要撤销故障发生时 未完成的事务,重做已完成的事务。恢复策略4其步骤是: 正向扫描日志文件,找出故障发生前已经提交的事 务,

11、将其事务标识记入重做(REDO)队列。同时 找出故障发生时尚未完成的事务,将其事务标识记 入撤销(UNDO)队列。 对撤销队列中的各个事务进行UNDO处理。即反向 扫描日志文件,对每个UNDO事务的更新操作执行 逆操作,即将日志文件中的“更新前的值”写入数据 库。 对重做队列中的各个事务进行REDO处理。即正向 扫描日志文件,对每个REDO事务重新执行日志文 件登记的操作,即将日志文件中的“更新后的值”写 入数据库。恢复策略4介质故障的恢复 介质故障将全部或部分地破坏数据库甚至是 日志文件,其恢复的方法是: 装入最新的数据库后备副本(离故障发生时刻最 近的转储副本),使数据库恢复到最近一次转储

12、 时的一致状态。对于动态转储的副本,还需要装 入转储开始时刻的日志文件副本,将数据库恢复 到一致状态。 装入转储以后的日志文件副本,重做已经完成的 事务。推迟更新技术4推迟更新技术在日志中记录对事务T的所有更 新操作,并把所有对数据库的更新操作推迟到 该事务提交时执行。它遵循以下推迟更新协议 : 每个事务在到达提交点之前不能更新数据库。 一个事务的所有更新操作所对应的日志记录写入永 恒存储器之前,该事务不能到达提交点。4当一个事务到达提交点时,我们称该事务进入 部分提交状态。推迟更新协议保证当一个事务 部分提交时,该事务的所有更新操作的信息已 经记录在日志中。推迟更新技术4当T开始执行时,推迟

13、更新技术在日志中写入 。如果T执行Write(X)的操作,推迟 更新技术在日志中写入 ,其中 V1为X的原始值,V2为Write(X)要写入的X值 。当T进入部分提交状态时,推迟更新技术在 日志中写入。接着,所有日志记 录都写入永恒存储器。然后,对于日志中的每 个形如的记录,将数据库中X数 据项的值更新为V2 。推迟更新技术4试考虑如下数据库事务T0和T1,其中A、B和C 的初值分别为1000,2000和700,T0和T1按照 串行调度执行:T0: read(A)A=A-50write(A)read(B)B=B+50write(B)T1: read(C)C=C-100write(C)推迟更新技

14、术日志文件数据库 T0, starts T0, A, 950 T0, B, 2050 T0, commit A=950 B=2050 T1, starts T1, C, 600 T1, commit C=600推迟更新技术T0, startsT0, startsT0, startsT0, A, 950T0, A, 950T0, A, 950T0, B, 2050T0, B, 2050T0, B, 2050T0, commitT0, commitT1, startsT1, startsT1, C, 600T1, C, 600T1, commit即时更新技术4即时更新技术允许事务直接更新数据库。处

15、于 活动状态的事务直接在数据库实施的更新称为 非提交更新。任何即时更新技术都必须遵循如 下的即时更新协议: 所有型日志记录安全的存储到永恒存 储器之前,不允许事务T更新数据库。 所有型日志记录安全的存储到永恒存 储器之前,不允许事务T提交。4即时更新协议保证在系统故障发生时,每个运 行事务的更新操作都安全地记录在日志中。即时更新技术4当T开始执行时, 被写入日志 。在T运行期间,当T发出一个Write(X) 操作时, 记录首先被写入 日志,然后,直接在数据库上执行 Write(X)。当T部分提交时, 被写入日志。为满足即时更新协 议的要求,在Write(X)直接作用到数据 库之前,有关这个操作

16、的日志记录必须 安全地写入永恒存储器。即时更新技术日志文件数据库 T0, starts T0, A, 1000, 950 A=950 T0, B, 2000, 2050 B=2050 T0, commit T1, starts T1, C, 700, 600 C=600 T1, commit即时更新技术T0, startsT0, startsT0, startsT0, A, 1000,950T0, A, 1000, 950T0, A, 1000, 950T0, B, 2000,2050T0, B, 2000, 2050T0, B, 2000, 2050T0, commitT0, commitT1, startsT1, startsT1, C, 700, 600T1, C, 700, 600T1, commit具有检查点的恢复技术4利用日志技术进行恢复时,恢复

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号