《第讲db恢复》ppt课件_第1页
《第讲db恢复》ppt课件_第2页
《第讲db恢复》ppt课件_第3页
《第讲db恢复》ppt课件_第4页
《第讲db恢复》ppt课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第十章第十章 数据库恢复技术数据库恢复技术事务事务l显式定义方式显式定义方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句语句1 SQL 语句语句1 SQL 语句语句2 SQL 语句语句2 。 。 COMMIT ROLLBACKl隐式方式隐式方式当用户没有显式地定义事务时,当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务按缺省规定自动划分事务 事务事务Transaction是用户定义的一个数据库操是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。可分割的工作单位

2、。事务的特性事务的特性ACID特性特性l原子性原子性Atomicityl一致性一致性Consistencyl隔离性隔离性Isolationl持续性持续性Durability 1. 原子性原子性l事务是数据库的逻辑工作单位事务是数据库的逻辑工作单位l事务中包括的诸操作要么都做,要么都不做事务中包括的诸操作要么都做,要么都不做2. 一致性一致性 事务执行的结果必须是使数据库从一个一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态状态变到另一个一致性状态.例如例如, 银行转帐:从帐号银行转帐:从帐号A中取出一万元,存入帐号中取出一万元,存入帐号B。n这两个操作要么全做,要么全不做

3、这两个操作要么全做,要么全不做n全做或者全不做,数据库都处于一致性状态。全做或者全不做,数据库都处于一致性状态。n如果只做一个操作,数据库就处于不一致性状态。如果只做一个操作,数据库就处于不一致性状态。B=B+1A=A-1BA3. 隔离性隔离性对并发执行而言对并发执行而言一个事务的执行不能被其他事务干扰一个事务的执行不能被其他事务干扰T1的修改被T2覆盖了!读A=16AA-3写回A=13读A=16AA-1写回A=15T2T14. 持续性持续性l持续性也称永久性持续性也称永久性Permanencel一个事务一旦提交,它对数据库中数据的改变就应一个事务一旦提交,它对数据库中数据的改变就应该是永久性

4、的。该是永久性的。l接下来的其他操作或故障不应该对其执行结果有任接下来的其他操作或故障不应该对其执行结果有任何影响。何影响。回忆回忆l什么叫事务?什么叫事务?l如何用如何用SQL语句定义事务?语句定义事务?l事务的特性?事务的特性?l在哪些情况下事务的特性可能遭到破坏?在哪些情况下事务的特性可能遭到破坏?一、故障的种类一、故障的种类1.1.事务故障:事务故障:l事务在运行过程中被中断,没有到达事务在运行过程中被中断,没有到达预期的终点预期的终点。l例如:运算溢出,并发死锁而被撤销的事务例如:运算溢出,并发死锁而被撤销的事务l考虑:事务故障带来的问题及恢复方法考虑:事务故障带来的问题及恢复方法2

5、.2.系统故障:系统故障:l造成系统停顿运转的事件,影响所有正在运行的事务。造成系统停顿运转的事件,影响所有正在运行的事务。l例如:系统断电,例如:系统断电,CPUCPU故障,故障,OSOS故障等故障等l考虑:系统故障带来的问题及恢复方法考虑:系统故障带来的问题及恢复方法3.3.介质故障:介质故障:l硬故障,指外存故障,如磁盘损坏、磁场干扰等。硬故障,指外存故障,如磁盘损坏、磁场干扰等。4.4.计算机病毒计算机病毒二、恢复的实现技术二、恢复的实现技术l根本原理:冗余根本原理:冗余 当数据库被破坏或产生不正确的数据时,用存储当数据库被破坏或产生不正确的数据时,用存储在别处的冗余数据来重建。在别处

6、的冗余数据来重建。l 如何建立冗余数据?如何建立冗余数据? 数据转储数据转储 登记日志文件登记日志文件1 1 数据转储数据转储l转储是指转储是指DBADBA定期地将整个数据库复制到磁带或另一定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程;备用数据称为副本。个磁盘上保存起来的过程;备用数据称为副本。l当数据库被破坏,可将副本重新装入。当数据库被破坏,可将副本重新装入。 故障发生点故障发生点 转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb Tf Tf 重装后备副本重装后备副本 重新运行事务重新运行事务恢复恢复 转储和恢复:转储和恢复:转储的分类转储的分类静态转储:转

7、储过程中不允许运行事务。静态转储:转储过程中不允许运行事务。动态转储:转储过程中允许运行事务。动态转储:转储过程中允许运行事务。考虑:考虑:l转储得到的副本上的数据是否正确有效?转储得到的副本上的数据是否正确有效?海量转储:转储全部数据。海量转储:转储全部数据。增量转储:只转储上一次转储后更新过的数据。增量转储:只转储上一次转储后更新过的数据。考虑:考虑:l用哪种转储方式得到的副本进展恢复更方便?为什么?用哪种转储方式得到的副本进展恢复更方便?为什么?l假如数据库很大,使用哪种方式转储更有效?假如数据库很大,使用哪种方式转储更有效?利用静态转储副本进展恢复利用静态转储副本进展恢复 故障发生点故

8、障发生点 静态静态转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb Tf Tf 重装后备副本重装后备副本 恢复恢复 利用动态转储副本进展恢复利用动态转储副本进展恢复 Ta Ta Tb Tb Tf Tf 动态动态转储转储 运行事务运行事务 故障发生点故障发生点正常运行正常运行 登记日志文件登记日志文件 登记新日志文件登记新日志文件 转储日志文件转储日志文件 重装后备副本,然后利用转储的日志文件恢复重装后备副本,然后利用转储的日志文件恢复恢复到一恢复到一 致性状态致性状态转储方法小结转储方法小结 转储状态转储状态动态转储动态转储静态转储静态转储转储转储方式方式海量转储海量转储动

9、态海量转储动态海量转储静态海量转储静态海量转储增量转储增量转储动态增量转储动态增量转储静态增量转储静态增量转储2 2 日志文件日志文件日志文件是用来记录事务对数据库的更新操作的文件日志文件是用来记录事务对数据库的更新操作的文件日志文件的内容,包括:事务开场标记、完毕标记、日志文件的内容,包括:事务开场标记、完毕标记、更新操作更新操作每个日志记录包括:每个日志记录包括: 事务标识事务标识 操作类型操作类型 操作对象操作对象 更新前数据的旧值更新前数据的旧值 更新后数据的新值更新后数据的新值作用:事务故障和系统故障的恢复;作用:事务故障和系统故障的恢复; 协助后备副本恢复数据库;协助后备副本恢复数

10、据库;登记日志文件的原那么:按时间次序登记;登记日志文件的原那么:按时间次序登记;先写日志先写日志文件文件,后写数据库,后写数据库 三、恢复策略三、恢复策略1 1 事务故障的恢复事务故障的恢复l由恢复子系统应利用日志文件由恢复子系统应利用日志文件撤消撤消UNDOUNDO此事务已此事务已对数据库进展的修改。对数据库进展的修改。l事务故障的恢复由系统自动完成,不需要用户干预。事务故障的恢复由系统自动完成,不需要用户干预。l恢复步骤:恢复步骤:1 1反向扫描反向扫描文件日志,查找该事务的更新操作;文件日志,查找该事务的更新操作;2 2对该事务的更新操作执行对该事务的更新操作执行逆操作逆操作。即将日志

11、记录中。即将日志记录中“更新更新前的值写入数据库;前的值写入数据库;3 3继续反向扫描日志文件,查找该事务的其他更新操作,并继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理;做同样处理;4 4如此处理直至读到此事务的开场标记,事务故障恢复完成。如此处理直至读到此事务的开场标记,事务故障恢复完成。2 2 系统故障的恢复系统故障的恢复l系统故障造成数据库不一致状态的原因系统故障造成数据库不一致状态的原因l一些一些未完成事务未完成事务对数据库的更新已写入数据库对数据库的更新已写入数据库l一些一些已提交事务已提交事务对数据库的更新还留在缓冲区没对数据库的更新还留在缓冲区没来得及写入数据库来

12、得及写入数据库l恢复方法恢复方法l1. Undo 1. Undo 故障发生时未完成的事务故障发生时未完成的事务l2. Redo 2. Redo 已完成的事务已完成的事务l系统故障的恢复由系统在系统故障的恢复由系统在重新启动时重新启动时自动完成,不自动完成,不需要用户干预需要用户干预l 系统故障的恢复步骤系统故障的恢复步骤1 正向扫描日志文件即从头扫描日志文件正向扫描日志文件即从头扫描日志文件lRedo队列队列: 在故障发生前已经提交的事务在故障发生前已经提交的事务lUndo队列队列:故障发生时尚未完成的事务故障发生时尚未完成的事务2对对Undo队列事务进展队列事务进展UNDO处理处理 反向扫描

13、日志文件,对每个反向扫描日志文件,对每个UNDO事务的更新操事务的更新操作执行逆操作作执行逆操作3对对Redo队列事务进展队列事务进展REDO处理处理 正向扫描日志文件,对每个正向扫描日志文件,对每个REDO事务重新执行事务重新执行登记过的操作登记过的操作 3 3 介质故障的恢复介质故障的恢复l恢复步骤恢复步骤1 1装入最新的数据库副本,使数据库恢复到装入最新的数据库副本,使数据库恢复到最近最近一次转储时一次转储时的一致性状态。的一致性状态。l对于对于静态转储静态转储的数据库副本,装入后数据库即的数据库副本,装入后数据库即处于一致性状态处于一致性状态l对于对于动态转储动态转储的数据库副本,还须

14、同时装入转的数据库副本,还须同时装入转储时刻的日志文件副本,利用恢复系统故障的储时刻的日志文件副本,利用恢复系统故障的方法即方法即REDO+UNDOREDO+UNDO,才能将数据库恢复到,才能将数据库恢复到一致性状态。一致性状态。2 2 装入相应的日志文件副本,重做已完成的事务。装入相应的日志文件副本,重做已完成的事务。l首先扫描日志文件,找出故障发生时已提交的首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。事务的标识,将其记入重做队列。l然后正向扫描日志文件,对重做队列中的所有然后正向扫描日志文件,对重做队列中的所有事务进展重做处理。即将日志记录中事务进展重做处理。即将

15、日志记录中“更新后更新后的值写入数据库。的值写入数据库。1.1.事务的隔离性是由事务的隔离性是由DBMSDBMS的的 A. A.恢复子系统出现恢复子系统出现 B.B.完好性子系统实现完好性子系统实现 C.C.平安性子系统实现平安性子系统实现 D.D.并发控制子系统实现并发控制子系统实现 2.2.在数据库系统中死锁属于在数据库系统中死锁属于 A. A.系统故障系统故障 B.B.程序故障程序故障 C.C.事务故事务故障障 D.D.介质故障介质故障3.3.假设一个事务执行成功,那么它的全部更新被提交;假假设一个事务执行成功,那么它的全部更新被提交;假设一个事务执行失败,那么设一个事务执行失败,那么D

16、BDB中被其更新过的数据恢复原中被其更新过的数据恢复原状,就象这些更新从未发生过,这保持了数据库处于状,就象这些更新从未发生过,这保持了数据库处于 A.A.平安性状态平安性状态 B.B.一致性状态一致性状态 C.C.完好性状态完好性状态 D.D.可靠性状态可靠性状态 练习:练习:四、具有检查点的恢复技术四、具有检查点的恢复技术1 1 利用日志进展数据库恢复时遇到的问题:利用日志进展数据库恢复时遇到的问题:l搜索整个日志将消耗大量的时间搜索整个日志将消耗大量的时间lREDOREDO处理:重新执行,浪费大量时间处理:重新执行,浪费大量时间2 2 解决方案:具有检查点的恢复技术解决方案:具有检查点的

17、恢复技术n在日志文件中增加在日志文件中增加检查点记录检查点记录checkpointcheckpointn增加重新开场文件增加重新开场文件3 具有检查点的日志文件和重新开场文件:具有检查点的日志文件和重新开场文件:周期性执行如下操作:周期性执行如下操作:1. 将当前日志缓冲区中的所有日志记录写入磁盘的将当前日志缓冲区中的所有日志记录写入磁盘的日志日志文件上;文件上;2. 在日志文件中写入一个在日志文件中写入一个检查点检查点记录;记录;3. 将当前数据缓冲区的所有数据记录写入磁盘的将当前数据缓冲区的所有数据记录写入磁盘的数据库数据库中;中;4. 把检查点记录在日志文件中的地址写入把检查点记录在日志

18、文件中的地址写入重新开场文件重新开场文件。l4. 把检查点记录在日志文件中的地址写入一个重新开场文件。把检查点记录在日志文件中的地址写入一个重新开场文件。4 利用检查点的恢复策略利用检查点的恢复策略当事务当事务T在一个检查点之前提交,在一个检查点之前提交,T对数据库所做的对数据库所做的修改一定已写入数据库修改一定已写入数据库在进展恢复处理时,没有必要对事务在进展恢复处理时,没有必要对事务T执执REDO操作操作Tc (检查点检查点)Tf(系统故障系统故障) REDOUNDOUNDO REDOT2T3T4T5不要不要REDOT15 使用检查点方法进展恢复的步骤使用检查点方法进展恢复的步骤1 1从重

19、新开场文件中找到从重新开场文件中找到最后一个检查点记录最后一个检查点记录在日志在日志文件中的地址,由该地址在日志文件中找到最后一文件中的地址,由该地址在日志文件中找到最后一个检查点记录;个检查点记录;2 2由该检查点记录得到检查点建立时刻所有正在执行由该检查点记录得到检查点建立时刻所有正在执行的的事务清单事务清单ACTIVE-LISTACTIVE-LISTl建立两个事务队列建立两个事务队列lUNDO-LIST UNDO-LIST lREDO-LIST REDO-LIST l把把ACTIVE-LISTACTIVE-LIST暂时放入暂时放入UNDO-LISTUNDO-LIST队列,队列,REDOR

20、EDO队队列暂为空。列暂为空。3 3从检查点开场从检查点开场正向扫描日志文件,直到日志文件正向扫描日志文件,直到日志文件完毕完毕l如有如有新开场的新开场的事务事务T Ti i,把,把T Ti i暂时放入暂时放入UNDO-LISTUNDO-LIST队列队列l如有如有提交的提交的事务事务T Tj j,把,把T Tj j从从UNDO-LISTUNDO-LIST队列移到队列移到REDO-LISTREDO-LIST队列队列4 4对对UNDO-LISTUNDO-LIST中的每个事务执行中的每个事务执行UNDOUNDO操作操作, , 对对REDO-LISTREDO-LIST中的每个事务执行中的每个事务执行R

21、EDOREDO操作操作小结小结l事务是数据库的逻辑工作单位事务是数据库的逻辑工作单位lDBMS保证系统中一切事务的保证系统中一切事务的ACID特性特性l恢复的根本原理:利用存储在后备副本、日志文件恢复的根本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库和数据库镜像中的冗余数据来重建数据库l常用恢复技术常用恢复技术l事务故障的恢复事务故障的恢复lUNDOl系统故障的恢复系统故障的恢复lUNDO + REDOl介质故障的恢复介质故障的恢复l重装备份并恢复到一致性状态重装备份并恢复到一致性状态 + REDO小结续小结续 l进步恢复效率的技术进步恢复效率的技术l检查点技术检查点

22、技术l可以进步系统故障的恢复效率可以进步系统故障的恢复效率l镜像技术镜像技术l镜像镜像技术可以改善介质故障的恢复效率技术可以改善介质故障的恢复效率练习:练习:设有四个事务设有四个事务:Tl,T2,T3,T4;:Tl,T2,T3,T4;在系统崩溃之前,系统在日志中记录了在系统崩溃之前,系统在日志中记录了如下内容如下内容: :Start-Transaction,Tl;Read-Item,T1,A;Read-ItemStart-Transaction,Tl;Read-Item,T1,A;Read-Item,T1,D;T1,D;White-Item,T1,D,20;Commit,T1;White-Item,T1,D,20;Commit,T1;CheckpointCheckpoint; ;Start-TransactionStart-Transaction,T2;Read-Item,T2,B;Write-ltem,T2,B,l2;T2;Read-Item,T2,B;Write-ltem,T2,B,l2;Start-TransactionStart-Transaction,T4;Read-Item,T4,B;Write-Item,T4,B,l5;T4;Read-Item,T4,B

温馨提示

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

评论

0/150

提交评论