1、数据库系统原理数据库系统原理授课教师:吴岩授课教师:吴岩2第七章第七章 数据库恢复技术数据库恢复技术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的恢复技点的恢复技术术7.6 数据数据库镜库镜像像数数据据库库系系统统原原理理3学习目标学习目标 掌握事掌握事务务的基本概念,了解故障的种的基本概念,了解故障的种类类以以及及对对每种不同的故障采取的不同恢复策略;掌每种不同的故障采取的不同恢复策略;掌握恢复的握恢复的实现实现技技术术;理解事;理解事务务与数据与数据库库恢复和恢复和并并发发控制的关系。
2、控制的关系。学学习习重点重点恢复的恢复的实现实现技技术术数据数据转储转储登登记记日志文件日志文件第七章第七章 数据库恢复技术数据库恢复技术数数据据库库系系统统原原理理4第七章第七章 数据库恢复技术数据库恢复技术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的恢复技点的恢复技术术7.6 数据数据库镜库镜像像数数据据库库恢恢复复技技术术5第一节第一节 事务的基本概念事务的基本概念事事务务定定义义事事务务事事务务的特性的特性事事务务的状的状态态数数据据库库恢恢复复技技术术6第一节第一节 事务的基本
3、概念事务的基本概念一、事务一、事务事事务务(Transaction)是用是用户户定定义义的一个数据的一个数据库库操作操作序列,序列,这这些操作要么全做,要么全不做,些操作要么全做,要么全不做,是数据是数据库环境中的库环境中的逻辑工作单位。逻辑工作单位。一个一个应应用程序通常包含多个事用程序通常包含多个事务务。事事务务是恢复和并是恢复和并发发控制的基本控制的基本单单位。位。数数据据库库恢恢复复技技术术7二、定义事务二、定义事务定定义义事事务务的两种方式的两种方式隐隐式方式式方式当用当用户户没有没有显显式地定式地定义义事事务时务时,由,由DBMS按缺省按缺省规规定自定自动动划分事划分事务务。显显式
4、方式式方式事事务务的开始由用的开始由用户显户显式控制式控制事事务结务结束由用束由用户显户显式控制式控制数数据据库库恢恢复复技技术术事务的基本概念(续)事务的基本概念(续)8定义事务(续)定义事务(续)1 1、隐式事务、隐式事务隐隐式事式事务务是数据是数据库库管理系管理系统为统为用用户户而做的事而做的事务务,又称自,又称自动动提交事提交事务务。例例7.1 在一个在一个SQL批文件中,向数据表批文件中,向数据表SC中插入数据,每中插入数据,每条条SQL语语句都是一个句都是一个隐隐式事式事务务。数数据据库库恢恢复复技技术术系系统统在在执执行第行第3条插入条插入语语句句后后发现错误发现错误,自,自动动
5、回回滚滚。9定义事务(续)定义事务(续)2、显显式定式定义义事事务务显式事务是一种由用户自己指定的事务。这显式事务是一种由用户自己指定的事务。这种事务允许用户自己决定哪批工作必须成功种事务允许用户自己决定哪批工作必须成功完成,否则所有部分都不完成。完成,否则所有部分都不完成。事事务务开始开始BEGIN TRANSACTION事事务结务结束束COMMIT:事:事务务提交,正常提交,正常结结束一个事束一个事务务,使事,使事务务对对数据数据库库的更新永久生效。的更新永久生效。ROLLBACK:事:事务务回回滚滚,撤消撤消该该事事务务已已进进行的更行的更新,回新,回滚滚到事到事务务开始的状开始的状态态
6、。数数据据库库恢恢复复技技术术10 显式事务(续)显式事务(续)例例7.2 显显式事式事务务(回(回滚滚):在一个):在一个SQL批文件批文件中,若在一个中,若在一个显显式事式事务务中中删删除数据表除数据表SC,然后,然后回回滚滚事事务务,其,其删删除无效。除无效。数数据据库库恢恢复复技技术术11例例7.3 显显式事式事务务(提交):在一个(提交):在一个SQL批文件批文件中,若在一个中,若在一个显显式事式事务务中中删删除数据表除数据表SC,然,然后提交事后提交事务务,其,其删删除有效。除有效。显式事务(续)显式事务(续)数数据据库库恢恢复复技技术术COMMIT 无无-提交事提交事务务,并,并
7、显显示提交后示提交后SC表中的表中的记录记录12三、事务的特性三、事务的特性原子性(原子性(Atomicity)一致性(一致性(Consistency)隔离性(隔离性(Isolation)持持续续性(性(Durability)事务的基本概念(续)事务的基本概念(续)数数据据库库恢恢复复技技术术13事务的特性(续)事务的特性(续)1、原子性、原子性 事事务务是数据是数据库库的的逻辑逻辑工作工作单单位,事位,事务务中包括中包括的的诸诸操作要么都做,要么都不做。操作要么都做,要么都不做。2、一致性、一致性 事事务执务执行的行的结结果必果必须须是使数据是使数据库库从一个一致从一个一致状状态变态变到另一
8、个一致状到另一个一致状态态。一致性状一致性状态态:数据:数据库库只包含成功事只包含成功事务务提交的提交的结结果。果。不一致状不一致状态态:数据:数据库库包含失包含失败败事事务务的的结结果。果。数数据据库库恢恢复复技技术术14账户账户A账户账户B-10000+10000 定定义义一个事一个事务务,该该事事务务包括两个操作:包括两个操作:第一个操作是从第一个操作是从帐帐号号A中减去一万元中减去一万元 第二个操作是向第二个操作是向帐帐号号B中加入一万元中加入一万元 两个操作两个操作全做或者全不做,数据全做或者全不做,数据库库都都处处于一致性状于一致性状态态。只做一个操作,数据只做一个操作,数据库库就
9、就处处于不一致性状于不一致性状态态。例例7.4 银银行行转帐转帐:一致性(续)一致性(续)数数据据库库恢恢复复技技术术15事务的特性(续)事务的特性(续)3、隔离性、隔离性 一个事一个事务务的的执执行不能被其他事行不能被其他事务务干干扰扰。4、持、持续续性(性(永久性)永久性)一个事一个事务务一旦提交,它一旦提交,它对对数据数据库库中数据的改中数据的改变变就就应该应该是永久性的。是永久性的。接下来的其他操作或故障不接下来的其他操作或故障不应该对应该对其其执执行行结结果有任何影响。果有任何影响。数数据据库库恢恢复复技技术术16事务的特性(续)事务的特性(续)保保证证事事务务ACID特性是事特性是
10、事务处务处理的重要任理的重要任务务,是是DBMS中恢复机制和并中恢复机制和并发发控制机制的控制机制的责责任。任。破坏事破坏事务务ACID特性的因素特性的因素多个事多个事务务并行运行并行运行时时,不同事,不同事务务的操作交叉的操作交叉执执行行DBMS必必须须保保证证多个事多个事务务的交叉运行不影响的交叉运行不影响这这些些事事务务ACID特性,特特性,特别别是原子性和隔离性。是原子性和隔离性。事事务务在运行在运行过过程中被程中被强强行停止行停止DBMS必必须须保保证证被被强强行行终终止的事止的事务对务对数据数据库库和其和其他事他事务务没有任何影响。没有任何影响。数数据据库库恢恢复复技技术术17四、
11、事务的状态四、事务的状态事务的基本概念(续)事务的基本概念(续)数数据据库库恢恢复复技技术术事务执行时处于的状态事务执行时处于的状态事务不能正常执行的状态事务不能正常执行的状态事务回滚并恢复到事事务回滚并恢复到事务开始前的状态务开始前的状态事务中最后一条语句自事务中最后一条语句自动执行后的状态动执行后的状态事务成功完成事务成功完成18第七章第七章 数据库恢复技术数据库恢复技术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的恢复技点的恢复技术术7.6 数据数据库镜库镜像像数数据据库库恢恢复复技
12、技术术19 第二节第二节 故障的种类故障的种类事务内部故障事务内部故障系统故障系统故障介质故障介质故障计算机病毒计算机病毒数数据据库库恢恢复复技技术术201 1、事务内部故障、事务内部故障某个事务在运行过程中由于种种原因未运行某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了。至正常终止点就夭折了。2 2、事务内部故障类型、事务内部故障类型可预期的事务内部故障可预期的事务内部故障可通过事务程序本身发现可通过事务程序本身发现非预期的事务内部故障非预期的事务内部故障运算溢出运算溢出违反了某些完整性限制违反了某些完整性限制某些某些应用程序应用程序出错出错并行事务发生死锁并行事务发生死锁一、事
13、务内部故障一、事务内部故障数数据据库库恢恢复复技技术术21事务内部故障(续)事务内部故障(续)例例7.5,银行转账事务:,银行转账事务:Begin Transaction 读账户读账户甲的余甲的余额额Balance;Balance=Balance-Amount If(Balance0)Then 打印打印金金额额不足,不能不足,不能转账转账;RollBack;(撤;(撤销刚销刚才的修改,恢复事才的修改,恢复事务务)Else 读账户读账户乙的余乙的余额额Balance1;Balance1=Balance1+Amount;写回写回Balance1;Commit;此事务故障通过事务程序本身发现此事务故
14、障通过事务程序本身发现数数据据库库恢恢复复技技术术223、事务故障的恢复、事务故障的恢复发生事务故障时,夭折的事务可能已把对数发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘。据库的部分修改写回磁盘。事务故障的恢复:事务故障的恢复:事务撤消(事务撤消(UNDO)恢复程序要在不影响其它事务运行的情况恢复程序要在不影响其它事务运行的情况下,强行回滚(下,强行回滚(ROLLBACK)该事务,即)该事务,即清除该事务对数据库的所有修改。清除该事务对数据库的所有修改。数数据据库库恢恢复复技技术术事务内部故障(续)事务内部故障(续)23二、系统故障二、系统故障1、系、系统统故障故障造成整个系造
15、成整个系统统的正常运行突然停止的任何事的正常运行突然停止的任何事件,使得系件,使得系统统要重新启要重新启动动。2、系、系统统故障的常故障的常见见原因原因特定特定类类型的硬件型的硬件错误错误(如(如CPU故障)故障)操作系操作系统统故障故障DBMS代代码错误码错误突然停突然停电电数数据据库库恢恢复复技技术术24系统故障(续)系统故障(续)3、系、系统统故障的恢复故障的恢复清除尚未完成的事清除尚未完成的事务对务对数据数据库库的所有修改的所有修改如果如果DBMS无法确定哪些事无法确定哪些事务务已更新已更新过过数据数据库库,则则系系统统重新启重新启动动后,后,恢复程序要恢复程序要强强行撤消行撤消(UN
16、DO)所所有未完成事有未完成事务务,使使这这些事些事务务象没有运行象没有运行过过一一样样。将将缓缓冲区中已完成事冲区中已完成事务务提交的提交的结结果写入数据果写入数据库库如果如果DBMS无法确定哪些事无法确定哪些事务务的提交的提交结结果尚未写入果尚未写入物理数据物理数据库库,则则系系统统重新启重新启动动后,后,恢复程序需要重恢复程序需要重做做(REDO)所有已提交的事所有已提交的事务务。数数据据库库恢恢复复技技术术25 三、介质故障三、介质故障1、介、介质质故障故障硬件故障使存储在外存中的数据部分丢失或硬件故障使存储在外存中的数据部分丢失或全部丢失。全部丢失。介质故障比前两类故障的可能性小得多
17、,但介质故障比前两类故障的可能性小得多,但破坏性最大。破坏性最大。2、介、介质质故障的常故障的常见见原因原因硬件故障硬件故障磁盘损坏磁盘损坏磁头碰撞磁头碰撞瞬时强磁场干扰瞬时强磁场干扰数数据据库库恢恢复复技技术术26介质故障(续)介质故障(续)3、介、介质质故障的恢复故障的恢复装入数据库发生介质故障前某个时刻的数据装入数据库发生介质故障前某个时刻的数据副本。副本。重做自此时始的所有成功事务,将这些事务重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库。已提交的结果重新记入数据库。数数据据库库恢恢复复技技术术27四、计算机病毒四、计算机病毒计算机病毒是一种人为的故障或破坏,是一种可
18、以自我计算机病毒是一种人为的故障或破坏,是一种可以自我复制和传播的计算机程序。复制和传播的计算机程序。例如:例如:“SQL Slammer”病毒病毒该该病毒利用病毒利用SQL SERVER 2000的解析端口的解析端口1434的的缓缓冲区溢出漏洞冲区溢出漏洞对对其服其服务进务进行攻行攻击击。2003年年1月月25日爆日爆发发,全球共有,全球共有50万台服万台服务务器被攻器被攻击击“恐怖数据恐怖数据库库”病毒病毒当用当用户户打开打开Access数据数据库库文件以后,系文件以后,系统统随即被关随即被关闭闭,重启后,重启后Windows操作系操作系统统无法启无法启动动。数数据据库库恢恢复复技技术术2
19、8故障的种类小结故障的种类小结数据库系统中各类故障对数据库的影响数据库系统中各类故障对数据库的影响数据库本身被破坏数据库本身被破坏(介质故障(介质故障 计算机病毒)计算机病毒)数据库处于不一致状态数据库处于不一致状态数据库中包含了未完成事务对数据库的修数据库中包含了未完成事务对数据库的修改(事务故障、系统故障)改(事务故障、系统故障)数据库中丢失了已提交事务对数据库的修数据库中丢失了已提交事务对数据库的修改(系统故障)改(系统故障)不同类型的故障应采用不同的恢复操作。不同类型的故障应采用不同的恢复操作。数数据据库库恢恢复复技技术术29故障的种类小结(续)故障的种类小结(续)恢复操作的基本原理(
20、恢复操作的基本原理(简单简单)原理:利用存原理:利用存储储在系在系统统其它地方的其它地方的冗余数据冗余数据来重建数据来重建数据库库中已中已经经被破坏或已被破坏或已经经不正确的不正确的那部分数据。那部分数据。恢复的恢复的实现实现技技术术(复(复杂杂)一般一个大型数据一般一个大型数据库产库产品,恢复子系品,恢复子系统统的代的代码码要占全部代要占全部代码码的的10%以上。以上。数数据据库库恢恢复复技技术术30第七章第七章 数据库恢复技术数据库恢复技术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的
21、恢复技点的恢复技术术7.6 数据数据库镜库镜像像数数据据库库恢恢复复技技术术31 第三节第三节 恢复的实现技术恢复的实现技术 恢复技术的原理恢复技术的原理 数据转储数据转储 登记日志文件登记日志文件32 一、恢复技一、恢复技术术的原理的原理利用存储在系统其它地方的利用存储在系统其它地方的冗余数据冗余数据来修复来修复或重建数据库中被破坏的或不正确的数据。或重建数据库中被破坏的或不正确的数据。恢复机制涉及的关键问题恢复机制涉及的关键问题如何建立冗余数据如何建立冗余数据数据转储数据转储登录日志文件登录日志文件如何利用这些冗余数据实施数据库恢复如何利用这些冗余数据实施数据库恢复数数据据库库恢恢复复技技
22、术术33二、数据转储二、数据转储1、什么是数据、什么是数据转储转储 数据数据转储转储是指是指DBA将整个数据将整个数据库库复制到磁复制到磁带带或另一个磁或另一个磁盘盘上保存起来的上保存起来的过过程。程。这这些些备备用的数用的数据文本称据文本称为为后后备备副本或后援副本。副本或后援副本。数据数据转储转储的用途:的用途:一旦数据一旦数据库库遭到破坏,可以将后遭到破坏,可以将后备备副本重新副本重新装入,来恢复数据装入,来恢复数据库库。数数据据库库恢恢复复技技术术34数据转储(续)数据转储(续)2、数据恢复的程度、数据恢复的程度重装后重装后备备副本只能将副本只能将DB恢复到恢复到转储时转储时的状的状态
23、态。要想恢复到故障要想恢复到故障发发生生时时的状的状态态,必,必须须重新运重新运行自行自转储转储以后的所有更新事以后的所有更新事务务。故障发生点故障发生点 转储转储 运行事务运行事务 正常运行正常运行 Ta Tb Tf 重装后备副本重装后备副本 重新运行事务重新运行事务恢复恢复 数数据据库库恢恢复复技技术术353、转储转储状状态态 静态转储与动态转储静态转储与动态转储(1)静)静态转储态转储 是在系统中是在系统中无运行事务时无运行事务时进行的转储操作。进行的转储操作。转储期间不允许(或不存在)对数据库的任转储期间不允许(或不存在)对数据库的任何存取、修改活动。何存取、修改活动。数数据据库库恢恢
24、复复技技术术数据转储(续)数据转储(续)静态静态转储转储 运行事务运行事务 故障发生点故障发生点正常运行正常运行 Ta Tb Tf 重装后备副本重装后备副本恢复恢复 36(2)动态转储动态转储 动态转储动态转储是指是指转储转储操作与用操作与用户户事事务务并并发进发进行,行,转储转储期期间间允允许对许对数据数据库进库进行存取或修改。行存取或修改。动态转储动态转储的的优优点点不用等待正在运行的用不用等待正在运行的用户户事事务结务结束束不会影响新事不会影响新事务务的运行的运行动态转储动态转储的缺点的缺点不能保不能保证证副本中的数据正确有效副本中的数据正确有效数数据据库库恢恢复复技技术术转储状态(续)
25、转储状态(续)37动态转储(续)动态转储(续)利用动态转储得到的副本进行故障恢复利用动态转储得到的副本进行故障恢复需要把动态转储期间各事务对数据库的修改需要把动态转储期间各事务对数据库的修改活动登记下来,建立活动登记下来,建立日志文件。日志文件。后备副本加上日志文件才能把数据库恢复到后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态。某一时刻的正确状态。数数据据库库恢恢复复技技术术 故障发生点故障发生点 动态动态转储运行事务转储运行事务 运行事务运行事务 正常运行正常运行 Ta Tb Tf 重装后备副本重装后备副本 利用日志文件恢复利用日志文件恢复 继续运行继续运行恢复恢复 登记日志文件
26、登记日志文件TcTd登记日志文件登记日志文件38数据转储(续)数据转储(续)4、转储转储方式方式海量海量转储转储:每次每次转储转储全部数据全部数据库库。增量增量转储转储:每次只每次只转储转储上次上次转储转储后更新后更新过过的的数据。数据。海量海量转储转储与增量与增量转储转储比比较较从恢复角度看,使用海量从恢复角度看,使用海量转储转储得到的后得到的后备备副副本本进进行恢复往往更方便。行恢复往往更方便。但如果数据但如果数据库库很大,事很大,事务处务处理又十分理又十分频频繁,繁,则则增量增量转储转储方式更方式更实实用更有效。用更有效。数数据据库库恢恢复复技技术术39数据转储(续)数据转储(续)5、转
27、储转储方法方法 转储状态转储状态 动态转储动态转储 静态转储静态转储 转储方式转储方式 海量转储海量转储 动态海量转储动态海量转储 静态海量转储静态海量转储 增量转储增量转储 动态增量转储动态增量转储 静态增量转储静态增量转储数数据据库库恢恢复复技技术术40三、登记日志文件三、登记日志文件1、日志文件的格式和内容、日志文件的格式和内容日志文件日志文件(log):是用来是用来记录记录事事务对务对数据数据库库的的更新操作的文件。更新操作的文件。日志文件的格式日志文件的格式以以记录为单记录为单位的日志文件位的日志文件以数据以数据块为单块为单位的日志文件位的日志文件日志文件内容日志文件内容各个事各个事
28、务务的开始的开始标记标记(BEGIN TRANSACTION)各个事各个事务务的的结结束束标记标记(COMMIT或或ROLLBACK)各个事各个事务务的所有更新操作的所有更新操作数数据据库库恢恢复复技技术术41日志文件的内容(续)日志文件的内容(续)(1)基于)基于记录记录的日志文件的日志文件每条日志记录的内容每条日志记录的内容事务标识(标明是哪个事务)事务标识(标明是哪个事务)操作类型(插入、删除或修改)操作类型(插入、删除或修改)操作对象操作对象更新前数据的旧值(对插入操作而言,此更新前数据的旧值(对插入操作而言,此项为空值)项为空值)更新后数据的新值(对删除操作而言更新后数据的新值(对删
29、除操作而言,此此项为空值)项为空值)数数据据库库恢恢复复技技术术42日志文件的内容(续)日志文件的内容(续)(2)基于数据)基于数据块块的日志文件的日志文件每条日志每条日志记录记录的内容的内容事事务标识务标识(标标明是哪个事明是哪个事务务)更新前整个数据更新前整个数据块块的的值值(对对插入操作而言插入操作而言此此项为项为空空值值)更新后整个数据更新后整个数据块块的的值值(对删对删除操作而言除操作而言此此项为项为空空值值)数数据据库库恢恢复复技技术术432、日志文件的用途、日志文件的用途(1)进进行事行事务务故障恢复故障恢复(2)进进行系行系统统故障恢复故障恢复(3)在)在动态转储动态转储方式中
30、必方式中必须须建立日志文件建立日志文件(4)协协助后助后备备副本副本进进行介行介质质故障恢复故障恢复数数据据库库恢恢复复技技术术登记日志文件(续)登记日志文件(续)44日志文件的用途(续)日志文件的用途(续)与静态转储后备副本配合进行介质故障恢复与静态转储后备副本配合进行介质故障恢复在静态转储完成后,仍定期转储日志文件,则在静态转储完成后,仍定期转储日志文件,则在出现介质故障重装数据副本后,可以利用这在出现介质故障重装数据副本后,可以利用这些日志文件对已完成的事务进行重做处理。些日志文件对已完成的事务进行重做处理。数数据据库库恢恢复复技技术术453、登、登记记日志文件的原日志文件的原则则登记的
31、次序严格按事务执行的时间次序。登记的次序严格按事务执行的时间次序。必须必须先写日志文件,后写数据库先写日志文件,后写数据库写数据库操作:把对数据的修改写到数据库写数据库操作:把对数据的修改写到数据库中。中。写日志文件操作:把表示这个修改的日志记写日志文件操作:把表示这个修改的日志记录写到日志文件。录写到日志文件。数数据据库库恢恢复复技技术术登记日志文件(续)登记日志文件(续)46第七章第七章 数据库恢复技术数据库恢复技术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的恢复技点的恢复技术术7.
32、6 数据数据库镜库镜像像数数据据库库恢恢复复技技术术47第四节第四节 恢复策略恢复策略事务故障的恢复事务故障的恢复系统故障的恢复系统故障的恢复介质故障的恢复介质故障的恢复数数据据库库恢恢复复技技术术48一、事务故障的恢复一、事务故障的恢复1、恢复方法、恢复方法由恢复子系由恢复子系统应统应利用日志文件利用日志文件撤消撤消(UNDO)此此事事务务已已对对数据数据库进库进行的修改。行的修改。事事务务故障的恢复由系故障的恢复由系统统自自动动完成,不需要用完成,不需要用户户干干预预。数数据据库库恢恢复复技技术术492、恢复步骤、恢复步骤(1)反向反向扫扫描日志文件,描日志文件,查查找找该该事事务务的更新
33、操作。的更新操作。(2)对该对该事事务务的更新操作的更新操作执执行逆操作行逆操作。即将日志。即将日志记记录录中中“更新前的更新前的值值”写入数据写入数据库库。(3)继续继续反向反向扫扫描日志文件,描日志文件,查查找找该该事事务务的其他更的其他更新操作,并做同新操作,并做同样处样处理。理。(4)如此)如此处处理下去,理下去,直至直至读读到此事到此事务务的开始的开始标记标记,事事务务故障恢复就完成了。故障恢复就完成了。数数据据库库恢恢复复技技术术事务故障的恢复(续)事务故障的恢复(续)50AlterDeleteInsert删除删除插入插入修改前的值替代修改后的值修改前的值替代修改后的值Begin
34、Transaction事务故障的恢复(续)事务故障的恢复(续)数数据据库库恢恢复复技技术术日志文件日志文件51二、二、系统故障的恢复系统故障的恢复1、系、系统统故障造成数据故障造成数据库库不一致状不一致状态态的原因的原因(1)一些未完成事)一些未完成事务对务对数据数据库库的更新已写入的更新已写入数据数据库库。(2)一些已提交事)一些已提交事务对务对数据数据库库的更新的更新还还留在留在缓缓冲区没来得及写入数据冲区没来得及写入数据库库。2、恢复方法、恢复方法(1)撤消故障)撤消故障发发生生时时未完成的事未完成的事务务(2)重做已完成的事)重做已完成的事务务数数据据库库恢恢复复技技术术52系统故障的
35、恢复(续)系统故障的恢复(续)3、恢复步、恢复步骤骤(1)正向正向扫扫描日志文件描日志文件找出在故障找出在故障发发生前已生前已经经提交的事提交的事务务,将事将事务标识记务标识记入入重做重做队队列。列。同同时时找出故障找出故障发发生生时时尚未完成的事尚未完成的事务务,将事将事务标识务标识记记入入撤消撤消队队列列。(2)对对撤消撤消队队列中的各个事列中的各个事务进务进行行撤消撤消(UNDO)处处理理反向反向扫扫描日志文件,描日志文件,对对每个每个UNDO事事务务的更新操作的更新操作执执行逆操作,即将日志行逆操作,即将日志记录记录中中“更新前的更新前的值值”写入数写入数据据库库。(3)对对重做重做队
36、队列中的各个事列中的各个事务进务进行行重做重做(REDO)处处理理正向正向扫扫描日志文件,描日志文件,对对每个每个REDO事事务务重新重新执执行登行登记记的操作。即将日志的操作。即将日志记录记录中中“更新后的更新后的值值”写入数据写入数据库库。数数据据库库恢恢复复技技术术53AlterDeleteBegin Transaction2Commit更改更改Begin Transaction1日志文件日志文件DeleteInsert重做重做队列队列撤销撤销队列队列AlterDeleteCommitBegin Transaction1Begin Transaction2DeleteInsert系统故障
37、的恢复(续)系统故障的恢复(续)数数据据库库恢恢复复技技术术删除删除插入插入删除删除54三、三、介质故障的恢复介质故障的恢复恢复方法恢复方法(1)装入最新的后)装入最新的后备备数据数据库库副本,使数据副本,使数据库库恢复到恢复到最近一次最近一次转储时转储时的一致性状的一致性状态态。对对于静于静态转储态转储的数据的数据库库副本,装入后数据副本,装入后数据库库即即处处于一致性状于一致性状态态。对对于于动态转储动态转储的数据的数据库库副本,副本,还还需要同需要同时时装装入入转储时转储时刻的日志文件副本刻的日志文件副本,利用与恢复系,利用与恢复系统统故障相同的方法(即故障相同的方法(即REDO+UND
38、O),才),才能将数据能将数据库库恢复到一致性状恢复到一致性状态态。数数据据库库恢恢复复技技术术55介质故障的恢复(续)介质故障的恢复(续)(2)装入相)装入相应应日志文件副本,重做已完成的事日志文件副本,重做已完成的事务务。首先首先扫扫描日志文件,找出故障描日志文件,找出故障发发生生时时已提交的已提交的事事务务的的标识标识,将其,将其记记入重做入重做队队列。列。然后正向然后正向扫扫描日志文件,描日志文件,对对重做重做队队列中的所有列中的所有事事务进务进行重做行重做处处理。即将日志理。即将日志记录记录中中“更新后更新后的的值值”写入数据写入数据库库。数数据据库库恢恢复复技技术术56 利用静态转
39、储副本和日志文件恢复数据库利用静态转储副本和日志文件恢复数据库 故障发生点故障发生点 静态静态转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb Tf Tf 登记日志文件登记日志文件 重装后备副本重装后备副本 利用日志文件恢复利用日志文件恢复恢复恢复 数数据据库库恢恢复复技技术术57 利用动态转储副本和日志文件恢复数据库利用动态转储副本和日志文件恢复数据库 Ta Tb Tf 动态动态转储转储 运行事务运行事务 故障发生点故障发生点正常运行正常运行 登记日志文件登记日志文件 登记新日志文件登记新日志文件 转储日志文件转储日志文件 重装后备副本重装后备副本 转储日志文件恢复转储日
40、志文件恢复恢复到一恢复到一 致性状态致性状态数数据据库库恢恢复复技技术术利用日志文件恢复利用日志文件恢复58第七章第七章 数据库恢复技术数据库恢复技术数数据据库库恢恢复复技技术术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的恢复技点的恢复技术术7.6 数据数据库镜库镜像像59第五节第五节 具有检查点的恢复技术具有检查点的恢复技术一、一、问题问题的提出的提出恢复恢复时时搜索整个日志将耗搜索整个日志将耗费费大量的大量的时间时间。恢复子系恢复子系统统又重新又重新执执行了行了实际实际已已经经完成的
41、事完成的事务务。二、具有二、具有检查检查点的恢复技点的恢复技术术在日志文件中增加在日志文件中增加检查检查点点记录记录。增加增加重新开始文件。重新开始文件。恢复子系恢复子系统统在登在登录录日志文件期日志文件期间动态间动态地地维护维护日志。日志。数数据据库库恢恢复复技技术术601、检查检查点点记录记录的内容的内容(1)建立)建立检查检查点点时时刻所有正在刻所有正在执执行的事行的事务务清清单单。(2)这这些事些事务务最近一个日志最近一个日志记录记录的地址。的地址。2、重新开始文件的内容、重新开始文件的内容记录记录各个各个检查检查点点记录记录在日志文件中的地址。在日志文件中的地址。具有检查点的恢复技术
42、(续)具有检查点的恢复技术(续)数数据据库库恢恢复复技技术术61检查检查点点Ci记录记录T1 D1 T2 D2日志日志记录记录Ci检查检查点点记录记录地址地址检查检查点点Ci的重新开的重新开始始记录记录重新开始文件重新开始文件日志文件日志文件具有检查点的恢复技术(续)具有检查点的恢复技术(续)数数据据库库恢恢复复技技术术 具有检查点的日志文件和重新开始文件具有检查点的日志文件和重新开始文件62具有检查点的恢复技术(续)具有检查点的恢复技术(续)3、动态维护动态维护日志文件的步日志文件的步骤骤(1)将当前日志)将当前日志缓缓冲区中的所有日志冲区中的所有日志记录记录写入写入磁磁盘盘的日志文件上。的
43、日志文件上。(2)在日志文件中写入一个)在日志文件中写入一个检查检查点点记录记录。(3)将当前数据)将当前数据缓缓冲区的所有数据冲区的所有数据记录记录写入磁写入磁盘盘的数据的数据库库中。中。(4)把)把检查检查点点记录记录在日志文件中的地址写入一在日志文件中的地址写入一个重新开始文件。个重新开始文件。数数据据库库恢恢复复技技术术63具有检查点的恢复技术(续)具有检查点的恢复技术(续)4、恢复策略、恢复策略 系系统统出出现现故障故障时时,恢复子系,恢复子系统统根据事根据事务务的不的不同状同状态态采取不同的恢复策略。采取不同的恢复策略。数数据据库库恢恢复复技技术术 REDOUNDOUNDO RED
44、OT4不要不要REDOT1Tc(检查点检查点)Tf(系统故障系统故障)T2T3T564具有检查点的恢复技术(续)具有检查点的恢复技术(续)5、恢复步、恢复步骤骤(1)从重新开始文件中找到最后一个)从重新开始文件中找到最后一个检查检查点点记录记录在日志文件中的地址,由在日志文件中的地址,由该该地址在日志文件中地址在日志文件中找到最后一个找到最后一个检查检查点点记录记录。数数据据库库恢恢复复技技术术Ci检查检查点点记录记录地址地址检查检查点点记录记录T1 D1 T2 D2重新开始文件重新开始文件日志文件日志文件65 (2)由)由该检查该检查点点记录记录得到得到检查检查点建立点建立时时刻所有刻所有正
45、在正在执执行的事行的事务务清清单单ACTIVE-LIST。建立两个事建立两个事务队务队列:列:UNDO-LIST:需要需要执执行行UNDO操作的事操作的事务务集合集合 REDO-LIST:需要需要执执行行REDO操作的事操作的事务务集合集合 把把ACTIVE-LIST暂时暂时放入放入UNDO-LIST队队列,列,REDO队队列列暂为暂为空。空。数数据据库库恢恢复复技技术术恢复步骤(续)恢复步骤(续)ACTIVE-LIST:T1T2UNDO-LISTREDO-LIST T1T266 恢复步骤(续)恢复步骤(续)(3)从)从检查检查点开始点开始正向正向扫扫描日志文件,直到日志描日志文件,直到日志文
46、件文件结结束。束。如有新开始的事如有新开始的事务务Ti,把,把Ti暂时暂时放入放入UNDO-LIST队队列列如如有提交的事有提交的事务务Tj,把,把Tj从从UNDO-LIST队队列列移到移到REDO-LIST队队列列数数据据库库恢恢复复技技术术T1 D1 T2 D2检查检查点点记录记录Begin T3Commit T1UNDO-LISTT2T3REDO-LIST T1T167思考:如果出现这种情形?该加入哪个队列?思考:如果出现这种情形?该加入哪个队列?“提交的事务提交的事务”包括之前执行的在检查点后提交包括之前执行的在检查点后提交的事务,也包括新开始的、在检查点后也提交的的事务,也包括新开始
47、的、在检查点后也提交的事务。事务。T1 D1 T2 D2检查检查点点记录记录Begin T3Commit T3Commit T1UNDO-LISTT2T3REDO-LIST T1T1 恢复步骤(续)恢复步骤(续)68 (4)对对UNDO-LIST中的每个事中的每个事务执务执行行UNDO操作,操作,对对REDO-LIST中的每个事中的每个事务执务执行行REDO操作。操作。数数据据库库恢恢复复技技术术 恢复步骤(续)恢复步骤(续)UNDO-LISTT2T3REDO-LISTT1T2:InsertDelete插入插入删除删除T1:InsertDelete插入插入删除删除69第七章第七章 数据库恢复技
48、术数据库恢复技术数数据据库库恢恢复复技技术术7.1 事事务务的基本概念的基本概念7.2 故障的种故障的种类类7.3 恢复的恢复的实现实现技技术术7.4 恢复策略恢复策略7.5 具有具有检查检查点的恢复技点的恢复技术术7.6 数据数据库镜库镜像像70第六节第六节 数据库镜像数据库镜像一、数据一、数据库镜库镜像像DBMS自自动动把整个数据把整个数据库库或其中的关或其中的关键键数据复数据复制到另一个磁制到另一个磁盘盘上。上。当数据当数据库库更新更新时时,DBMS自自动动把更新后的数据把更新后的数据复制复制过过去。去。数数据据库库恢恢复复技技术术71数据库镜像(续)数据库镜像(续)数据库镜像的用途数据
49、库镜像的用途出出现现介介质质故障故障时时DBMS自自动动利用利用镜镜像磁像磁盘盘数据数据进进行数据行数据库库的的恢复,不需要关恢复,不需要关闭闭系系统统和重装数据和重装数据库库副本。副本。没有出没有出现现故障故障时时可用于可用于并并发发操作操作一个用一个用户对户对数据加排他数据加排他锁锁修改数据修改数据其他用其他用户户可以可以读镜读镜像数据像数据库库上的数据上的数据数数据据库库恢恢复复技技术术72 二、二、SQL SERVER数据数据库镜库镜像像 数据数据库镜库镜像像维护维护一个数据一个数据库库的两个相同的的两个相同的副本,副本,这这两个副本分两个副本分别别放置在不同的放置在不同的SQL Se
50、rver数据数据库实库实例中,由不同位置的两台服例中,由不同位置的两台服务务器来承器来承载载。数数据据库库恢恢复复技技术术731、工作方式、工作方式数据库镜像将主体数据库中执行的每一项操作在镜数据库镜像将主体数据库中执行的每一项操作在镜像数据库中进行重新执行。像数据库中进行重新执行。这一过程通过将活动事务日志记录的数据流发送到这一过程通过将活动事务日志记录的数据流发送到镜像服务器来完成。镜像服务器来完成。数据库镜像在物理日志记录级别执行这一数据库镜像在物理日志记录级别执行这一“重做重做”操作。操作。SQL SERVER数据数据库镜库镜像(像(续续)数数据据库库恢恢复复技技术术742、运行模式、