《掌握事务的基本概念及特性.ppt》由会员分享,可在线阅读,更多相关《掌握事务的基本概念及特性.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、授课顺序:授课顺序:20授课学时:授课学时:3学时学时教学方式:讲授教学方式:讲授基本要求:基本要求:(1)掌握事务的基本概念及特性掌握事务的基本概念及特性(2)了解故障的种类及恢复实现技术了解故障的种类及恢复实现技术第第10章章数据库的恢复技术数据库的恢复技术10.1事务的基本概念事务的基本概念10.2数据库恢复概述数据库恢复概述10.3故障的种类故障的种类10.4恢复的实现技术恢复的实现技术10.5恢复策略恢复策略10.6具有检查点的恢复技术具有检查点的恢复技术10.7数据库镜像数据库镜像10.8小结小结 数据库的定义:数据库的定义:数据库被破坏的原因,可归纳为:数据库被破坏的原因,可归纳
2、为:软硬件故障,造成数据被破坏。软硬件故障,造成数据被破坏。数据库的并发操作引起数据的不一致性。数据库的并发操作引起数据的不一致性。自自然然或或人人为为地地破破坏坏,如如失失火火、失失窃窃、病病毒毒和和为授权人的有意纂改数据。为授权人的有意纂改数据。对对数数据据库库数数据据的的更更新新操操作作有有误误,如如操操作作时时输输入错误的数据或存取数据库的程序有错等等。入错误的数据或存取数据库的程序有错等等。针对这四类问题,一般针对这四类问题,一般DBMS提供了相应的功能:提供了相应的功能:安安全全性性保保护护:保保护护数数据据库库防防止止恶恶意意的的破破坏坏和和非非法法的存取,防范对象:非法用户和非
3、法操作。的存取,防范对象:非法用户和非法操作。完完整整性性保保护护:防防止止数数据据库库中中存存在在不不符符合合语语义义的的数数据,也就是防止数据库中存在不正确的数据。据,也就是防止数据库中存在不正确的数据。防范对象:不合语义的、不正确的数据防范对象:不合语义的、不正确的数据(实体,参照)实体,参照)数数据据库库恢恢复复:即即系系统统失失效效后后的的数数据据库库恢恢复复,配配合合定定时备份数据库,使数据库不丢失数据。时备份数据库,使数据库不丢失数据。并并发发控控制制:即即保保证证多多用用户户能能共共享享数数据据库库,并并维维护护数数据的一致性。据的一致性。10.1 10.1 事务的基本概念事务
4、的基本概念10.1.1 10.1.1 事务的定义事务的定义1.1.什么是事务什么是事务n事事务务是是由由用用户户定定义义的的一一组组操操作作序序列列,这这些些操操作作要要么么都都做做,要要么么都都不不做做,是是一一个个不不可可分分割割的的工工作作单单位位,是是恢恢复复和和并并发发控制的基本单位控制的基本单位.n是是一一种种机机制制,它它确确保保多多个个SQLSQL语语句句被被当当作作单单个个工工作作单单元元来来处理处理2 2.事务和程序是两个概念事务和程序是两个概念n在在关关系系数数据据库库中中,一一个个事事务务可可以以是是一一条条SQLSQL语语句句,一一组组SQLSQL语句或整个程序语句或
5、整个程序n一个应用程序通常包含多个事务一个应用程序通常包含多个事务3 3.定义事务定义事务n隐式方式隐式方式当用户没有显式地定义事务时,当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务按缺省规定自动划分事务n显式定义方式显式定义方式n事事务务的的开开始始与与结结束束由由用用户户显显式式控控制制。定定义义事事务务的的语语句句有三条:有三条:n BEGIN TRANSACTION BEGIN TRANSACTION SQL SQL 语句语句 .COMMIT COMMIT ROLLBACK ROLLBACKnBEGIN TRANSACTIONBEGIN TRANSACTION表示事务的开始
6、;表示事务的开始;nCOMMITCOMMIT表示事务的提交表示事务的提交 (事务正常结束事务正常结束 提交提交事务的所有操作事务的所有操作(读读+更新更新),事务中所有事务中所有对数据库的更新写回到磁盘上的物理数据库中去,对数据库的更新写回到磁盘上的物理数据库中去,事务中所有对数据库的更新事务中所有对数据库的更新永久永久生效)生效)ROLLBACKROLLBACK表示事务的回滚,即在事务运行的过程中发生表示事务的回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的库的所有已完成的更新操作更新操作全部撤销,
7、再回滚到事务开全部撤销,再回滚到事务开始时的状态始时的状态。n事务异常终止事务异常终止n事务运行的过程中发生了故障,不能继续执行事务运行的过程中发生了故障,不能继续执行n回滚事务的所有回滚事务的所有更新更新操作,所有已完成的操作,所有已完成的更新操作更新操作全部撤销全部撤销n事务滚回到事务滚回到开始开始时的状态时的状态10.1.2 10.1.2 事务的特征事务的特征n事事务务是是由由有有限限的的数数据据库库操操作作序序列列组组成成,但但并并不不是是任任意意的的数数据据库库操操作作序序列列都都能能成成为为事事务务,为为了了保保护护数数据据的的完完整整性性,一一般般要要求求事事务务具具有有以以下下
8、四四个个特特征征:原原子子性性 一一致致性性 隔隔离离性性 持持久久性性 ACIDACID准则准则1 1原子性(原子性(AtomicAtomic)n一一个个事事务务是是一一个个不不可可分分割割的的工工作作单单位位,事事务务在在执执行行时时,应应该该遵遵守守“要要么么不不做做,要要么么全全做做”(nothing nothing or or allall)的的原原则则,即不允许事务部分的完成。即不允许事务部分的完成。n如如果果事事务务因因故故障障没没有有完完成成,则则该该事事务务已已做做的的操操作作认认为为是是无无效效的,在恢复时必须取消该事务对数据库的影响的,在恢复时必须取消该事务对数据库的影响
9、n保保证证原原子子性性的的思思路路:对对于于要要执执行行写写操操作作的的数数据据项项,在在磁磁盘盘上上记记录录其其旧旧值值,若若事事务务没没能能完完成成执执行行,旧旧值值将将被被恢恢复复,好好像像事事务从未执行务从未执行n保证原子性是保证原子性是DBMSDBMS本身的责任,由本身的责任,由“事务管理部件事务管理部件”处理。处理。2 2一致性(一致性(ConsistencyConsistency)n事事务务对对数数据据库库的的作作用用是是数数据据库库从从一一个个一一致致状状态态转转变变到到另一个一致状态。另一个一致状态。n所所谓谓数数据据库库的的一一致致状状态态是是指指数数据据库库中中的的数数据
10、据满满足足完完整整性约束。性约束。n例例如如,银银行行企企业业中中,“从从帐帐号号A A转转移移资资金金额额R R到到帐帐号号B”B”是是一一个个典典型型的的事事务务,这这个个事事务务包包括括两两个个操操作作,从从帐帐号号A A中中减减去去资资金金额额R R和和在在帐帐号号B B中中增增加加资资金额金额R R。n定义一个事务,该事务包括两个操作定义一个事务,该事务包括两个操作n这两个操作要么全做,要么全不做这两个操作要么全做,要么全不做n全做或者全不做,数据库都处于一致性状态。全做或者全不做,数据库都处于一致性状态。n如果只做一个操作,数据库就处于不一致性状态如果只做一个操作,数据库就处于不一
11、致性状态。可见事务的一致性与原子性是密切相关的。可见事务的一致性与原子性是密切相关的。n确确保保单单个个事事务务的的一一致致性性是是对对该该事事务务编编码码的的应应用用,程程序序员的责任。员的责任。3 3隔离性(隔离性(IsolationIsolation)n一个事务的执行不能被其它事务干扰。一个事务的执行不能被其它事务干扰。n如如果果多多个个事事务务并并发发地地执执行行,应应像像各各个个事事务务独独立立执执行行一一样样。事事务务并并发发执执行行的的结结果果和和某某一一串串行行执执行行的的结果相同结果相同。n事事务务并并发发执执行行的的相相对对独独立立性性,这这是是事事务务并并发发控控制制的目
12、标。的目标。n并发控制就是为了保证事务间的隔离性并发控制就是为了保证事务间的隔离性n隔隔离离性性保保证证:多多个个事事务务并并发发执执行行的的结结果果和和某某一一串串行执行的结果相同行执行的结果相同T1的修改被的修改被T2覆盖了覆盖了!读读A=16AA-3写回写回A=13读读A=16AA-1写回写回A=15T2T14 4持久性(持久性(DurabilityDurability)n指指一一个个事事务务一一旦旦提提交交,它它对对数数据据库库中中数数据据的的改改变变就就应应该该是是持持久久的的,即即使使数数据据库库因因故故障障而而受受到到破破坏坏,DBMSDBMS也也应应该该能能够够恢恢复。复。n事
13、事务务上上述述四四个个性性质质的的英英文文术术语语的的第第一一个个字字母母为为ACIDACID。因因此此,这这四四个性质以称为事务的个性质以称为事务的ACIDACID准则。准则。n下面是一个事务的例子,从帐号下面是一个事务的例子,从帐号A A转移资金额转移资金额R R到帐号到帐号B B:BEGIN TRANSACTIONBEGIN TRANSACTIONREADAAA-RIFA0/*A款不足款不足*/THENBEGINDISPLAY“A款不足款不足”ROLLBACKENDELSE/*拨款拨款*/BEGINBB+RDISPLAY“拨款完成拨款完成”COMMITENDn这是对一个简单事务的完整的描
14、述。这是对一个简单事务的完整的描述。n该事务有两个出口:该事务有两个出口:n当当A帐号的款项不足时,事务以帐号的款项不足时,事务以ROLLBACK(撤销)命令结束,即撤销该事务的影响;(撤销)命令结束,即撤销该事务的影响;n另一个出口是以另一个出口是以COMMIT(提交)命令结束,(提交)命令结束,完成从帐号完成从帐号A到帐号到帐号B的拨款。的拨款。n在在COMMIT之前,即在数据库修改过程中,数据可之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。能是不一致的,事务本身也可能被撤销。n只有在只有在COMMIT之后,事务对数据库所产生的变化之后,事务对数据库所产生的变化才对
15、其他事务开放,这就可以避免其他事务访问不一才对其他事务开放,这就可以避免其他事务访问不一致或不存在的数据致或不存在的数据。n事务的事务的ACID特性可能遭到破坏的因素有:特性可能遭到破坏的因素有:1、多个事务并发运行,不同事务的操作交叉执行多个事务并发运行,不同事务的操作交叉执行;(DBMS必须保证在此种情况下多个事务的交叉运行必须保证在此种情况下多个事务的交叉运行不影响这些事务的原子性,这是不影响这些事务的原子性,这是DBMS中的并发中的并发控制机制的责任。控制机制的责任。)2、事务在运行过程中被强行停止。事务在运行过程中被强行停止。(DBMS必须保证必须保证被强行终止的事务对数据库和其它事
16、务没有任何被强行终止的事务对数据库和其它事务没有任何影响,这是影响,这是DBMS中的恢复机制的责任中的恢复机制的责任。)10.2 10.2 数据库的恢复数据库的恢复10.2.1 10.2.1 数据库恢复的含义数据库恢复的含义n虽虽然然数数据据库库系系统统中中已已采采取取一一定定的的措措施施,来来防防止止数数据据库库的的安安全全性性和和完完整整性性的的破破坏坏,保保证证并并发发事事务务的的正正确确执执行行,但但数数据据库库中中的的数数据据仍仍然然无无法法保保证证绝绝对对不不遭遭受受破破坏坏,比比如如计计算算机机系系统统中中硬硬件件的的故故障障、软软件件的的的的错错误误,操操作作员员的的失失误误,
17、恶恶意意的的破破坏坏等等都都有有可可能能发发生生,这这些些故故障障的的发发生生影影响响数数据据库库数数据据的的正正确确性性,甚甚至至可可能能破破坏坏数数据据库库,使使数数据据库库中中的的数据全部或部分丢失。数据全部或部分丢失。n数数据据库库的的恢恢复复:把把数数据据库库从从错错误误状状态态恢恢复复到到某某一一已已知知的的正确状态正确状态(亦称为一致状态或完整状态亦称为一致状态或完整状态)10.3 10.3 故障的种类故障的种类事务内部事务内部,系统故障系统故障,介质故障介质故障,计算机病毒计算机病毒1、事务内部的故障、事务内部的故障n有的是预期的(可以通过事务程序本身发现的有的是预期的(可以通
18、过事务程序本身发现的)n有的是非预期的有的是非预期的BEGIN TRANSACTIONBEGIN TRANSACTIONREADAAA-RIFA0/*A款不足款不足*/THENBEGINDISPLAY“A款不足款不足”ROLLBACKENDELSE/*拨款拨款*/BEGINBB+RDISPLAY“拨款完成拨款完成”COMMITEND预期到的故障,发现余预期到的故障,发现余额不足,则让事务滚回,额不足,则让事务滚回,撤消已做的更改,恢复撤消已做的更改,恢复数据库到正确的状态。数据库到正确的状态。n事务内部更多的故障是非预期的,是不能由事务内部更多的故障是非预期的,是不能由应用程序处理的。如运算溢
19、出、并发事务死应用程序处理的。如运算溢出、并发事务死锁等。以后,我们指的事务故障仅指这一类锁等。以后,我们指的事务故障仅指这一类非预期的故障。非预期的故障。n事务故障意味着事务没有达到预期的终点事务故障意味着事务没有达到预期的终点(COMMIT或者显式的或者显式的ROLLBACK),因此,因此,数据库可能处于不正确的状态。恢复程序要数据库可能处于不正确的状态。恢复程序要在不影响其它事务运行的前提下,强行回滚在不影响其它事务运行的前提下,强行回滚(ROLLBACK)该事务,该事务,撤消该事务已经作出的撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本任何对数据库的修改,使得该事务好象根本
20、没有启动一样没有启动一样。这类恢复操作称为。这类恢复操作称为事务撤消事务撤消(UNDO)。2、系统故障、系统故障n系系统统故故障障是是指指系系统统在在运运行行过过程程中中,由由于于某某种种原原因因,造造成成系系统统停停止止运运转转,致致使使所所有有正正在在运运行行的的事事务务都都以非正常方式终止,要求系统重新启动。以非正常方式终止,要求系统重新启动。n引引起起系系统统故故障障的的原原因因可可能能有有:硬硬件件错错误误如如CPUCPU故故障、操作系统或障、操作系统或DBMSDBMS代码错误、突然断电等。代码错误、突然断电等。n这这时时,内内存存中中数数据据库库缓缓冲冲区区的的内内容容全全部部丢丢
21、失失,存存储储在在外外部部存存储储设设备备上上的的数数据据库库并并未未破破坏坏,但但内内容容不可靠了不可靠了。n发生系统故障时,事务未提交发生系统故障时,事务未提交n恢复策略:强行撤消(恢复策略:强行撤消(UNDO)所有未完成事务所有未完成事务n发生系统故障时,事务已提交,但缓冲区中的信息发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上尚未完全写回到磁盘上。n恢复策略:重做(恢复策略:重做(REDO)所有已提交的事务所有已提交的事务n重做(重做(REDO):有些己提交的事务对数据库的有些己提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的更新结果还保留在缓冲区中,尚
22、未写到磁盘上的物理数据库中,这也使数据库处于不一致状态,物理数据库中,这也使数据库处于不一致状态,因此应将这些事务己提交的结果重新写入数据库因此应将这些事务己提交的结果重新写入数据库3 3、介质故障、介质故障n介介质质故故障障是是指指系系统统在在运运行行过过程程中中,由由于于存存储储器器介介质质受受到到破破坏坏,使存储在外存中的数据部分丢失或全部丢失。使存储在外存中的数据部分丢失或全部丢失。n这这类类故故障障比比事事务务故故障障和和系系统统故故障障发发生生的的可可能能性性要要小小,但但这这是是最严重的一种故障,破坏性很大最严重的一种故障,破坏性很大。4、计算机病毒、计算机病毒n一一种种人人为为
23、的的故故障障或或破破坏坏,是是一一些些恶恶作作剧剧者者研研制制的的一一种种计计算算机机程序程序n可以繁殖和传播可以繁殖和传播n危害危害n破坏、盗窃系统中的数据破坏、盗窃系统中的数据n破坏系统文件破坏系统文件故障小结n各类故障,对数据库的影响有两种可能性各类故障,对数据库的影响有两种可能性n一是数据库本身被破坏一是数据库本身被破坏n二是数据库没有被破坏,但数据可能不正确,这二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的是由于事务的运行被非正常终止造成的。10.4 10.4 恢复的原理及其实现技术恢复的原理及其实现技术n数据库恢复的数据库恢复的基本原理十分简单,就是数
24、据的冗余基本原理十分简单,就是数据的冗余。n数数据据库库中中任任何何一一部部分分被被破破坏坏的的或或不不正正确确的的数数据据都都可可以以利用存储在系统其它地方的冗余数据来修复。利用存储在系统其它地方的冗余数据来修复。n因此恢复系统应该提供两种类型的功能:因此恢复系统应该提供两种类型的功能:n一一种种是是生生成成冗冗余余数数据据,即即对对可可能能发发生生的的故故障障作作某某些些准备;准备;n另另一一种种是是冗冗余余重重建建,即即利利用用这这些些冗冗余余数数据据恢恢复复数数据据库。库。n生成冗余数据最常用的技术是生成冗余数据最常用的技术是登记日志文件登记日志文件和和数据转数据转储储,在实际应用中,
25、这两种方法常常结合起来一起使在实际应用中,这两种方法常常结合起来一起使用。用。10.4.1 10.4.1 登记日志文件(登记日志文件(LoggingLogging)n日日志志文文件件是是用用来来记记录录事事务务对对数数据据库库的的更更新新操操作作的的文文件件。对对数数据据库库的的每每次次修修改改,都都将将被被修修改改项项目目的的旧旧值值和和新新值值写写在在一一个个叫叫做做运运行行日日志志的的文文件件中中,目目的的是是为为数数据据库库的的恢复保留详细的数据。恢复保留详细的数据。n典型的日志文件主要包含以下内容:典型的日志文件主要包含以下内容:1 1更新数据库的事务标识(标明是哪个事务);更新数据
26、库的事务标识(标明是哪个事务);2 2操作的类型(插入、删除或修改)操作的类型(插入、删除或修改)3 3操作对象;操作对象;4 4更更新新前前数数据据的的旧旧值值(对对于于插插入入操操作作而而言言,没没有有旧旧值);值);5 5更新前数据的新值(对于删除操作而言,没有新值);更新前数据的新值(对于删除操作而言,没有新值);6 6事事务务处处理理中中的的各各个个关关键键时时刻刻(事事务务的的开开始始、结结束束及及其真正回写的时间)。其真正回写的时间)。n日志文件是系日志文件是系统统运行的运行的历历史史记载记载,必,必须须高度可靠。高度可靠。n所所以以一一般般都都是是双双副副本本的的,并并且且独独
27、立立地地写写在在两两个个不不同同类类型型的的设备设备上。上。n日志的日志的信息量很大信息量很大,一般保存在海量存,一般保存在海量存储储器上。器上。n在在对对数数据据库库修修改改时时,在在运运行行日日志志中中要要写写入入一一个个表表示示这这个个修改的运行记录。修改的运行记录。n把把数数据据库库的的修修改改写写到到数数据据库库和和把把表表示示这这个个修修改改的的日日志志记记录写到日志文件录写到日志文件是两个不同的操作。是两个不同的操作。n为为了了防防止止在在这这两两个个操操作作之之间间发发生生故故障障后后,运运行行日日志志中中没没有有记记录录下下这这个个修修改改,以以后后也也无无法法撤撤消消这这个
28、个修修改改。为为保保证证数数据据库库是是可可恢恢复复的的,登登记记日日志志文文件件必必须须遵遵循循两两条条原原则则原原则:则:n1.1.登登记记的的次次序序严严格格按按并并发发事事务务执执行行的的时时间间次序;次序;n2.2.必须先写日志文件,后写数据库。必须先写日志文件,后写数据库。n先先写写原原则则蕴蕴含含了了如如下下意意义义:如如果果出出现现故故障障,只只可可能能是是在在日日志志文文件件中中已已经经登登记记了了所所做做的的修修改改,但但没没有有真真正正修修改改数数据据库库,这这样样在在系系统统重重新新启启动动进进行行恢恢复复时时,只只是是撤撤消消或或重重做做因因发发生生事事故故而而没没有
29、有做做过过的的修修改改,并并不不会会影影响响数数据据库库的的正正确确性性。而而如如果果先先写写了了数数据据库库修修改改,而而在在运运行行记记录录中中没没有有登登记记这这个个修修改改,则则以以后后就就无无法法恢恢复复这这个个修修改改了。了。10.4.2 10.4.2 数据转储(数据转储(Data DumpData Dump)n数数据据转转储储是是指指定定期期地地将将整整个个数数据据库库复复制制到到多多个个存存储储设设备备如如磁磁带带、磁磁盘盘上上保保存存起起来来的的过过程程,它它是是数数据据库库恢恢复复中采用的基本手段。中采用的基本手段。n转转储储的的数数据据文文本本称称为为后后备备副副本本或或
30、后后援援副副本本,当当数数据据库库遭遭到到破破坏坏后后就就可可利利用用后后援援副副本本把把数数据据库库有有效效地地加加以以恢恢复。复。n转转储储是是十十分分耗耗费费时时间间和和资资源源的的,不不能能频频繁繁地地进进行行,应应该根据数据库使用情况确定一个适当的转储周期。该根据数据库使用情况确定一个适当的转储周期。n按照转储方式转储可以分为按照转储方式转储可以分为海量转储海量转储和和增量转储增量转储。n海量转储是指海量转储是指每次转储全部数据库每次转储全部数据库。n增量转储每次只增量转储每次只转储上次转储后被更新过的数据。转储上次转储后被更新过的数据。n按照按照转储转储状状态转储态转储又可分又可分
31、为为静静态转储态转储和和动态转储动态转储。n静静态转储态转储期期间间不允不允许许有任何数据存取活有任何数据存取活动动,因,因而需在当前用而需在当前用户户事事务结务结束之后束之后进进行,新用行,新用户户事事务务又需在又需在转储结转储结束之后才能束之后才能进进行,行,这这就降低了就降低了数据数据库库的可用性。的可用性。n动态转储则动态转储则不同,它允不同,它允许转储许转储期期间继续间继续运行用运行用户户事事务务,但,但产产生的副本并不能保生的副本并不能保证证与当前状与当前状态态一致。解决的一致。解决的办办法是把法是把转储转储期期间间各事各事务对务对数据数据库库的修改活的修改活动动登登记记下来,建立
32、日志文件。下来,建立日志文件。n因此,因此,备备用副本加上日志文件用副本加上日志文件就能把数据就能把数据库库恢恢复到某一复到某一时时刻的正确状刻的正确状态态。10.5 10.5 数据库恢复的策略数据库恢复的策略n根据故障类型的不同,应该采取不同的恢复策略根据故障类型的不同,应该采取不同的恢复策略。1 1、事务故障(、事务故障(Transaction FailureTransaction Failure)及其恢复)及其恢复n事事务务故故障障表表示示由由非非预预期期的的、不不正正常常的的程程序序结结束束所所造造成成的故障。的故障。n发生事务故障时,被迫中断的事务可能已对数据库进发生事务故障时,被迫
33、中断的事务可能已对数据库进行了修改,为了消除该事务对数据库的影响,要利用行了修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,日志文件中所记载的信息,强行回滚(强行回滚(ROLLBACKROLLBACK)该)该事务,将数据库恢复到修改前的初始状态。事务,将数据库恢复到修改前的初始状态。n为此,要检查日志文件中由这些事务所引起的发生变为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变。化的记录,取消这些没有完成的事务所做的一切改变。n这类恢复操作称为事务撤消(这类恢复操作称为事务撤消(UNDOUNDO),具体做法如下:),具体做法如下:1
34、 1反向扫描日志文件反向扫描日志文件,查找该事务的更新操作。,查找该事务的更新操作。2 2对对该该事事务务的的更更新新操操作作执执行行反反操操作作,即即对对已已经经插插入入的的新新记记录录进进行行删删除除操操作作,对对已已删删除除的的记记录录进进行行插插入入操操作作,对对修修改改的的数数据据恢恢复复旧旧值值,用用旧旧值值代代替替新新值值。这这样样由由后后向向前前逐逐个个扫扫描描该该事事务务己己做做所所有有更更新新操操作作,并并做做同同样样处处理理,直直到到扫扫描描到到此此事事务务的的开开始始标标记记,事事务故障恢复完毕。务故障恢复完毕。n因此,一个事务是一个工作单位,也是一个恢复单位。因此,一
35、个事务是一个工作单位,也是一个恢复单位。n一一个个事事务务越越短短,越越便便于于对对它它进进行行UNDOUNDO操操作作。如如果果一一个个应应用用程程序序运运行行时时间间较较长长,则则应应该该把把该该应应用用程程序序分分成成多多个事务,用明确的个事务,用明确的COMMITCOMMIT语句结束各个事务。语句结束各个事务。2 2、系统故障(、系统故障(System FailureSystem Failure)及其恢复)及其恢复n系统故障发生后,对数据库的影响有两种情况:系统故障发生后,对数据库的影响有两种情况:n一种情况是一些未完成事务对数据库的更新已写入数一种情况是一些未完成事务对数据库的更新已
36、写入数据库,这样在系统重新启动后,要强行撤消(据库,这样在系统重新启动后,要强行撤消(UNDOUNDO)所有未完成事务,清除这些事务对数据库所做的修改。所有未完成事务,清除这些事务对数据库所做的修改。这些未完成事务在日志文件中只有这些未完成事务在日志文件中只有BEGIN TRANSCATIONBEGIN TRANSCATION标记,而无标记,而无COMMITCOMMIT标记。标记。n另一种情况是有些己提交的事务对数据库的更新结果另一种情况是有些己提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理数据库中,还保留在缓冲区中,尚未写到磁盘上的物理数据库中,这也使数据库处于不一致状态
37、,因此应将这些事务己这也使数据库处于不一致状态,因此应将这些事务己提交的结果重新写入数据库。这类恢复操作称为事务提交的结果重新写入数据库。这类恢复操作称为事务的重做(的重做(REDOREDO)。这种己提交事务在日志文件中既有)。这种己提交事务在日志文件中既有BEGIN TRANSCATIONBEGIN TRANSCATION标记,也有标记,也有COMMITCOMMIT标记标记。n因因此此,系系统统故故障障的的恢恢复复要要完完成成两两方方面面的的工工作作,既既要要撤撤消消所所有有未未完完成成的的事事务务,还还需需要要重重做做所所有有己己提提交交的的事事务务,这这样样才才能能将将数数据据库库真真正
38、正恢恢复复到到一一致致的的状状态态。具具体体做做法法如下:如下:1 1正正向向扫扫描描日日志志文文件件,查查找找尚尚未未提提交交的的事事务务,将将其其事事务务标标识识记记入入撤撤消消队队列列。同同时时查查找找已已经经提提交交的的事事务,将其事务标识记入重做队列。务,将其事务标识记入重做队列。2 2对对撤撤消消队队列列中中的的各各个个事事务务进进行行撤撤消消处处理理。方方法法同同事务故障中所介绍的撤消方法相同。事务故障中所介绍的撤消方法相同。3 3对对重重做做队队列列中中的的各各个个事事务务进进行行重重做做处处理理。进进行行重重做做处处理理的的方方法法是是:正正向向扫扫描描日日志志文文件件,按按
39、照照日日志志文文件件中中所所登登记记的的操操作作内内容容,重重新新执执行行操操作作,使使数数据库恢复到最近某个可用状态。据库恢复到最近某个可用状态。3 3、介质故障(、介质故障(Media FailureMedia Failure)及其恢复)及其恢复n介介质质故故障障是是指指系系统统在在运运行行过过程程中中,由由于于辅辅助助存存储储器器介介质质受到破坏,使存储在外存中的数据部分丢失或全部丢失。受到破坏,使存储在外存中的数据部分丢失或全部丢失。n这这需需要要装装入入发发生生介介质质故故障障前前最最新新的的后后备备数数据据库库副副本本,然然后利用日志文件重做该副本后所运行的所有事务。后利用日志文件
40、重做该副本后所运行的所有事务。n具体方法如下:具体方法如下:1装装入入最最新新的的数数据据库库副副本本,使使数数据据库库恢恢复复到到最最近近一一次次转储时的可用状态。转储时的可用状态。2装装入入最最新新的的日日志志文文件件副副本本,根根据据日日志志文文件件中中的的内内容容重重做做已已完完成成的的事事务务。首首先先正正向向扫扫描描日日志志文文件件,找找出出发发生生故故障障前前已已提提交交的的事事务务,将将其其记记入入重重做做队队例例。再再对对重重做队列中的各个事务进行重做处理,做队列中的各个事务进行重做处理,n通通过过以以上上对对三三类类故故障障的的分分析析,我我们们可可以以看看出出故故障障发发
41、生生后后对对数据库的影响有两种可能性:数据库的影响有两种可能性:1数数据据库库没没有有被被破破坏坏,但但数数据据可可能能处处于于不不一一致致状状态态。这这是是由由事事务务故故障障和和系系统统故故障障引引起起的的,这这种种情情况况在在恢恢复复时时,不不需需要要重重装装数数据据库库副副本本,直直接接根根据据日日志志文文件件,撤撤销销故故障障发发生生时时未未完完成成的的事事务务,并并重重做做己己完完成成的的事事务务,使使数数据据库库恢恢复复到到正正确确的的状状态态。这这类类故故障障的的恢恢复复是是系系统统在在重重新启动时自动完成的,不需要用户干预。新启动时自动完成的,不需要用户干预。2数数据据库库本
42、本身身被被破破坏坏。这这是是由由介介质质故故障障引引起起的的,这这种种情情况况在在恢恢复复时时,把把最最近近一一次次转转储储的的数数据据装装入入,然然后后借借助助于于日日志志文文件件,再再在在此此基基础础上上对对数数据据库库进进行行更更新新,从从而而重重建建了了数数据据库库。这这类类故故障障的的恢恢复复不不能能自自动动完完成成,需需要要DBA的的介介入入,先先由由DBA重重装装最最近近转转储储的的数数据据库库副副本本和和相相应应的的日日志志文文件件的的副副本本,再再执执行行系系统统提提供供的的恢恢复复命命令令,具体的恢复操作由具体的恢复操作由DBMS来完成。来完成。n数数据据库库恢恢复复的的基
43、基本本原原理理就就是是利利用用数数据据的的冗冗余余的的。十十分分简简单单,实实现现的的方方法法也也比比较较清清楚楚,但但真真正正实实现现起起来来相相当当复复杂杂,实实现现恢恢复复的的程程序序非非常常庞庞大大,常常占整个系统代码的百分之十以上。常常占整个系统代码的百分之十以上。n数数据据库库系系统统所所采采用用的的恢恢复复技技术术是是否否行行之之有有效效,不不仅仅对对系系统统的的可可靠靠程程度度起起着着决决定定性性使使用用,而而且且对对系系统统的的运运行行效效率率也也有有很很大大的的影影响响,是是衡衡量量系系统性能优劣的重要指标统性能优劣的重要指标。10.6 10.6 具有检查点的恢复技术具有检
44、查点的恢复技术一、问题的提出二、检查点技术检查点技术三、利用检查点的恢复策略三、利用检查点的恢复策略一、问题的提出n两个问题两个问题n搜索整个日志将耗费大量的时间搜索整个日志将耗费大量的时间nREDO处理:重新执行,浪费了大量时处理:重新执行,浪费了大量时间间解决方案n具有检查点(具有检查点(checkpoint)的恢复技术)的恢复技术n在日志文件中增加检查点记录(在日志文件中增加检查点记录(checkpoint)n增加重新开始文件增加重新开始文件n恢复子系统在登录日志文件期间动态地维护日志恢复子系统在登录日志文件期间动态地维护日志二、检查点技术n检查点记录的内容检查点记录的内容n1.建立检查
45、点时刻所有正在执行的事务清单建立检查点时刻所有正在执行的事务清单n2.这些事务最近一个日志记录的地址这些事务最近一个日志记录的地址n重新开始文件的内容重新开始文件的内容n记录各个检查点记录在日志文件中的地址记录各个检查点记录在日志文件中的地址具有检查点的日志文件和重新开始文件具有检查点的日志文件和重新开始文件动态维护日志文件的方法n动态维护日志文件的方法动态维护日志文件的方法周期性地执行如下操作:建立检查点,保存数据库状态。周期性地执行如下操作:建立检查点,保存数据库状态。具体步骤是:具体步骤是:n1.将当前日志缓冲区中的所有日志记录写入磁盘的日志文将当前日志缓冲区中的所有日志记录写入磁盘的日
46、志文件上件上n2.在日志文件中写入一个检查点记录在日志文件中写入一个检查点记录n3.将当前数据缓冲区的所有数据记录写入磁盘的数据库中将当前数据缓冲区的所有数据记录写入磁盘的数据库中n4.把检查点记录在日志文件中的地址写入一个重新开始把检查点记录在日志文件中的地址写入一个重新开始文文件件建立检查点n恢复子系统可以定期或不定期地建立检查点恢复子系统可以定期或不定期地建立检查点,保存数据库状态保存数据库状态n定期定期按照预定的一个时间间隔,如每隔一小时建立一个检查点按照预定的一个时间间隔,如每隔一小时建立一个检查点 n不定期不定期按照某种规则,如日志文件已写满一半建立一个检查点按照某种规则,如日志文
47、件已写满一半建立一个检查点三、利用检查点的恢复策略n使用检查点方法可以改善恢复效率使用检查点方法可以改善恢复效率n当事务当事务T在一个检查点之前提交在一个检查点之前提交T对数据库所做的修改已写入数据库对数据库所做的修改已写入数据库n写入时间是在这个检查点建立之前或在这写入时间是在这个检查点建立之前或在这个检查点建立之时个检查点建立之时n在进行恢复处理时,没有必要对事务在进行恢复处理时,没有必要对事务T执行执行REDO操作操作Tc(检查点检查点)Tf(系统故障系统故障)REDOUNDOUNDOREDOT2T3T4T5不要不要REDOT1系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复
48、策略系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复策略nT1:在检查点之前提交:在检查点之前提交nT2:在检查点之前开始执行,在检查点之后故障点之:在检查点之前开始执行,在检查点之后故障点之前提交前提交nT3:在检查点之前开始执行,在故障点时还未完成:在检查点之前开始执行,在故障点时还未完成nT4:在检查点之后开始执行,在故障点之前提交:在检查点之后开始执行,在故障点之前提交nT5:在检查点之后开始执行,在故障点时还未完成:在检查点之后开始执行,在故障点时还未完成恢复策略:恢复策略:nT3和和T5在故障发生时还未完成,所以予以撤销在故障发生时还未完成,所以予以撤销nT2和和T4在
49、检查点之后才提交,它们对数据库所做的修在检查点之后才提交,它们对数据库所做的修改在故障发生时可能还在缓冲区中,尚未写入数据库,改在故障发生时可能还在缓冲区中,尚未写入数据库,所以要所以要REDOnT1在检查点之前已提交,所以不必执行在检查点之前已提交,所以不必执行REDO操作操作10.7数据库镜像数据库镜像n介质故障是对系统影响最为严重的一种故障,严重影介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性响数据库的可用性n介质故障恢复比较费时介质故障恢复比较费时n为预防介质故障,为预防介质故障,DBA必须周期性地转储数据库必须周期性地转储数据库n提高数据库可用性的解决方案提高数据库可
50、用性的解决方案n数据库镜像(数据库镜像(Mirror)n数据库镜像数据库镜像nDBMS自动把整个数据库或其中的关键数自动把整个数据库或其中的关键数据复制到另一个磁盘上据复制到另一个磁盘上nDBMS自动保证镜像数据与主数据库的一自动保证镜像数据与主数据库的一致性致性,每当主数据库更新时,每当主数据库更新时,DBMS自动自动把更新后的数据复制过去把更新后的数据复制过去 镜镜像像的的实实质质也也是是备备份份,在在同同一一时时刻刻保保存存数数据据的的两两个个或或多个副本。多个副本。镜像与转储本质不同:镜像与转储本质不同:转储转储:定期或不定期的、间断、非实时:定期或不定期的、间断、非实时镜像一般是镜像