《第八章 数据库恢复技术-new.ppt》由会员分享,可在线阅读,更多相关《第八章 数据库恢复技术-new.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八章第八章 数据库恢复技术数据库恢复技术q计算机系统容易发生故障 丢失信息q硬盘、电源、软件、机房、人为q恢复机制q将数据库恢复到故障发生前的某个一致的状态q高可用性q将崩溃后的数据库的不可用的时间减少到最低事务事务数据库恢复技术数据库恢复技术q事务的基本概念q数据库恢复的基本概念、恢复的实现技术q恢复策略q具有检测点的恢复技术事务的基本概念q事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位q访问并可能更新各种数据项的一个程序执行单元单元q事务和程序q一个程序中包含多个事务q事务的定义:显示定义,隐含定义qSQL的事务定义qBEGIN TRANSA
2、CTION 开始qCOMMIT 提交:写到硬盘的物理数据库中qROLLBACK 回滚:故障导致对数据库更新操作失败,滚回到事务开始的状态事务的基本概念q事务的性质 ACID原子性 Atomicity事务中包括的操作要么都做,要么都不做一致性 Consistency事务执行的结果从一个一致性状态变到另一个一致性状态例如银行两个账户A和B:A-200 B+200隔离性 Isolation一个事务的执行不能被其他事务干扰持久性 Durability 事务成功完成后,对数据库的改变是永久的,即使以后系统出现故障也不受影响q事务是恢复和并发控制的基本单位事务的基本概念q例子银行账户A转帐200到帐户BT
3、:read(A);A:=A 200;write(A);read(B);B:=B+200;write(B);事务执行前后一致性:A、B之和不变持久性:转帐结束后,数据不会丢失原子性:t1t2A=1000B=500A=800B=700A=800B=500不一致状态隔离性:转帐事务求和事务 虽然允许并发事务,但必须保持 事务的原子性故障的种类:q数据库恢复:数据库管理系统必须具有将数据库从错误状态恢复到某一已知状态的功能q事务内部的故障:可预期的和不可预期的可预期的故障:例如银行转账事务,由事务本身处理,不需要恢复系统处理由事务本身处理恢复系统处理故障种类 begin transaction 读账户
4、甲的余额Balance;Balance=Balance-Amount if(Balance0)then 打印金额不足,不能转账;rollback;else 读账户乙余额Balance1;Balance1=Balance1+Amount;写回Balance1;commit;事务本身可以发现并处理故障种类不可预期的故障:运算溢出,并发事务由于死锁而强制撤销事务,违反了某些完整性限制等,事务没有达到预期的终点(到达commit或rollback)可以预料的故障使事务能到达预期的终点,而不可预料的故障使事务不能到达预期的终点事务具有原子性,对不能到达预期终点的事务要进行处理-恢复undo操作:恢复程序
5、强行取消该事务已经做出的对数据库的修改,使该事务好像根本没有启动过,强行回滚(rollback)该事务故障种类故障种类:q系统故障:指造成系统停止运行的任何事件qCPU,O.S.,DBMS,停电 影响正在运行的所有事务,数据库本身并没遭到破坏,只是数据不正确-恢复数据缓冲区数据库故障发生时:非正常终止的事务:系统重新启动后需undo数据丢失写入部分不一致数据故障种类故障种类:q系统故障:指造成系统停止运行的任何事件qCPU,O.S.,DBMS,停电 影响正在运行的所有事务,数据库本身并没遭到破坏,只是数据不正确-恢复数据缓冲区数据库故障发生时:正常终止的事务(持久性):系统重新启动后需redo
6、已经提交的数据丢失数据尚未写入硬盘故障种类故障种类:q介质故障:指外存故障数据库(或部分数据库)遭到破坏,影响正在存取这部分数据的所有事务-恢复q计算机病毒:感染系统和数据-恢复q故障产生的影响q破坏数据库q仅使数据库中的数据不一致q恢复基本原理:数据冗余恢复的实现技术恢复的实现技术:q涉及的冗余数据q数据转储q登记日志文件q数据转储qDBA定期的将整个数据库复制到磁带或另一个磁盘上保存起来的过程q备用的数据:后备副本或后援副本转储十分耗费时间和资源,DBA应根据数据库的使用情况确定一个适当的转储周期恢复的实现技术恢复的实现技术:静态转储:在系统无运行事务时进行的转储操作,操作过程中禁止操作数
7、据库后援副本和数据库中的数据是一致的,静态转储降低数据库的可用性动态转储:指转储期间允许对数据库进行存取和修改TaTbTf转储运行事务故障发生点正常运行恢复重装后备副本重新运行事务恢复的实现技术恢复的实现技术:转储得到的后援副本和数据库中的数据不一定一致,但可以提高系统的可用性A=20后援副本数据库在 t1时刻A=20被写到后援副本在 t2时刻A被修改为100,A=100被写到数据库,而后援副本的值不变A=100后援副本数据库A=20必须记录转储期间,各事务对数据库的修改活动建立日志文件建立日志文件恢复的实现技术恢复的实现技术:海量转储增量转储数据的转储方法:恢复的实现技术恢复的实现技术:q登
8、记日志文件日志文件:记录事务对数据库更新操作的文件类型以数据块为单位的日志文件以数据块为单位的日志文件日志文件的内容:事务标识事务标识+被更新的数据块被更新的数据块恢复的实现技术恢复的实现技术:q登记日志文件日志文件:记录事务对数据库更新操作的文件类型以记录为单位的日志文件以记录为单位的日志文件日志文件的内容:记录各个事务的开始,结束和所有的更新操作日志记录的内容主要包括:1 事务标识 4 更新前数据的旧值2 操作的类型 5 更新后的新值3 操作对象 恢复的实现技术恢复的实现技术:例如:日志文件的一部分1 begin 1 update A 10 52 begin 2 insert C 82 c
9、ommit日志文件的作用:恢复事务故障恢复和系统故障恢复:必须建立日志文件 1 确定哪些事务结束,哪些没结束(正向扫描日志文件)2 对未结束的事务采取undo操作(反向扫描日志文件)3 对已结束的事务采取redo操作(正向扫描日志文件)日志恢复恢复的实现技术恢复的实现技术:在静态转储方式中:也可以建立日志,恢复过程为 1 装入后援副本,2 用日志恢复静态转储无日志恢复示意图:t1t2t3正常运行:静态转储运行事务故障发生点tatbtc介质故障恢复重装后援副本恢复:重新运行事务程序故障发生点数据库状态继续运行数据示意恢复后数据示意恢复的实现技术恢复的实现技术:静态转储有日志恢复示意图:t1t2t
10、3正常运行:静态转储运行事务故障发生点登记日志文件t1t2t3介质故障恢复重装后援副本按日志恢复故障发生点数据库状态继续运行登记日志文件日志文件数据示意恢复后数据示意故障发生点前数据库一致状态按日志恢复的好处?按日志恢复的好处?不必运行事务程序不必运行事务程序在动态转储方式中:必须建立日志,恢复过程为 1 装入后援副本 2 用日志恢复t1t2t3正常运行:动态转储运行事务故障发生点登记日志文件t1t2t3介质故障恢复重装后援副本按日志恢复故障发生点前数据库一致状态日志文件继续运行登记日志文件数据库中数据示意故障发生点数据库状态恢复后数据库中数据示意恢复的实现技术恢复的实现技术:登记日志文件登记
11、的次序严格按事务实际执行的顺序必须先写日志文件,后写数据库日志文件数据库A=30修改的数据关于此修改的日志记录数据修改1 begin 1 update A 10 30恢复策略恢复策略:q事务故障恢复:事务未结束,由系统自动恢复,采用undo操作,系统恢复步骤:反向扫描日志文件,查找该事务的更新操作对该事务的更新操作执行逆操作继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理直至读到该事务的开始标志,该事务恢复完成 q系统故障恢复:系统重新启动时,由系统自动恢复,对未结束的事务采用undo操作,对已结束的事务采用redo操作,系统恢复步骤:恢复策略恢复策略:正向扫描日志文件,找出在故
12、障发生前已提交的事务,将其事务标识记入重做(redo)队列,找出未提交的事务,将其事务标识记入撤销(undo)队列对撤销队列中的事务进行撤销(undo)处理对重做队列中的事务进行重做(redo)处理 q介质故障恢复:需要DBA介入,实际恢复由系统完成,具体步骤:装入后援副本装入相应的日志文件副本启动恢复程序按日志恢复!日志文件也要转储!日志和数据库不再同一磁盘具有检测点的恢复具有检测点的恢复:q在系统故障和介质故障中,要扫描日志文件,确定哪些事务已提交,哪些事务未提交,如果日志文件很长,存在两个问题扫描日志花费时间长许多需要redo的事务所涉及的数据已写到数据库中,不在缓冲区中q具有检测点的恢
13、复技术:在日志文件中增加检测点记录,增加一个重新开始文件,动态维护日志文件检测点记录的内容:建立检测点时刻所有正在执行的事务清单这些事务最近一个日志记录的地址具有检测点的恢复具有检测点的恢复:动态维护日志文件:建立检测点,保存数据库状态,步骤为将当前日志缓冲中的日志记录写入日志文件在日志文件中写入一个检测点记录将当前数据缓冲中的所有数据写入数据库将检测点记录的地址写入重新开始文件T1 D1 T2 D2Ci检测点记录地址检测点Ci的重新开始记录重新开始文件日志文件具有检测点的恢复具有检测点的恢复:使用检测点进行恢复使用检测点进行恢复的步骤:在重新开始文件中找到最后一个记录,从而找到最后一个检测点
14、记录找到正在执行的事务清单,将其放入undo队列Tc(检测点)Tc(系统故障)T1T2T3T4T5Redo:T2,T4Undo:T3,T5具有检测点的恢复具有检测点的恢复:从检测点开始正向扫描日志文件,如有新事务Ti开始,将其放入undo队列,如有事务Tj提交,将其移入redo队列,直到日志文件结束对undo队列中的事务执行undo操作,对redo队列中的事务执行redo操作ORACLE恢复机制恢复机制:q采用了转储和登记日志文件两个技术。采用了转储和登记日志文件两个技术。vORACLE向向DBA提供了多种转储后备副本的方法:提供了多种转储后备副本的方法:如文件拷贝如文件拷贝EXPORT实用程
15、序实用程序用用SQL命令命令SPOOL以及自己编程实现等。以及自己编程实现等。vORACLE提供了多种重装后备副本的方法提供了多种重装后备副本的方法如文件拷贝如文件拷贝IMPORT实用程序实用程序利用利用SQL*LOADER以及自己编程实现等。以及自己编程实现等。ORACLE恢复机制恢复机制:q采用了转储和登记日志文件两个技术。采用了转储和登记日志文件两个技术。v在在ORACLE 早期版本(早期版本(V.5)中,中,v日志文件以数据块为单位日志文件以数据块为单位v将记录数据库更新前的旧值的日志文件称为将记录数据库更新前的旧值的日志文件称为数据库前像文数据库前像文件件(Before Image,
16、简称简称BI文件),记录数据库更新后文件),记录数据库更新后的新值的日志文件称为数据库的后像文件(的新值的日志文件称为数据库的后像文件(After Image,简称简称AI文件)。文件)。vBI文件是必须的。因为,文件是必须的。因为,BI文件关系到能否将数据库恢复文件关系到能否将数据库恢复到一致性状态;到一致性状态;AI文件是任选的,因为文件是任选的,因为AI文件的作用是减文件的作用是减少必须重新运行的事务程序,尽可能多地恢复数据库。少必须重新运行的事务程序,尽可能多地恢复数据库。v为节省存储空间和操作时间,为节省存储空间和操作时间,DBA可以不配置可以不配置AI文件。恢文件。恢复机制进行故障
17、恢复时只能执行复机制进行故障恢复时只能执行UNDO处理,不能执行处理,不能执行REDO处理。处理。ORACLE恢复机制恢复机制:q采用了转储和登记日志文件两个技术。采用了转储和登记日志文件两个技术。vORACLE 7为了能够在出现故障时更有效地恢复数为了能够在出现故障时更有效地恢复数据,据,v提供提供REDO日志文件和回滚段日志文件和回滚段(Rollback Segment)。)。REDO日志文件中记录了被更新数据的前像和后像日志文件中记录了被更新数据的前像和后像v在数据库缓冲区中的回滚段记录更新数据的前像。在数据库缓冲区中的回滚段记录更新数据的前像。v利用日志文件进行故障恢复,为减少扫描日志文件利用日志文件进行故障恢复,为减少扫描日志文件的遍数,的遍数,ORACLE 7先扫描先扫描REDO日志文件,重做所日志文件,重做所有操作,包括未正常提交的事务的操作,然后再根有操作,包括未正常提交的事务的操作,然后再根据回滚段中的数据,撤消未正常提交的事务的操作。据回滚段中的数据,撤消未正常提交的事务的操作。ORACLE恢复机制恢复机制:T1T3T2T4TrTa时间(a)发生故障,事务非正常终止,利用REDO文件,重做所有操作。T1T2TrTa时间(b)利用回滚段撤销未提交的事务数据库恢复到一致性状态