数据库精品课仅供个人学习第10章.ppt

上传人:scccc 文档编号:13865479 上传时间:2022-01-25 格式:PPT 页数:79 大小:858.50KB
返回 下载 相关 举报
数据库精品课仅供个人学习第10章.ppt_第1页
第1页 / 共79页
数据库精品课仅供个人学习第10章.ppt_第2页
第2页 / 共79页
数据库精品课仅供个人学习第10章.ppt_第3页
第3页 / 共79页
数据库精品课仅供个人学习第10章.ppt_第4页
第4页 / 共79页
数据库精品课仅供个人学习第10章.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《数据库精品课仅供个人学习第10章.ppt》由会员分享,可在线阅读,更多相关《数据库精品课仅供个人学习第10章.ppt(79页珍藏版)》请在三一文库上搜索。

1、数据库精品课仅供个人学习第10章,少年辛苦终身益 莫向光阴惰寸功,数据库精品课仅供个人学习第10章,数 据 库 原 理Theory of Database 第十章 数据库恢复技术,数据库精品课仅供个人学习第10章,3,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,4,10.1 事务的基本概念,事务(Transaction),用户定义的一个数据库操作序列,是不可分割的 工作单位。,恢复和并发控制的基本单位。,事

2、务和程序比较,在关系数据库中,一个事务可以是一条或多条 SQL语句,也可以包含一个或多个程序。,一个程序通常包含多个事务。,数据库精品课仅供个人学习第10章,5,A,B,1万元,10.1 事务的基本概念(续),事务(Transaction),例如:,银行转帐事务T:从A帐户转帐1万元到B帐户中。,T:read (A); A:=A-1; write (A); read (B); B:=B+1; write (B);,数据库精品课仅供个人学习第10章,6,事务的特性(ACID特性),10.1 事务的基本概念(续),原子性(Atomicity):最小的工作单位。,一致性(Consistency):一

3、致性状态间的转换。,隔离性(Isolation):事务间不能互相干扰。,持续性(Durability ):对数据库的改变是永久的。,数据库精品课仅供个人学习第10章,7,事务的状态及其转换,活动状态,部分提交状态,失败状态,提交状态,异常提交状态,10.1 事务的基本概念(续),事务开始运行进入活动状态,,事务执行完所有语句数据没有存入数据库中或未执行完所有语句称为部分提交状态;,完成所有操作并永久影响数据库,进入提交状态表示正常完成任务;,如果没有正常完成任务最后提交异常,结束事务。,数据库精品课仅供个人学习第10章,8,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概

4、述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,9,10.2 数据库恢复概述,事务非正常中断影响数据正确性,故障是不可避免的,人为故障:操作员的失误、恶意的破坏等。,数据库的恢复,系统故障:计算机软、硬件故障,把数据库从错误状态恢复到某一已知的正确状 态(亦称为一致状态或完整状态)。,数据库精品课仅供个人学习第10章,10,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢

5、复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,11,10.3 故障的种类,事务内部的故障,系统故障,介质故障,计算机病毒,故障,数据库精品课仅供个人学习第10章,12,10.3 故障的种类(续),事务内部的故障,有的是可以通过事务程序本身发现的,数据库精品课仅供个人学习第10章,13,10.3 故障的种类(续),例如,银行转账事务,把1万元从一个账户A转给 另一个账户B。,BEGIN TRANSACTION read (A) ; A:=A10000; write (A); IF(A 0 ) THEN print (金额不足,不能转账); ROLLBACK; %撤销

6、刚才的修改,恢复事务 ELSE read (B); B:=B+10000; write (B); COMMIT; %正常提交,完成任务 ,数据库精品课仅供个人学习第10章,14,10.3 故障的种类(续),事务内部更多的故障是非预期的,不能由应用程序处理。,例如:运算溢出,违反了某些完整性限制等。,事务故障的恢复:,事务故障的恢复操作:撤销事务(UNDO),事务内部的故障,事务故障意味着事务没有达到预期的终点,数据库可能出于 不正确状态,因此,要在不影响其它事务运行的情况下, 强行回滚(rollback) 该事务,即撤销该事务已经做出的对 数据库的修改,使得该事务好像根本没有运行一样。,数据库

7、精品课仅供个人学习第10章,15,10.3 故障的种类(续),系统故障,称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。,例如:突然断电,整个系统的正常运行突然被破坏,所有正在运行的事务都非正常终止,不破坏数据库,数据库缓冲区的信息全部丢失,数据库精品课仅供个人学习第10章,16,常见原因:,10.3 故障的种类(续),特定类型的硬件错误(如CPU故障),操作系统故障,DBMS代码错误,系统断电,系统故障,数据库精品课仅供个人学习第10章,17,恢复,10.3 故障的种类(续),系统故障,发生系统故障时,事务未完成,恢复策略:强行撤消(UNDO)所有未完成事务。,发生系统故障时

8、,事务已提交,但缓冲区中的信息 尚未完全写回到磁盘上。,恢复策略:重做(REDO)所有已提交的事务。,数据库精品课仅供个人学习第10章,18,10.3 故障的种类(续),称为硬故障,指外存故障。,介质故障,磁盘损坏,磁头碰撞,操作系统的某种潜在错误,瞬时强磁场干扰,这类故障会破坏数据库或部分数据库,并影响正在存取这部分数据的事务。这类故障发生的可能性小,但是破坏性很大。,数据库精品课仅供个人学习第10章,19,恢复,10.3 故障的种类(续),介质故障,1、装入数据库发生介质故障前某个时刻的数据副本;,2、重做自此时始(副本备份时刻)的所有成功事务, 将这些事务已提交的结果重新记入数据库。,数

9、据库精品课仅供个人学习第10章,20,10.3 故障的种类(续),可以繁殖和传播;,危害,破坏、盗窃系统中的数据,破坏系统文件,应对策略:,查杀病毒,注意系统安全性的保护,安装防火墙和实时监控软件。,根据数据备份文件和日志文件恢复数据库。,计算机病毒,一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序;,数据库精品课仅供个人学习第10章,21,故障小结,10.3 故障的种类(续),各类故障,对数据库的影响有两种可能性:,一、是数据库本身被破坏。,二、是数据库没有被破坏,但数据不正确,这是由于事 务的运行被被正常终止造成的。,数据库精品课仅供个人学习第10章,22,第十章 数据库恢复技术,

10、10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,23,10.4 恢复的实现技术,恢复操作的基本原理:冗余,利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据。,恢复机制涉及的关键问题,如何建立冗余数据,数据转储(backup),登录日志文件(logging),如何利用这些冗余数据实施数据库恢复,数据库精品课仅供个人学习第10章,24,10.4.1 数据转储10.4.2 登记日志文件,10.4 恢复的实现技术,数

11、据库精品课仅供个人学习第10章,25,10.4.1 数据转储,一、什么是数据转储,二、转储方法,数据库精品课仅供个人学习第10章,26,什么是数据转储,10.4.1 数据转储(续),转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程,备用的数据称为后备副本或后援副本。,如何使用,数据库遭到破坏后可以将后备副本重新装入,重装后备副本只能将数据库恢复到转储时的状态,数据库精品课仅供个人学习第10章,27,转储方法,10.4.1 数据转储(续),1静态转储与动态转储,2海量转储与增量转储,数据库精品课仅供个人学习第10章,28,静态转储,10.4.1 数据转储(续),在系统中无运行事务

12、时进行的转储操作,转储开始时数据库处于一致性状态,转储期间不允许对数据库的任何存取、修改活动,得到的一定是一个数据一致性的副本,优点:实现简单,缺点:降低了数据库的可用性,转储必须等待正运行的用户事务结束,新的事务必须等转储结束,转储方法,数据库精品课仅供个人学习第10章,29,10.4.1 数据转储(续),转储操作与用户事务并发进行,转储期间允许对数据库进行存取或修改,优点,不用等待正在运行的用户事务结束,不会影响新事务的运行,缺点,不能保证副本中的数据正确有效,动态转储,转储方法,数据库精品课仅供个人学习第10章,30,例 在转储期间的某个时刻Tc,系统把数据A=100 转储到磁带上,而在

13、下一时刻Td,某一事务将 A改为200。转储结束后,后备副本上的A已是 过时的数据了。,动态转储,转储方法,10.4.1 数据转储(续),数据库精品课仅供个人学习第10章,31,10.4.1 数据转储(续),利用动态转储得到的副本进行故障恢复,需要把动态转储期间各事务对数据库的修改活动 登记下来,建立日志文件;,后备副本加上日志文件才能把数据库恢复到某一 时刻的正确状态;,动态转储,转储方法,数据库精品课仅供个人学习第10章,32,海量转储与增量转储,10.4.1 数据转储(续),海量转储: 每次转储全部数据库,增量转储: 只转储上次转储后更新过的数据,二者比较,从恢复角度看,使用海量转储得到

14、的后备副本进行 恢复往往更方便;,但如果数据库很大,事务处理又十分频繁,则增量 转储方式更实用更有效;,转储方法,数据库精品课仅供个人学习第10章,33,转储方法小结,数据转储分类,10.4.1 数据转储(续),数据库精品课仅供个人学习第10章,34,10.4 恢复的实现技术,10.4.1 数据转储10.4.2 登记日志文件,数据库精品课仅供个人学习第10章,35,10.4.2 登记日志文件,一、日志文件的格式和内容二、日志文件的作用三、登记日志文件,数据库精品课仅供个人学习第10章,36,日志文件的格式和内容,10.4.2 登记日志文件(续),什么是日志文件,日志文件(log)是用来记录事务

15、对数据库的更新 操作的文件。,日志文件的格式,以记录为单位的日志文件,以数据块为单位的日志文件,数据库精品课仅供个人学习第10章,37,10.4.2 登记日志文件(续),日志文件的格式和内容,以记录为单位的日志文件内容,各个事务的结束标记(COMMIT或ROLLBACK),各个事务的所有更新操作,以上各项都是日志文件中的一个日志记录 (log record),各个事务的开始标记(BEGIN TRANSACTION),数据库精品课仅供个人学习第10章,38,10.4.2 登记日志文件(续),日志文件的格式和内容,以记录为单位的日志文件,每条日志记录的内容,事务标识(标明是哪个事务),操作类型(插

16、入、删除或修改),操作对象(记录内部标识),更新前数据的旧值(对插入操作而言,此项为空值),更新后数据的新值(对删除操作而言, 此项为空值),数据库精品课仅供个人学习第10章,39,10.4.2 登记日志文件(续),日志文件的格式和内容,以数据块为单位的日志文件,每条日志记录的内容,事务标识(标明是那个事务),被更新的数据块(更新前和更新后),数据库精品课仅供个人学习第10章,40,日志文件的作用,10.4.2 登记日志文件(续),进行事务故障恢复,进行系统故障恢复,协助后备副本进行介质故障恢复,数据库精品课仅供个人学习第10章,41,利用静态转储副本和日志文件进行恢复,10.4.2 登记日志

17、文件(续),数据库精品课仅供个人学习第10章,42,10.4.2 登记日志文件(续),基本原则,登记的次序严格按并行事务执行的时间次序。,必须先写日志文件,后写数据库。,写日志文件操作:把表示这个修改的日志记录 写到日志文件。,写数据库操作:把对数据的修改写到数据库中。,登记日志文件,数据库精品课仅供个人学习第10章,43,10.4.2 登记日志文件(续),登记日志文件,为什么要先写日志文件,写数据库和写日志文件是两个不同的操作。,在这两个操作之间可能发生故障。,如果先写了数据库修改,而在日志文件中没有 登记下这个修改,则以后就无法恢复这个修改了。,如果先写日志,但没有修改数据库,按日志文件

18、恢复时只不过是多执行一次不必要的UNDO操作, 并不会影响数据库的正确性。,数据库精品课仅供个人学习第10章,44,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,45,10.5 恢复策略,10.5.1 事务故障的恢复10.5.2 系统故障的恢复10.5.3 介质故障的恢复,数据库精品课仅供个人学习第10章,46,10.5.1 事务故障的恢复,事务故障:事务在运行至正常终止点前被终止。,恢复方法,由恢复子系统利

19、用日志文件撤消(UNDO)此事务已对数据库进行的修改。,事务故障的恢复由系统自动完成,对用户是透明的,不需要用户干预。,数据库精品课仅供个人学习第10章,47,恢复步骤,10.5.1 事务故障的恢复(续),1. 反向扫描文件日志(即从最后向前扫描日志文件), 查找该事务的更新操作。,2. 对该事务的更新操作执行逆操作。即将日志记录中 “更新前的值” 写入数据库。,若是修改操作,则相当于用修改前值代替修改后值,删除操作,“更新后的值”为空,则相当于做插入操作,插入操作, “更新前的值”为空,则相当于做删除操作,数据库精品课仅供个人学习第10章,48,10.5.1 事务故障的恢复(续),恢复步骤,

20、3. 继续反向扫描日志文件,查找该事务的其他更新操作, 并做同样处理。,4. 如此处理下去,直至读到此事务的开始标记,事务故障 恢复就完成了。,数据库精品课仅供个人学习第10章,49,10.5 恢复策略,10.5.1 事务故障的恢复10.5.2 系统故障的恢复10.5.3 介质故障的恢复,数据库精品课仅供个人学习第10章,50,10.5.2 系统故障的恢复,系统故障造成数据库不一致状态的原因:,未完成事务对数据库的更新已写入数据库;,已提交事务对数据库的更新还留在缓冲区 没来得及写入数据库。,恢复方法,1. Undo 故障发生时未完成的事务,2. Redo 已完成的事务,系统故障的恢复由系统在

21、重新启动时自动完成,不需要用户干预。,数据库精品课仅供个人学习第10章,51,恢复步骤:,10.5.2 系统故障的恢复(续),1.正向扫描日志文件(即从头扫描日志文件),这些事务既有BEGIN TRANSACTION记录,也有COMMIT记录。,这些事务只有BEGIN TRANSACTION记录,无相应的COMMIT记录。,撤销 (Undo)队列:故障发生时尚未完成的事务,重做(REDO) 队列: 在故障发生前已经提交的事务,数据库精品课仅供个人学习第10章,52,10.5.2 系统故障的恢复(续),恢复步骤:,2. 对撤销(Undo)队列事务进行撤销(UNDO)处理,3. 对重做(Redo)

22、队列事务进行重做(REDO)处理,正向扫描日志文件,对每个REDO事务重新执行登记的操作。,即将日志记录中“更新后的值”写入数据库。,即将日志记录中“更新前的值”写入数据库。,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作。,数据库精品课仅供个人学习第10章,53,10.5 恢复策略,10.5.1 事务故障的恢复10.5.2 系统故障的恢复10.5.3 介质故障的恢复,数据库精品课仅供个人学习第10章,54,10.5.3 介质故障的恢复,数据库精品课仅供个人学习第10章,55,10.5.3 介质故障的恢复(续),恢复步骤:,装入最新的后备数据库副本(离故障发生时刻最近的转储副本) ,

23、使数据库恢复到最近一次转储时的一致性状态。,对于静态转储的数据库副本,装入后数据库即处于 一致性状态;,对于动态转储的数据库副本,还须同时装入转储时刻 的日志文件副本,利用与恢复系统故障的方法 (即EDO+UNDO),才能将数据库恢复到一致性状态。,数据库精品课仅供个人学习第10章,56,10.5.3 介质故障的恢复(续),装入有关的日志文件副本(转储结束时刻的日志文件副本) ,重做已完成的事务。,首先扫描日志文件,找出故障发生时已提交的事务的 标识,将其记入重做队列。,然后正向扫描日志文件,对重做队列中的所有事务进 行重做处理。即将日志记录中“更新后的值”写入数据库。,恢复步骤:,数据库精品

24、课仅供个人学习第10章,57,10.5.3 介质故障的恢复(续),介质故障的恢复需要DBA介入,DBA的工作,重装最近转储的数据库副本和有关的各日志文件副本,执行系统提供的恢复命令,具体的恢复操作仍由DBMS完成,数据库精品课仅供个人学习第10章,58,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,59,10.6 具有检查点的恢复技术,一、问题的提出二、检查点技术三、利用检查点的恢复策略,数据库精品课仅供个人

25、学习第10章,60,问题的提出,10.6 具有检查点的恢复技术(续),搜索整个日志将耗费大量的时间,REDO处理:重新执行,浪费了大量时间,两个问题,数据库精品课仅供个人学习第10章,61,解决方案,10.6 具有检查点的恢复技术(续),具有检查点(checkpoint)的恢复技术,在日志文件中增加检查点记录(checkpoint),增加重新开始文件,恢复子系统在登录日志文件期间动态地维护日志,问题的提出,数据库精品课仅供个人学习第10章,62,检查点技术,10.6 具有检查点的恢复技术(续),检查点记录的内容,建立检查点时刻所有正在执行的事务清单,这些事务最近一个日志记录的地址,重新开始文件

26、的内容,记录各个检查点记录在日志文件中的地址,数据库精品课仅供个人学习第10章,63,具有检查点的日志文件和重新开始文件,1,2,3,10.6 具有检查点的恢复技术(续),检查点技术,数据库精品课仅供个人学习第10章,64,10.6 具有检查点的恢复技术(续),动态维护日志文件的方法,周期性地执行如下操作:建立检查点,保存数据库状态。,具体步骤是:,1.将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上;,2.在日志文件中写入一个检查点记录;,3.将当前数据缓冲区的所有数据记录写入磁盘的数据库中;,4.把检查点记录在日志文件中的地址写入一个重新开始文件。,检查点技术,数据库精品课仅供个人学习

27、第10章,65,10.6 具有检查点的恢复技术(续),恢复子系统可以定期或不定期地建立检查点,保存数据库状态。,定期,按照预定的一个时间间隔,如每隔一小时建立一个检查点。,不定期,按照某种规则,如日志文件已写满一半建立一个检查点。,检查点技术,数据库精品课仅供个人学习第10章,66,利用检查点的恢复策略,10.6 具有检查点的恢复技术(续),使用检查点方法可以改善恢复效率。,当事务T在一个检查点之前提交,T对数据库所做的修 改已写入数据库,写入时间是在这个检查点建立之前 或在这个检查点建立之时。这样,在进行恢复处理 时,没有必要对事务T执行REDO操作。,数据库精品课仅供个人学习第10章,67

28、,系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复略。,10.6 具有检查点的恢复技术(续),数据库精品课仅供个人学习第10章,68,10.6 具有检查点的恢复技术(续),利用检查点的恢复步骤:,数据库精品课仅供个人学习第10章,69,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,70,10.7 数据库镜像,介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性。,介质故障恢复比较费时;,

29、为预防介质故障,DBA必须周期性地转储数据库。,提高数据库可用性的解决方案,数据库镜像(Mirror),数据库精品课仅供个人学习第10章,71,10.7 数据库镜像(续),数据库镜像,DBMS自动把整个数据库或其中的关键数据复制到 另一个磁盘上。,DBMS自动保证镜像数据与主数据库的一致性。 每当主数据库更新时,DBMS自动把更新后的数据 复制过去(如下图所示),数据库精品课仅供个人学习第10章,72,数据库镜像的用途,10.7 数据库镜像(续),出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本(如下图所示),数据库精品

30、课仅供个人学习第10章,73,10.7 数据库镜像(续),数据库镜像的用途,没有出现故障时,可用于并发操作,一个用户对数据加排他锁修改数据, 其他用户可以读镜像数据库上的数据, 而不必等待该用户释放锁。,数据库精品课仅供个人学习第10章,74,10.7 数据库镜像(续),频繁地复制数据自然会降低系统运行效率,在实际应用中用户往往只选择对关键数据和日志 文件镜像,而不是对整个数据库进行镜像。,数据库镜像,数据库精品课仅供个人学习第10章,75,第十章 数据库恢复技术,10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点

31、的恢复技术10.7 数据库镜像10.8 小结,数据库精品课仅供个人学习第10章,76,10.8 小结,如果数据库只包含成功事务提交的结果,就说数据库处于一致性状态。保证数据一致性是对数据库的最基本的要求。,事务是数据库的逻辑工作单位,DBMS保证系统中一切事务的原子性、一致性、隔离性和持续性。,数据库精品课仅供个人学习第10章,77,10.8 小结(续),DBMS必须对事务故障、系统故障和介质故障进行恢复。,恢复中最经常使用的技术:数据库转储和登记日志文件。,恢复的基本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库。,数据库精品课仅供个人学习第10章,78,10.8 小结(续),常用恢复技术,UNDO,系统故障的恢复,UNDO + REDO,介质故障的恢复,重装备份并恢复到一致性状态 + REDO,事务故障的恢复,数据库精品课仅供个人学习第10章,79,10.8 小结(续),提高恢复效率的技术,检查点技术,可以提高系统故障的恢复效率。,可以在一定程度上提高利用动态转储备份进行 介质故障恢复的效率。,镜像技术,镜像技术可以改善介质故障的恢复效率。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1