数据库恢复技术

上传人:人*** 文档编号:589139166 上传时间:2024-09-10 格式:PPT 页数:69 大小:397.01KB
返回 下载 相关 举报
数据库恢复技术_第1页
第1页 / 共69页
数据库恢复技术_第2页
第2页 / 共69页
数据库恢复技术_第3页
第3页 / 共69页
数据库恢复技术_第4页
第4页 / 共69页
数据库恢复技术_第5页
第5页 / 共69页
点击查看更多>>
资源描述

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

1、数据库恢复技术数据库恢复技术第第7章章n 事务的基本概念事务的基本概念n 数据库恢复概述数据库恢复概述n 故障的种类故障的种类n 恢复的技术实现恢复的技术实现n 恢复策略恢复策略n 具有检查点的恢复技术具有检查点的恢复技术n 数据库镜像数据库镜像n OracleOracle的恢复技术的恢复技术9/10/20241数据库原理第三篇第三篇 系统篇系统篇n数数据据库库系系统统中中的的数数据据是是由由DBMSDBMS统统一一管管理理和和控控制制的的,为为了了适适应应数数据据共共享享的的环环境境,DBMSDBMS必必须须提提供供数数据据保保护护能能力力,以以保保证证数数据据库库中中数数据据的的安安全全可

2、可靠靠和和正正确确有效有效。n数据保护数据保护p 安全性安全性p 完整性完整性p 并发控制并发控制p 数据库恢复数据库恢复第七章第七章 数据库恢复技术数据库恢复技术第八章第八章 并发控制并发控制第九章第九章 数据库安全性数据库安全性第十章第十章 数据库完整性数据库完整性9/10/20242数据库原理7.1 7.1 事务的基本概念事务的基本概念n 什么是事务什么是事务n 如何定义事务如何定义事务n 事务的特性事务的特性9/10/20243数据库原理什么是事务什么是事务n n事事事事务务务务(Transaction)(Transaction)(Transaction)(Transaction)是是

3、是是用用用用户户户户定定定定义义义义的的的的一一一一个个个个数数数数据据据据库库库库操操操操作作作作序序序序列列列列,这这这这些些些些操操操操作作作作要要要要么么么么全全全全做做做做,要要要要么么么么全全全全不不不不做做做做,是是是是一一一一个个个个不不不不可可可可分割分割分割分割的工作单位。的工作单位。的工作单位。的工作单位。n n事务和程序是两个概念事务和程序是两个概念事务和程序是两个概念事务和程序是两个概念n n在在在在关关关关系系系系数数数数据据据据库库库库中中中中,一一一一个个个个事事事事务务务务可可可可以以以以是是是是一一一一条条条条SQLSQLSQLSQL语语语语句句句句,一组一

4、组一组一组SQLSQLSQLSQL语句或整个程序。语句或整个程序。语句或整个程序。语句或整个程序。n n一个应用程序通常包含多个事务一个应用程序通常包含多个事务一个应用程序通常包含多个事务一个应用程序通常包含多个事务n n事务是恢复和并发控制的事务是恢复和并发控制的事务是恢复和并发控制的事务是恢复和并发控制的基本单位基本单位基本单位基本单位9/10/20244数据库原理n显式定义方式显式定义方式 BEGIN TRANSACTION BEGIN TRANSACTIONBEGIN TRANSACTION BEGIN TRANSACTION SQL SQL 语句语句1 1 SQL SQL 语句语句1

5、 1 SQL SQL 语句语句2 2 SQL SQL 语句语句2 2 。 。 COMMIT ROLLBACKCOMMIT ROLLBACKn隐式方式隐式方式当用户没有显式地定义事务时,当用户没有显式地定义事务时,DBMSDBMS按缺省规定自动划分事务。按缺省规定自动划分事务。如何定义事务如何定义事务9/10/20245数据库原理COMMITCOMMITp 事务正常结束事务正常结束 p 提交事务的所有操作提交事务的所有操作p 事务中所有对数据库的更新写回到磁盘物理数据库事务中所有对数据库的更新写回到磁盘物理数据库ROLLBACKROLLBACKp 事务异常终止事务异常终止p 事务运行的过程中发生

6、了故障,不能继续执行事务运行的过程中发生了故障,不能继续执行p 将事务中对数据库的所有已完成的操作全部撤销将事务中对数据库的所有已完成的操作全部撤销p 事务滚回到开始时的状态事务滚回到开始时的状态9/10/20246数据库原理事务的特性事务的特性n原子性原子性(AtomicityAtomicity)n一致性一致性(ConsistencyConsistency)n隔离性隔离性(IsolationIsolation)n持续性持续性(Durability Durability )事务是数据库的逻辑工作单位,事务是数据库的逻辑工作单位,事务中包括的事务中包括的诸操作要么都做,要么都不做。诸操作要么都做

7、,要么都不做。9/10/20247数据库原理一致性一致性n事务执行的结果必须是使数据库从一个一致性状态事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态变到另一个一致性状态一致性状态:一致性状态: 数据库中只包含成功事务提交的结果数据库中只包含成功事务提交的结果不一致状态:不一致状态: 数据库中包含失败事务的结果数据库中包含失败事务的结果9/10/20248数据库原理银行转帐:从帐号银行转帐:从帐号A A中取出一万元,存入帐号中取出一万元,存入帐号B B。n定义一个事务,该事务包括两个操作定义一个事务,该事务包括两个操作n这两个操作要么全做,要么全不做。这两个操作要么全做,要么全

8、不做。p 全做或者全不做,数据库都处于一致性状态。全做或者全不做,数据库都处于一致性状态。p 如果只做一个操作,数据库就处于不一致性如果只做一个操作,数据库就处于不一致性状态。状态。 B=B+1B=B+1B=B+1B=B+1 A=A-1A=A-1A=A-1A=A-1B BA A9/10/20249数据库原理隔离性隔离性n一个事务的执行不能被其他事务干扰一个事务的执行不能被其他事务干扰n一个事务内部的操作及使用的数据对其他并发事一个事务内部的操作及使用的数据对其他并发事务是隔离的务是隔离的n并发执行的各个事务之间不能互相干扰并发执行的各个事务之间不能互相干扰9/10/202410数据库原理 读读

9、读读A=16A=16A=16A=16 AA-3AA-3AA-3AA-3写回写回写回写回A=13A=13A=13A=13 读读读读A=16A=16A=16A=16 AA-1 AA-1 AA-1 AA-1 写回写回写回写回A=15A=15A=15A=15 T T2 2T T1 1T T1 1的修改被的修改被T T2 2覆盖了!覆盖了!9/10/202411数据库原理持久性持久性n持续性也称永久性(持续性也称永久性(PermanencePermanence)p 一个事务一旦提交,它对数据库中数据的一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。改变就应该是永久性的。p 接下来的其他操作或故

10、障不应该对其执行接下来的其他操作或故障不应该对其执行结果有任何影响。结果有任何影响。9/10/202412数据库原理n保证事务保证事务ACIDACID特性是事务处理的任务特性是事务处理的任务n破坏事务破坏事务ACIDACID特性的因素特性的因素p 多个事务并行运行时,不同事务的操作多个事务并行运行时,不同事务的操作交叉交叉执行执行p 事务在运行过程中被事务在运行过程中被强行停止强行停止9/10/202413数据库原理7.2 7.2 数据库恢复概述数据库恢复概述n故障是不可避免的故障是不可避免的p计算机硬件故障计算机硬件故障p系统软件和应用软件的错误系统软件和应用软件的错误p操作员的失误操作员的

11、失误p恶意的破坏恶意的破坏n故障的影响故障的影响p运行事务非正常中断运行事务非正常中断p破坏数据库破坏数据库9/10/202414数据库原理n数据库管理系统对故障的对策数据库管理系统对故障的对策p DBMSDBMS提供恢复子系统提供恢复子系统p 保证故障发生后,能把数据库中的数据从错误保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态。状态恢复到某种逻辑一致的状态。p 保证事务保证事务ACIDACIDn恢复技术是衡量系统优劣的重要指标恢复技术是衡量系统优劣的重要指标9/10/202415数据库原理7.3 7.3 故障的种类故障的种类 数据库运行过程中可能发生的故障主要有:数据

12、库运行过程中可能发生的故障主要有:p 事务内部故障事务内部故障p 系统故障系统故障p 介质故障介质故障p 计算机病毒计算机病毒各类故障,对数据库的影响有两种可能性:各类故障,对数据库的影响有两种可能性:u 数据库本身被破坏数据库本身被破坏;u 数据库没有破坏,但数据库没有破坏,但数据可能不正确数据可能不正确。9/10/202416数据库原理事务内部的故障事务内部的故障n什么是事务故障什么是事务故障p某个事务在运行过程中由于种种原因未运行至正某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了常终止点就夭折了n事务故障的常见原因事务故障的常见原因p输入数据有误输入数据有误p运算溢出运算溢出

13、p违反了某些完整性限制违反了某些完整性限制p某些应用程序出错某些应用程序出错p并行事务发生死锁并行事务发生死锁p。9/10/202417数据库原理n发生事务故障时,夭折的事务可能已把对数据库的发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘。部分修改写回磁盘。n事务故障的恢复:撤消事务(事务故障的恢复:撤消事务(UNDOUNDO)n强行回滚(强行回滚(ROLLBACKROLLBACK)该事务该事务n清除该事务对数据库的所有修改,使得这个事务象清除该事务对数据库的所有修改,使得这个事务象根本没有启动过一样。根本没有启动过一样。事务故障的恢复事务故障的恢复9/10/202418数据库原

14、理系统故障系统故障n什么是系统故障什么是系统故障p整个系统的正常运行突然被破坏整个系统的正常运行突然被破坏p所有正在运行的事务都非正常终止所有正在运行的事务都非正常终止p内存中数据库缓冲区的信息全部丢失内存中数据库缓冲区的信息全部丢失p外部存储设备上的数据未受影响外部存储设备上的数据未受影响9/10/202419数据库原理系统故障的常见原因系统故障的常见原因n操作系统或操作系统或DBMSDBMS代码错误代码错误n操作员操作失误操作员操作失误n特定类型的硬件错误(如特定类型的硬件错误(如CPUCPU故障)故障)n突然停电突然停电9/10/202420数据库原理n 清除尚未完成的事务对数据库的所有

15、修改清除尚未完成的事务对数据库的所有修改p系统重新启动时,恢复程序要强行撤消(系统重新启动时,恢复程序要强行撤消(UNDOUNDO)所有未完成事务。所有未完成事务。n将缓冲区中已完成事务提交的结果写入数据库将缓冲区中已完成事务提交的结果写入数据库p系统重新启动时,恢复程序需要重做(系统重新启动时,恢复程序需要重做(REDOREDO)所所有已提交的事务。有已提交的事务。系统故障的恢复系统故障的恢复9/10/202421数据库原理介质故障介质故障n硬件故障使存储在外存中的数据部分丢失或全部硬件故障使存储在外存中的数据部分丢失或全部丢失丢失n介质故障比前两类故障的可能性小得多,但破坏介质故障比前两类

16、故障的可能性小得多,但破坏性大得多。性大得多。9/10/202422数据库原理n硬件故障硬件故障p磁盘损坏磁盘损坏p磁头碰撞磁头碰撞p操作系统的某种潜在错误操作系统的某种潜在错误p瞬时强磁场干扰瞬时强磁场干扰介质故障的常见原因介质故障的常见原因9/10/202423数据库原理介质故障的恢复介质故障的恢复n装入数据库发生介质故障前某个时刻的数据副本装入数据库发生介质故障前某个时刻的数据副本n重做自此时始的所有成功事务,将这些事务已提交重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库。的结果重新记入数据库。9/10/202424数据库原理恢复操作的基本原理恢复操作的基本原理n恢复操

17、作的基本原理:冗余恢复操作的基本原理:冗余p利用存储在系统其它地方的冗余数据来重建利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据数据库中已被破坏或不正确的那部分数据n恢复的实现技术:复杂恢复的实现技术:复杂p一个大型数据库产品,恢复子系统的代码要一个大型数据库产品,恢复子系统的代码要占全部代码的占全部代码的10%10%以上。以上。9/10/202425数据库原理7.4 7.4 恢复的实现技术恢复的实现技术恢复机制涉及的关键问题恢复机制涉及的关键问题1. 1. 如何建立冗余数据如何建立冗余数据p 数据转储数据转储(backupbackup)p 登录日志文件登录日志文件

18、(logginglogging)2. 2. 如何利用这些冗余数据实施数据库恢复如何利用这些冗余数据实施数据库恢复9/10/202426数据库原理7.47.4.1.1 数据转储数据转储n转储是指转储是指DBADBA将整个数据库复制到磁带或另一个磁盘将整个数据库复制到磁带或另一个磁盘上保存起来的过程。上保存起来的过程。n这些备用的数据文本称为后备副本或后援副本。这些备用的数据文本称为后备副本或后援副本。 故障发生点故障发生点 转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb TfTf 重装后备副本重装后备副本 重新运行事务重新运行事务恢复恢复 9/10/202427数据库原理转

19、储的方法转储的方法p 静态转储与动态转储静态转储与动态转储p 海量转储与增量转储海量转储与增量转储p 转储方法小结转储方法小结9/10/202428数据库原理n在系统中无运行事务时进行转储在系统中无运行事务时进行转储n转储开始时数据库处于一致性状态转储开始时数据库处于一致性状态n转储期间不允许对数据库的任何存取、修改活动转储期间不允许对数据库的任何存取、修改活动n优点:实现简单优点:实现简单n缺点:降低了数据库的可用性缺点:降低了数据库的可用性p转储必须等用户事务结束转储必须等用户事务结束p新的事务必须等转储结束新的事务必须等转储结束静态转储静态转储9/10/202429数据库原理 故障发生点

20、故障发生点 静态静态转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb TfTf 重装后备副本重装后备副本 恢复恢复 9/10/202430数据库原理n转储操作与用户事务并发进行转储操作与用户事务并发进行n转储期间允许对数据库进行存取或修改转储期间允许对数据库进行存取或修改n优点优点p 不用等待正在运行的用户事务结束不用等待正在运行的用户事务结束p 不会影响新事务的运行不会影响新事务的运行n缺点:不能保证副本中的数据正确有效缺点:不能保证副本中的数据正确有效动态转储动态转储n利用动态转储得到的副本进行故障恢复利用动态转储得到的副本进行故障恢复p需要把动态转储期间各事务对数据库

21、的修改活动需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件。登记下来,建立日志文件。p后备副本加上日志文件才能把数据库恢复到某一后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态时刻的正确状态9/10/202431数据库原理 运运行行事事务务 故障发生点故障发生点 动态动态转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb TfTf重装后备副本重装后备副本 利用日志文件恢复利用日志文件恢复恢复恢复 9/10/202432数据库原理 Ta Ta Tb Tb TfTf 动态动态转储转储 运行事务运行事务 故障发故障发生点生点正常运行正常运行 登记日志文件登记

22、日志文件 登记新日志文件登记新日志文件 转储日志文件转储日志文件 重装后备副本,然后利用转储的日志文件恢复重装后备副本,然后利用转储的日志文件恢复恢复到一恢复到一 致性状态致性状态9/10/202433数据库原理海量转储、增量转储海量转储、增量转储n海量转储海量转储: : 每次转储全部数据库每次转储全部数据库n增量转储增量转储: : 只转储上次转储后更新过的数据只转储上次转储后更新过的数据n海量转储与增量转储比较海量转储与增量转储比较p从恢复角度看,使用海量转储得到的后备副本进从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便。行恢复往往更方便。p但如果数据库很大,事务处理又十分频繁,

23、则增但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。量转储方式更实用更有效。9/10/202434数据库原理转储方法小结转储方法小结转储状态转储状态动态转储动态转储静态转储静态转储转储转储方式方式海量转储海量转储动态海量转储动态海量转储静态海量转储静态海量转储增量转储增量转储动态增量转储动态增量转储静态增量转储静态增量转储表表7.1 7.1 数据转储的分类数据转储的分类9/10/202435数据库原理n应定期进行数据转储,制作后备副本。应定期进行数据转储,制作后备副本。n但转储又是十分耗费时间和资源的,不能频繁进行。但转储又是十分耗费时间和资源的,不能频繁进行。nDBADBA

24、应该根据数据库使用情况确定适当的转储周期和应该根据数据库使用情况确定适当的转储周期和转储方法。例:转储方法。例:p 每天晚上进行动态增量转储每天晚上进行动态增量转储p 每周进行一次动态海量转储每周进行一次动态海量转储p 每月进行一次静态海量转储每月进行一次静态海量转储转储策略转储策略9/10/202436数据库原理7.47.4.2.2 登记日志文件登记日志文件n日志文件的内容日志文件的内容n日志文件的用途日志文件的用途n登记日志文件的原则登记日志文件的原则9/10/202437数据库原理日志文件的内容日志文件的内容1. 1. 什么是日志文件什么是日志文件 日志文件日志文件(log)(log)是

25、用来记录事务对数据库的更新操作的是用来记录事务对数据库的更新操作的文件文件2. 2. 日志文件的格式日志文件的格式p 以以记录记录为单位的日志文件为单位的日志文件p 以以数据块数据块为单位的日志文件为单位的日志文件3. 3. 日志文件内容日志文件内容p 各个事务的开始标记各个事务的开始标记(BEGIN TRANSACTION)(BEGIN TRANSACTION)p 各个事务的结束标记各个事务的结束标记(COMMIT(COMMIT或或ROLLBACK)ROLLBACK)p 各个事务的所有更新操作各个事务的所有更新操作 日志文件中的一个日志记录日志文件中的一个日志记录 (log record)(

26、log record)9/10/202438数据库原理每条日志记录的内容每条日志记录的内容p事务标识事务标识p操作类型(插入、删除或修改)操作类型(插入、删除或修改)p操作对象(记录的内部标识)操作对象(记录的内部标识)p更新前数据的旧值(对插入操作而言,此项为空值)更新前数据的旧值(对插入操作而言,此项为空值)p更新后数据的新值(对删除操作而言更新后数据的新值(对删除操作而言, , 此项为空值)此项为空值)4.4.基于记录的日志文件基于记录的日志文件9/10/202439数据库原理每条日志记录的内容每条日志记录的内容p事务标识(标明是那个事务)事务标识(标明是那个事务)p更新前数据所在的整个

27、数据块的值(对插入操作更新前数据所在的整个数据块的值(对插入操作而言,此项为空值)而言,此项为空值)p更新后整个数据块的值(对删除操作而言更新后整个数据块的值(对删除操作而言, , 此项此项为空值)为空值)5.5.基于数据块的日志文件基于数据块的日志文件9/10/202440数据库原理日志文件的用途日志文件的用途p事务故障事务故障恢复和恢复和系统故障系统故障恢复恢复必须用日志文件必须用日志文件。p动态转储动态转储方式中,方式中,必须建立日志文件必须建立日志文件,后援副本和,后援副本和日志文件综合起来有效地恢复数据库。日志文件综合起来有效地恢复数据库。p静态转储静态转储方式中,也方式中,也可以建

28、立日志文件可以建立日志文件。当数据库。当数据库破坏后可重新装入后援副本把数据库恢复到转储结破坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,然后利用日志文件,把已完成束时刻的正确状态,然后利用日志文件,把已完成的事务进行重做处理,对故障发生时尚未完成的事的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。务进行撤销处理。9/10/202441数据库原理 故障发生点故障发生点 静态转储静态转储 运行事务运行事务 正常运行正常运行 Ta Tb Ta Tb TfTf 登记日志文件登记日志文件 重装后备副本重装后备副本 利用日志文件恢复事务利用日志文件恢复事务 继续运行继续运行介质

29、故障恢复介质故障恢复 登记日志文件登记日志文件 9/10/202442数据库原理登记日志文件的原则登记日志文件的原则n为保证数据库是可恢复的,登记日志文件时必须遵循为保证数据库是可恢复的,登记日志文件时必须遵循两条原则两条原则: :p登记的次序严格按并行事务执行的时间次序登记的次序严格按并行事务执行的时间次序p必须先写日志文件,后写数据库必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写日志文件操作:把表示这个修改的日志记录 写到日志文件。写到日志文件。写数据库操作:把对数据的修改写到数据库中。写数据库操作:把对数据的修改写到数据库中。9/10/202443数据库原理n为什

30、么要先写日志文件为什么要先写日志文件p写数据库和写日志文件是两个不同的操作。写数据库和写日志文件是两个不同的操作。p在这两个操作之间可能发生故障。在这两个操作之间可能发生故障。p如果先写了数据库修改,而在日志文件中没有登如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了。记下这个修改,则以后就无法恢复这个修改了。p如果先写日志,但没有修改数据库,按日志文件如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的恢复时只不过是多执行一次不必要的UNDOUNDO操作,操作,并不会影响数据库的正确性。并不会影响数据库的正确性。9/10/202444数

31、据库原理7.5 7.5 恢复策略恢复策略n 事务故障恢复事务故障恢复n 系统故障恢复系统故障恢复n 介质故障恢复介质故障恢复9/10/202445数据库原理7.5.1 7.5.1 事务故障恢复事务故障恢复n事务故障:事务在运行至正常终止点前被中止事务故障:事务在运行至正常终止点前被中止n恢复方法恢复方法p由恢复子系统应利用日志文件撤消(由恢复子系统应利用日志文件撤消(UNDOUNDO)此事此事务已对数据库进行的修改务已对数据库进行的修改n事务故障的恢复由系统事务故障的恢复由系统自动完成自动完成,不需要用户干预,不需要用户干预9/10/202446数据库原理事务故障恢复步骤事务故障恢复步骤1.

32、1. 反反向向扫扫描描文文件件日日志志(即即从从最最后后向向前前扫扫描描日日志志文文件件),查查找找该该事务的更新操作。事务的更新操作。2. 2. 对对该该事事务务的的更更新新操操作作执执行行逆逆操操作作。即即将将日日志志记记录录中中“更更新新前前的值的值” ” 写入数据库。写入数据库。n插入操作,插入操作,“更新前的值更新前的值”为空,则相当于做删除操作;为空,则相当于做删除操作;n删除操作,删除操作,“更新后的值更新后的值”为空,则相当于做插入操作;为空,则相当于做插入操作;n若是修改操作,则用修改前值代替修改后值。若是修改操作,则用修改前值代替修改后值。3. 3. 继继续续反反向向扫扫描

33、描日日志志文文件件,查查找找该该事事务务的的其其他他更更新新操操作作,并并做做同样处理。同样处理。4. 4. 如如此此处处理理下下去去,直直至至读读到到此此事事务务的的开开始始标标记记,事事务务故故障障恢恢复复就完成了。就完成了。9/10/202447数据库原理7.5.2 7.5.2 系统故障恢复系统故障恢复n系统故障造成数据库不一致状态的原因系统故障造成数据库不一致状态的原因p一些未完成事务对数据库的更新已写入数据库一些未完成事务对数据库的更新已写入数据库p一些已提交事务对数据库的更新还留在缓冲区没一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库来得及写入数据库n恢复方法恢复方法p

34、 Undo Undo 故障发生时未完成的事务故障发生时未完成的事务p Redo Redo 已完成的事务已完成的事务n系统故障的恢复由系统在系统故障的恢复由系统在重新启动时重新启动时自动完成,不需自动完成,不需要用户干预要用户干预9/10/202448数据库原理系统故障恢复步骤系统故障恢复步骤1.1.正向扫描日志文件(即从头扫描日志文件)正向扫描日志文件(即从头扫描日志文件)nRedoRedo队列队列: : 在故障发生前已经提交的事务在故障发生前已经提交的事务 T1, T3, T8.T1, T3, T8.nUndoUndo队列队列: :故障发生时尚未完成的事务故障发生时尚未完成的事务 T2, T

35、4, T5, T6, T7, T9 .T2, T4, T5, T6, T7, T9 .2. 2. 对对UndoUndo队列队列事务进行事务进行UNDOUNDO处理处理 反向扫描日志文件,对每个反向扫描日志文件,对每个UNDOUNDO事务的更新操作执行逆操作事务的更新操作执行逆操作 T2, T4, T5, T6, T7, T9 T2, T4, T5, T6, T7, T9 3. 3. 对对RedoRedo队列事务进行队列事务进行REDOREDO处理处理 正向扫描日志文件,对每个正向扫描日志文件,对每个REDOREDO事务重新执行登记的操作事务重新执行登记的操作 T1, T3, T8.T1, T3

36、, T8.9/10/202449数据库原理7.5.3 7.5.3 介质故障恢复介质故障恢复n恢复方法恢复方法p重装数据库,使数据库恢复到一致性状态重装数据库,使数据库恢复到一致性状态p重做已完成的事务重做已完成的事务n介质故障的恢复需要介质故障的恢复需要DBADBA介入介入nDBADBA的工作的工作p重装最近转储的数据库副本和有关的各日志文件重装最近转储的数据库副本和有关的各日志文件副本副本p执行系统提供的恢复命令执行系统提供的恢复命令n具体的恢复操作仍由具体的恢复操作仍由DBMSDBMS完成完成9/10/202450数据库原理2. 2. 装入有关的日志文件副本,重做已完成的事务。装入有关的日

37、志文件副本,重做已完成的事务。p首先扫描日志文件,找出故障发生时已提交的事务的标识,首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。将其记入重做队列。p然后正向扫描日志文件,对重做队列中的所有事务进行重做然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中处理。即将日志记录中“更新后的值更新后的值”写入数据库。写入数据库。介质故障恢复步骤介质故障恢复步骤1. 1. 装装入入最最新新的的后后备备数数据据库库副副本本,使使数数据据库库恢恢复复到到最最近近一一次次转转储储时时的一致性状态。的一致性状态。p静态转储的数据库副本,装入后数据库即处于一致性状态;静

38、态转储的数据库副本,装入后数据库即处于一致性状态;p动动态态转转储储的的数数据据库库副副本本,还还须须同同时时装装入入转转储储时时刻刻的的日日志志文文件件副副本本,利利用用与与恢恢复复系系统统故故障障相相同同的的方方法法(即即REDO+UNDOREDO+UNDO),才能将数据库恢复到一致性状态。才能将数据库恢复到一致性状态。9/10/202451数据库原理7.6 7.6 具有检查点的恢复技术具有检查点的恢复技术n问题的提出问题的提出n检查点技术检查点技术n利用检查点的恢复策略利用检查点的恢复策略9/10/202452数据库原理问题的提出问题的提出n两个问题两个问题p 搜索整个日志将耗费大量的时

39、间搜索整个日志将耗费大量的时间p REDOREDO处理:重新执行,浪费了大量时间处理:重新执行,浪费了大量时间n解决方案解决方案具有检查点的恢复技术具有检查点的恢复技术n在日志文件中增加检查点(在日志文件中增加检查点(checkpointcheckpoint)记录)记录n增加重新开始文件增加重新开始文件n恢复子系统在登录日志文件期间动态地维护日志恢复子系统在登录日志文件期间动态地维护日志9/10/202453数据库原理检查点技术检查点技术n检查点记录的内容检查点记录的内容p 建立检查点时刻所有正在执行的事务清单建立检查点时刻所有正在执行的事务清单p 这些事务最近一个日志记录的地址这些事务最近一

40、个日志记录的地址n重新开始文件的内容重新开始文件的内容p 记录各个检查点记录在日志文件中的地址记录各个检查点记录在日志文件中的地址9/10/202454数据库原理图图7.3 7.3 具有检查点的日志文件和重新开始文件具有检查点的日志文件和重新开始文件9/10/202455数据库原理p将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上。将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上。p在日志文件中写入一个检查点记录。在日志文件中写入一个检查点记录。p将当前数据缓冲区的所有数据记录写入磁盘的数据库中。将当前数据缓冲区的所有数据记录写入磁盘的数据库中。p把检查点记录在日志文件中的地址写入一个

41、重新开始文件。把检查点记录在日志文件中的地址写入一个重新开始文件。在检查点维护日志文件步骤在检查点维护日志文件步骤建立检查点建立检查点n定期定期p按照预定的一个时间间隔按照预定的一个时间间隔n不定期不定期p按照某种规则,如日志文件已写满一半建立一个检查点按照某种规则,如日志文件已写满一半建立一个检查点9/10/202456数据库原理利用检查点的恢复策略利用检查点的恢复策略n当事务当事务T T在一个检查点之前提交在一个检查点之前提交 T T对数据库所做的修改已写入数据库对数据库所做的修改已写入数据库n在进行恢复处理时,没有必要对事务在进行恢复处理时,没有必要对事务T T执行执行REDOREDO操

42、作操作图图7.4 7.4 恢复子系统采取的不同策略恢复子系统采取的不同策略9/10/202457数据库原理恢复步骤恢复步骤1.1.从重新开始文件中找到最后一个检查点记录在日志文件中的地址,从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录;由该地址在日志文件中找到最后一个检查点记录;2.2.由该检查点记录得到检查点建立时刻所有正在执行的事务清单由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LISTACTIVE-LISTp建立两个事务队列:建立两个事务队列:UNDO-LIST UNDO-LIST 和和 REDO-LIST R

43、EDO-LIST p把把ACTIVE-LISTACTIVE-LIST暂时放入暂时放入UNDO-LISTUNDO-LIST队列,队列,REDOREDO队列暂为空。队列暂为空。3.3.从检查点开始正向扫描日志文件,直到日志文件结束从检查点开始正向扫描日志文件,直到日志文件结束p如有新开始的事务如有新开始的事务T Ti i,把,把T Ti i暂时放入暂时放入UNDO-LISTUNDO-LIST队列队列p如有提交的事务如有提交的事务T Tj j,把,把T Tj j从从UNDO-LISTUNDO-LIST队列移到队列移到REDO-LISTREDO-LIST队列队列4.4.对对UNDO-LISTUNDO-

44、LIST中的每个事务执行中的每个事务执行UNDOUNDO操作操作, , 对对REDO-LISTREDO-LIST中的每个中的每个事务事务执行执行REDOREDO操作操作9/10/202458数据库原理7.7 7.7 数据库镜像数据库镜像n介质故障是对系统影响最为严重的一种故障,严重影响数据库介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性的可用性p介质故障恢复比较费时介质故障恢复比较费时p为预防介质故障,为预防介质故障,DBADBA必须周期性地转储数据库必须周期性地转储数据库n提高数据库可用性的解决方案提高数据库可用性的解决方案p数据库镜像(数据库镜像(MirrorMirror)

45、n数据库镜像数据库镜像nDBMSDBMS自动把整个数据库或其中的关键数据复制到另一磁盘上自动把整个数据库或其中的关键数据复制到另一磁盘上nDBMSDBMS自动保证镜像数据与主数据的一致性自动保证镜像数据与主数据的一致性( (图图7.5a)7.5a)9/10/202459数据库原理n出现介质故障时出现介质故障时pDBMSDBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本闭系统和重装数据库副本( (图图7.5b)7.5b)n没有出现故障时没有出现故障时p可用于并发操作可用于并发操作( (图图7.5a)7.5a)p一个用户对数据

46、加排他锁修改数据一个用户对数据加排他锁修改数据p其他用户可以读镜像数据库上的数据其他用户可以读镜像数据库上的数据9/10/202460数据库原理图图7.5 7.5 数据库镜像数据库镜像9/10/202461数据库原理7.8 Oracle7.8 Oracle的恢复技术的恢复技术n 转储转储n 登记日志文件登记日志文件9/10/202462数据库原理转转 储储n转储后备副本的方法转储后备副本的方法p文件拷贝文件拷贝pEXPORTEXPORT实用程序实用程序p用用SQLSQL命令命令SPOOLSPOOLp自己编程实现自己编程实现p文件拷贝文件拷贝pIMPORTIMPORT实用程序实用程序pSQL*L

47、OADERSQL*LOADER实用程序实用程序p自己编程实现自己编程实现n重装后备副本的方法重装后备副本的方法9/10/202463数据库原理登记日志文件登记日志文件nORACLE V.5ORACLE V.5:以数据块为单位:以数据块为单位nORACLE 7ORACLE 7:REDOREDO日志日志 + + 回滚段回滚段9/10/202464数据库原理n日志文件以数据块为单位,恢复操作不是基于操作,而是基日志文件以数据块为单位,恢复操作不是基于操作,而是基于数据块。于数据块。n将更新前的旧值与更新后的新值分别放在两个不同的日志文将更新前的旧值与更新后的新值分别放在两个不同的日志文件中:件中:p

48、记录数据库更新前旧值的日志文件称为数据库前像文件记录数据库更新前旧值的日志文件称为数据库前像文件(Before ImageBefore Image,简称简称BIBI文件)文件)p记录数据库更新后新值的日志文件称为数据库的后像文件记录数据库更新后新值的日志文件称为数据库的后像文件(After ImageAfter Image,简称简称AIAI文件)文件)Oracle V.5Oracle V.5的恢复技术的恢复技术nBIBI文件是必须的,文件是必须的,AIAI文件是任选的文件是任选的n没有没有AIAI文件:只能执行文件:只能执行UNDOUNDO处理,不能执行处理,不能执行REDOREDO处理处理9

49、/10/202465数据库原理Oracle 7Oracle 7的恢复技术的恢复技术nREDOREDO日志文件:更新数据的前像和后像日志文件:更新数据的前像和后像n回滚段回滚段(Rollback Segment(Rollback Segment):):记录尚未完成的更新事务的更新记录尚未完成的更新事务的更新数据的前像数据的前像n事务故障恢复事务故障恢复p根据回滚段中的数据,撤消该事务的操作根据回滚段中的数据,撤消该事务的操作n系统故障恢复系统故障恢复p首先扫描首先扫描REDOREDO日志文件,重做所有操作,并对更新操作建立日志文件,重做所有操作,并对更新操作建立回滚段数据。当遇到提交记录,取消相

50、应回滚段中数据。回滚段数据。当遇到提交记录,取消相应回滚段中数据。p再根据回滚段中的数据,撤消未正常提交的事务的操作。再根据回滚段中的数据,撤消未正常提交的事务的操作。9/10/202466数据库原理图图7.6 Oracle7.6 Oracle的恢复过程的恢复过程(a) (a) 发生故障,事务非正常终止发生故障,事务非正常终止 (b) (b) 利用利用REDOREDO文件,重做所有操作文件,重做所有操作 (c) (c) 利用回滚段撤消未提利用回滚段撤消未提交的事务交的事务, ,数据库恢复到数据库恢复到一致性状态一致性状态9/10/202467数据库原理小小 结结n如果数据库只包含成功事务提交的

51、结果,就说数据库处于一致如果数据库只包含成功事务提交的结果,就说数据库处于一致性状态。保证数据一致性是对数据库的最基本的要求。性状态。保证数据一致性是对数据库的最基本的要求。n事务是数据库的逻辑工作单位事务是数据库的逻辑工作单位pDBMSDBMS保证系统中一切事务的原子性、一致性、隔离性和持保证系统中一切事务的原子性、一致性、隔离性和持续性续性nDBMSDBMS必须对事务故障、系统故障和介质故障进行恢复必须对事务故障、系统故障和介质故障进行恢复n恢复中最经常使用的技术:数据库转储和登记日志文件恢复中最经常使用的技术:数据库转储和登记日志文件n恢复的基本原理:利用存储在后备副本、日志文件和数据库

52、镜恢复的基本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库像中的冗余数据来重建数据库9/10/202468数据库原理n常用恢复技术常用恢复技术p事务故障的恢复:事务故障的恢复:UNDOUNDOp系统故障的恢复:系统故障的恢复:UNDO + REDOUNDO + REDOp介质故障的恢复:重装备份并恢复到一致性状态介质故障的恢复:重装备份并恢复到一致性状态 + REDO+ REDOn提高恢复效率的技术提高恢复效率的技术p检查点技术检查点技术可以提高系统故障的恢复效率可以提高系统故障的恢复效率可以在一定程度上提高利用动态转储备份进行介质故障可以在一定程度上提高利用动态转储备份进行介质故障恢复的效率恢复的效率n镜像技术镜像技术镜像技术可以改善介质故障的恢复效率镜像技术可以改善介质故障的恢复效率9/10/202469数据库原理

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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