数据库的恢复技术.ppt
《数据库的恢复技术.ppt》由会员分享,可在线阅读,更多相关《数据库的恢复技术.ppt(61页珍藏版)》请在三一文库上搜索。
1、,第10章 数据库的恢复技术,10.1 事务的基本概念 10.2 数据库恢复概述 10.3 故障的种类 10.4 恢复的实现技术 10.5 恢复策略 10.6 具有检查点的恢复技术 10.7 数据库镜像 10.8 小结,数据库的定义: 数据库被破坏的原因,可归纳为: 软硬件故障,造成数据被破坏。 数据库的并发操作引起数据的不一致性。 自然或人为地破坏,如失火、失窃、病毒和为授权人的有意纂改数据。 对数据库数据的更新操作有误,如操作时输入错误的数据或存取数据库的程序有错等等。,针对这四类问题,一般DBMS提供了相应的功能: 安全性保护:保护数据库防止恶意的破坏和非法的存取,防范对象:非法用户和非
2、法操作。 完整性保护:防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。 防范对象:不合语义的、不正确的数据 (实体,参照) 数据库恢复:即系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。 并发控制:即保证多用户能共享数据库,并维护数据的一致性。,10.1 事务的基本概念 10.1.1 事务的定义 1.什么是事务 事务是由用户定义的一组操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位,是恢复和并发控制的基本单位. 是一种机制,它确保多个SQL语句被当作单个工作单元来处理 2 .事务和程序是两个概念 在关系数据库中,一个事务可以是一条SQL语句
3、,一组SQL语句或整个程序 一个应用程序通常包含多个事务,3 .定义事务,隐式方式 当用户没有显式地定义事务时, DBMS按缺省规定自动划分事务 显式定义方式,事务的开始与结束由用户显式控制。定义事务的语句有三条: BEGIN TRANSACTION SQL 语句 COMMIT ROLLBACK BEGIN TRANSACTION表示事务的开始; COMMIT表示事务的提交 (事务正常结束 提交事务的所有操作(读+更新),事务中所有对数据库的更新写回到磁盘上的物理数据库中去, 事务中所有对数据库的更新永久生效),ROLLBACK表示事务的回滚,即在事务运行的过程中发生了某种故障,事务不能继续执
4、行,系统将事务中对数据库的所有已完成的更新操作全部撤销,再回滚到事务开始时的状态。 事务异常终止 事务运行的过程中发生了故障,不能继续执行 回滚事务的所有更新操作,所有已完成的更新操作全部撤销 事务滚回到开始时的状态,10.1.2 事务的特征 事务是由有限的数据库操作序列组成,但并不是任意的数据库操作序列都能成为事务,为了保护数据的完整性,一般要求事务具有以下四个特征:原子性 一致性 隔离性 持久性 ACID准则 1原子性(Atomic) 一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(nothing or all)的原则,即不允许事务部分的完成。 如果事务因故
5、障没有完成,则该事务已做的操作认为是无效的,在恢复时必须取消该事务对数据库的影响 保证原子性的思路:对于要执行写操作的数据项,在磁盘上记录其旧值,若事务没能完成执行,旧值将被恢复,好像事务从未执行 保证原子性是DBMS本身的责任,由“事务管理部件”处理。,2一致性(Consistency) 事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。 所谓数据库的一致状态是指数据库中的数据满足完整性约束。,例如,银行企业中,“从帐号A转移资金额R到帐号B”是一个典型的事务,这个事务包括两个操作,从帐号A中减去资金额R和在帐号B中增加资金额R。 定义一个事务,该事务包括两个操作 这两个操作要么
6、全做,要么全不做 全做或者全不做,数据库都处于一致性状态。 如果只做一个操作,数据库就处于不一致性状态。,可见事务的一致性与原子性是密切相关的。 确保单个事务的一致性是对该事务编码的应用,程序员的责任。,3隔离性(Isolation) 一个事务的执行不能被其它事务干扰。 如果多个事务并发地执行,应像各个事务独立执行一样。事务并发执行的结果和某一串行执行的结果相同。 事务并发执行的相对独立性,这是事务并发控制的目标。 并发控制就是为了保证事务间的隔离性 隔离性保证:多个事务并发执行的结果和某一串行执行的结果相同,T1的修改被T2覆盖了!,4持久性(Durability) 指一个事务一旦提交,它对
7、数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。,事务上述四个性质的英文术语的第一个字母为ACID。因此,这四个性质以称为事务的ACID准则。 下面是一个事务的例子,从帐号A转移资金额R到帐号B: BEGIN TRANSACTION READ A AA-R IF A0 /* A 款不足*/ THEN BEGIN DISPLAY “A款不足” ROLLBACK END ELSE /* 拨款 */ BEGIN BB+R DISPLAY “拨款完成” COMMIT END,这是对一个简单事务的完整的描述。 该事务有两个出口: 当A 帐号的款项不足时,事务以ROL
8、LBACK(撤销)命令结束,即撤销该事务的影响; 另一个出口是以COMMIT(提交)命令结束,完成从帐号A到帐号B的拨款。 在COMMIT之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。 只有在COMMIT之后,事务对数据库所产生的变化才对其他事务开放,这就可以避免其他事务访问不一致或不存在的数据。,事务的ACID特性可能遭到破坏的因素有: 1、多个事务并发运行,不同事务的操作交叉执行;(DBMS必须保证在此种情况下多个事务的交叉运行不影响这些事务的原子性,这是DBMS中的并发控制机制的责任。) 2、事务在运行过程中被强行停止。(DBMS必须保证被强行终止的事务对数据库和
9、其它事务没有任何影响,这是DBMS中的恢复机制的责任。),10.2 数据库的恢复,10.2.1 数据库恢复的含义 虽然数据库系统中已采取一定的措施,来防止数据库的安全性和完整性的破坏,保证并发事务的正确执行,但数据库中的数据仍然无法保证绝对不遭受破坏,比如计算机系统中硬件的故障、软件的的错误,操作员的失误,恶意的破坏等都有可能发生,这些故障的发生影响数据库数据的正确性,甚至可能破坏数据库,使数据库中的数据全部或部分丢失。 数据库的恢复:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态),10.3 故障的种类,事务内部,系统故障,介质故障,计算机病毒 1、事务内部的故障 有的
10、是预期的(可以通过事务程序本身发现的) 有的是非预期的,BEGIN TRANSACTION READ A AA-R IF A0 /* A 款不足*/ THEN BEGIN DISPLAY “A款不足” ROLLBACK END ELSE /* 拨款 */ BEGIN BB+R DISPLAY “拨款完成” COMMIT END,预期到的故障,发现余额不足,则让事务滚回,撤消已做的更改,恢复数据库到正确的状态。,事务内部更多的故障是非预期的,是不能由应用程序处理的。如运算溢出、并发事务死锁等。以后,我们指的事务故障仅指这一类非预期的故障。 事务故障意味着事务没有达到预期的终点(COMMIT 或者
11、显式的ROLLBACK),因此,数据库可能处于不正确的状态。恢复程序要在不影响其它事务运行的前提下,强行回滚(ROLLBACK)该事务,撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本没有启动一样。这类恢复操作称为事务撤消(UNDO)。,2、系统故障 系统故障是指系统在运行过程中,由于某种原因,造成系统停止运转,致使所有正在运行的事务都以非正常方式终止,要求系统重新启动。 引起系统故障的原因可能有:硬件错误如CPU故障、操作系统或DBMS代码错误、突然断电等。 这时,内存中数据库缓冲区的内容全部丢失,存储在外部存储设备上的数据库并未破坏,但内容不可靠了。,发生系统故障时,事务未提交
12、恢复策略:强行撤消(UNDO)所有未完成事务 发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上。 恢复策略:重做(REDO)所有已提交的事务 重做(REDO):有些己提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理数据库中,这也使数据库处于不一致状态,因此应将这些事务己提交的结果重新写入数据库,3、介质故障 介质故障是指系统在运行过程中,由于存储器介质受到破坏,使存储在外存中的数据部分丢失或全部丢失。 这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大。 4、计算机病毒 一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序 可
13、以繁殖和传播 危害 破坏、盗窃系统中的数据 破坏系统文件,故障小结,各类故障,对数据库的影响有两种可能性 一是数据库本身被破坏 二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。,10.4 恢复的原理及其实现技术 数据库恢复的基本原理十分简单,就是数据的冗余。 数据库中任何一部分被破坏的或不正确的数据都可以利用存储在系统其它地方的冗余数据来修复。 因此恢复系统应该提供两种类型的功能: 一种是生成冗余数据,即对可能发生的故障作某些准备; 另一种是冗余重建,即利用这些冗余数据恢复数据库。 生成冗余数据最常用的技术是登记日志文件和数据转储,在实际应用中,这两种方法常常结合
14、起来一起使用。,10.4.1 登记日志文件(Logging) 日志文件是用来记录事务对数据库的更新操作的文件。对数据库的每次修改,都将被修改项目的旧值和新值写在一个叫做运行日志的文件中,目的是为数据库的恢复保留详细的数据。 典型的日志文件主要包含以下内容: 1更新数据库的事务标识(标明是哪个事务); 2操作的类型(插入、删除或修改) 3操作对象; 4更新前数据的旧值(对于插入操作而言,没有旧值);,5更新前数据的新值(对于删除操作而言,没有新值); 6事务处理中的各个关键时刻(事务的开始、结束及其真正回写的时间)。 日志文件是系统运行的历史记载,必须高度可靠。 所以一般都是双副本的,并且独立地
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 恢复 技术
链接地址:https://www.31doc.com/p-4731184.html