第八章_数据库恢复技术_第1页
第八章_数据库恢复技术_第2页
第八章_数据库恢复技术_第3页
第八章_数据库恢复技术_第4页
第八章_数据库恢复技术_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第八章 数据库恢复技术,事务的基本概念 数据库恢复的基本概念、恢复的实现技术 恢复策略 具有检测点的恢复技术,事务的基本概念,事务: 是用户定义的一个数据库操作序列, 这些操作要么全做, 要么全不做, 是一个不可分割的工作单位 事务和程序 事务的定义: 显示定义, 隐含定义 Commit和Rollback的含义 事务的性质 原子性: 要么都做,要么都不做. 一致性:事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态.例如银行两个账户A和B: A-200 B+200 隔离性:一个事务的执行不能被其他事务干扰. 持久性: 一个事务一旦提交,对数据库中数据的改变应该是永久性. 事务是恢复和并发控制的基本单位,由begin transaction开始, commit或rollback结束,故障的种类:,数据库恢复: 数据库管理系统必须具有将数据库从错误状态恢复到某一已知状态的功能 故障的种类 事务内部的故障: 可预期的和不可预期的 可预期的故障: 例如银行转账事务, 由事务本身处理, 不需要恢复系统处理,由事务本身处理,恢复系统处理,故障种类,begin transaction 读账户甲的余额Balance; Balance=Balance-Amount if (Balance0) then 打印金额不足, 不能转账; rollback; else 读账户乙余额Balance1; Balance1=Balance1+Amount; 写回Balance1; commit;,事务本身可以发现并处理,故障种类,不可预期的故障: 运算溢出, 并发事务由于死锁而强制撤销事务, 违反了某些完整性限制等, 事务没有达到预期的终点(到达commit或rollback) 可以预料的故障使事务能到达预期的终点, 而不可预料的故障使事务不能到达预期的终点 事务具有原子性, 对不能到达预期终点的事务要进行处理-恢复 undo操作: 恢复程序强行取消该事务已经做出的对数据库的修改, 使该事务好像根本没有启动过, 强行回滚(rollback)该事务,故障种类:,系统故障: 指造成系统停止运行的任何事件 影响正在运行的所有事务, 数据库本身并没遭到破坏, 只是数据不正确-恢复,数据缓冲区,数据库,非正常终止的事务: 系统重新启动后需undo 正常终止的事务(持久性): 系统重新启动后需redo,故障种类:,介质故障: 指外存故障 数据库(或部分)遭到破坏, 影响正在存取这部分数据的所有事务-恢复 计算机病毒: 感染系统和数据-恢复 故障产生的影响: 破坏数据库, 仅使数据库中的数据不一致 恢复基本原理: 数据冗余,恢复的实现技术:,涉及的冗余数据: 数据转储和登记日志文件 数据转储: DBA定期的将整个数据库复制到磁带或另一个磁盘上保存起来的过程 转储十分耗费时间和资源, DBA应根据数据库的使用情况确定一个适当的转储周期 静态转储: 在系统无运行事务时进行的转储操作, 操作过程中禁止操作数据库 后援副本和数据库中的数据是一致的, 静态转储降低数据库的可用性 动态转储: 指转储期间允许对数据库进行存取和修改,恢复的实现技术:,转储得到的后援副本和数据库中的数据不一定一致, 但可以提高系统的可用性,A=20,后援副本,数据库,在 t1时刻A=20被写到后援副本 在 t2时刻A被修改为100, A=100被写到数据库, 而后援副本的值不变,A=100,后援副本,数据库,A=20,必须记录转储期间, 各事务对数据库的修改活动,恢复的实现技术:,海量转储 增量转储 数据的转储方法:,恢复的实现技术:,登记日志文件 日志文件的内容和格式 日志文件: 记录事务对数据库更新操作的文件 类型: 以记录为单位的日志文件和以数据块为单位的日志文件 日志文件的内容: 记录各个事务的开始, 结束和所有的更新操作 日志记录的内容主要包括: 1 事务标识 4 更新前数据的旧值 2 操作的类型 5 更新后的新值 3 操作对象,恢复的实现技术:,例如: 日志文件的一部分 1 begin 1 update A 10 5 2 begin 2 insert C 8 2 commit 日志文件的作用: 恢复 事务故障恢复和系统故障恢复: 必须建立日志文件 1 确定哪些事务结束, 哪些没结束(正向扫描日志文件) 2 对未结束的事务采取undo操作(反向扫描日志文件) 3 对已结束的事务采取redo操作(正向扫描日志文件),日志恢复,恢复的实现技术:,在静态转储方式中: 也可以建立日志, 恢复过程为 1 装入后援副本 2 用日志恢复 静态转储无日志恢复示意图:,t1,t2,t3,正常运行:,静态转储,运行事务,故障发生点,ta,tb,tc,介质故障恢复,重装后援副本,恢复:重新运行事务程序,故障发生点数据库状态,继续运行,数据示意,恢复后数据示意,恢复的实现技术:,静态转储有日志恢复示意图:,t1,t2,t3,正常运行:,静态转储,运行事务,故障发生点,登记日志文件,ta,tb,tc,介质故障恢复,重装后援副本,按日志恢复,故障发生点数据库状态,继续运行,登记日志文件,日志文件,数据示意,恢复后数据示意,故障发生点前数据库一致状态,在动态转出方式中: 必须建立日志, 恢复过程为 1 装入后援副本 2 用日志恢复,t1,t2,t3,正常运行:,动态转储,运行事务,故障发生点,登记日志文件,ta,tb,tc,介质故障恢复,重装后援副本,按日志恢复,故障发生点前数据库一致状态,日志文件,继续运行,登记日志文件,数据库中数据示意,故障发生点数据库状态,恢复后数据库中数据示意,恢复的实现技术:,登记日志文件必须必须遵循两条原则: 登记的次序严格按事务实际执行的顺序 必须先写日志文件, 后写数据库,日志文件,数据库 A=30,修改的数据,关于此修改的日志记录,数据修改,1 begin 1 update A 10 30,恢复策略:,事务故障恢复: 事务未结束, 由系统自动恢复, 采用undo操作, 系统恢复步骤: 反向扫描日志文件, 查找该事务的更新操作 对该事务的更新操作执行逆操作 继续反向扫描日志文件, 查找该事务的其他更新操作, 并做同样的处理 直至读到该事务的开始标志, 该事务恢复完成 系统故障恢复: 系统重新启动时, 由系统自动恢复, 对未结束的事务采用undo操作, 对已结束的事务采用redo操作, 系统恢复步骤:,恢复策略:,正向扫描日志文件, 找出在故障发生前已提交的事务, 将其事务标识记入重做(redo)队列, 找出未提交的事务, 将其事务标识记入撤销(undo)队列 对撤销队列中的事务进行撤销(undo)处理 对重做队列中的事务进行重做(redo)处理 介质故障恢复: 需要DBA介入, 实际恢复由系统完成, 具体步骤: 装入后援副本 装入相应的日志文件副本 启动恢复程序按日志恢复,!日志文件也要转储 !日志和数据库不再同一磁盘,具有检测点的恢复:,在系统故障和介质故障中, 要扫描日志文件, 确定哪些事务已提交, 哪些事务未提交, 如果日志文件很长, 存在两个问题 扫描日志花费时间长 许多需要redo的事务所涉及的数据已写到数据库中, 不在缓冲区中 具有检测点的恢复技术: 在日志文件中增加检测点记录, 增加一个重新开始文件, 动态维护日志文件 检测点记录的内容: 建立检测点时刻所有正在执行的事务清单 这些事务最近一个日志记录的地址,具有检测点的恢复:,动态维护日志文件: 建立检测点, 保存数据库状态, 步骤为 将当前日志缓冲中的日志记录写入日志文件 在日志文件中写入一个检测点记录 将当前数据缓冲中的所有数据写入数据库 将检测点记录的地址写入重新开始文件,T1 D1 T2 D2,Ci检测点记录地址,检测点Ci的重新开始记录,重新开始文件,日志文件,具有检测点的恢复:,使用检测点进行恢复 使用检测点进行恢复的步骤: 在重新开始文件中找到最后一个记录, 从而找到最后一个检测点记录 找到正在执行的事务清单, 将其放入undo队列,Tc(检测点),Tc(系统故障),T1,T2,T3,T4,T5,具有检测点的恢复:,从检测点开始正向扫描日志文件, 如有新事务Ti开始, 将其放入undo队列, 如有事务Tj提交, 将其移入redo队列, 直到日志文件结束 对undo队列中的事务执行undo操作, 对redo队列中的事务执行redo操作,ORACLE恢复机制:,采用了转储和登记日志文件两个技术。 ORACLE向DBA提供了多种转储后备副本的方法: 如文件拷贝 EXPORT实用程序 用SQL命令SPOOL以及自己编程实现等。 ORACLE提供了多种重装后备副本的方法 如文件拷贝 IMPORT实用程序 利用SQL*LOADER以及自己编程实现等。,ORACLE恢复机制:,采用了转储和登记日志文件两个技术。 在ORACLE 早期版本(V.5)中, 日志文件以数据块为单位 将记录数据库更新前的旧值的日志文件称为数据库前像文件(Before Image,简称BI文件),记录数据库更新后的新值的日志文件称为数据库的后像文件(After Image,简称AI文件)。 BI文件是必须的。因为,BI文件关系到能否将数据库恢复到一致性状态; AI文件是任选的,因为AI文件的作用是减少必须重新运行的事务程序,尽可能多地恢复数据库。 为节省存储空间和操作时间,DBA可以不配置AI文件。恢复机制进行故障恢复时只能执行UNDO处理,不能执行REDO处理。,ORACLE恢复机制:,采用了转储和登记日志文件两个技术。 ORACLE 7为了能够在出现故障时更有效地恢复数据, 提供REDO日志文件和回滚段(Rollback Segment)。REDO日志文件中记录了被更新数据的前像和后像 在数据库缓冲区中的回滚段记录更新

温馨提示

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

最新文档

评论

0/150

提交评论