
n 数据库恢复技术.ppt
58页第七章 数据库恢复技术 本书第七章、第八章讨论事务处理技术l 事务----是一系列的数据库操作,是数 据库应用程序的基本逻辑单元l 事务处理技术----主要包括:n 数据库恢复技术n 和并发控制技术数据库恢复机制和并发控制机制是数据 库管理系统的重要组成部分本章讨论数据库恢复的概念和常用技术 7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结 习 题 7.1 事务的基本概念 一、事务(Transaction)所谓事务是:l 用户定义的一个数据库操作序列,l 这些操作要么全做要么全不做,l 是一个不可分割的工作单位例如,在关系数据库中,一个事务可以是:l 一条SQL语句、l 一组SQL语句l 整个程序事务和程序是两个概念其相互关系为:l 一般地讲,一个程序中包含多个事务l 事务的开始与结束可以由用户显式控制 l 如果用户没有显式地定义事务,则由 DBMS按缺省规定自动划分事务。
程序事务事务在SQL语言中,定义事务的语句有三条:l BEGIN TRANSACTIONl COMMITl ROLLBACK事务的执行过程:l 事务通常是以BEGIN TRANSACTION开始,l 以COMMIT或ROLLBACK结束事务定义语句的具体功能:l COMMIT表示提交,即提交事务的所有操作具体地说 就是:n 将事务中所有对数据库的更新写回到磁盘上的物理数 据库中去,n 事务正常结束 l ROLLBACK表示回滚,即:n 在事务运行的过程中发生了某种故障,事务不能继续 执行,n 系统将事务中对数据库的所有已完成的操作全部撤销 ,n 滚回到事务开始时的状态n 这里的操作指对数据库的更新操作COMMITROLLBACKYNBEGIN TRASACTION二、事务的特性事务具有四个特性:l 原子性(Atomicity)、l 一致性(Consistency)、l 隔离性(Isolation)l 持续性(Durability) 这个四个特性,也简称为----ACID特性 1.原子性事务是数据库的逻辑工作单位,事务中包括的诸操作l 要么都做,l 要么都不做。
2.一致性事务执行的结果必须是使数据库从一个一致性状态变到 另一个一致性状态因此: l 当数据库只包含成功事务提交的结果时,就说数据 库处于“一致性状态” l 如果数据库系统运行中发生故障,有些事务尚未完 成就被迫中断,这些未完成事务对数据库所做的修改有一 部分已写入物理数据库,这时数据库就处于一种“不正确的 状态”,或者说是“不一致的状态”例如:某公司在银行中有A,B两个账号,现在 公司想从账号A中取出一万元,存入账号B那么就可以定义一个事务,该事务包括两个操作 ,l 第1个操作是从账号A中减去一万元,l 第2个操作是向账号B中加入一万元 这两个操作要么全做,要么全不做l 全做或者全不做,数据库都处于一致性状态 l 如果只做一个操作则用户逻辑上就会发生错 误,少了一万元,这时数据库就处于不一致性状态 可见一致性与原子性是密切相关的 3.隔离性一个事务的执行不能被其他事务干扰即: l 一个事务内部的操作及使用的数据对其他并 发事务是隔离的, l 并发执行的各个事务之间不能互相干扰 4.持续性 持续性也称永久性(Permanence),指: l 一个事务一旦提交,它对数据库中数据的改 变就应该是永久性的。
l 接下来的其他操作或故障,不应该对其执行 结果有任何影响事务是恢复和并发控制的基本单位所以下面的讨论 均以事务为对象 保证事务ACID特性是事务处理的重要任务事务 ACID特性可能遭到破坏的因素有:(1)多个事务并发运行时,不同事务的操作交叉执行;(2)事务在运行过程中被强行停止其中:l 在第一种情况下,数据库管理系统必须保证多个 事务的交叉运行不影响这些事务的原子性l 在第二种情况下,数据库管理系统必须保证被强 行终止的事务对数据库和其他事务没有任何影响并发控 制机制恢复机制7.2 数据库恢复概述 数据库系统中故障发生的客观性、危害性及恢复的必 要性: l 故障发生的客观性 尽管数据库系统中采取了各种 保护措施来防止数据库的安全性和完整性被破坏,保证 并发事务的正确执行,但是计算机系统中硬件的故障、 软件的错误、操作员的失误以及恶意的破坏仍是不可避 免的 l 故障发生的危害性 这些故障轻则造成运行事务非 正常中断,影响数据库中数据的正确性,重则破坏数据 库,使数据库中全部或部分数据丢失 l 故障恢复的必要性 数据库管理系统必须具有把数 据库从错误状态恢复到某一已知的正确状态(亦称为一致 状态或完整状态)的功能,这就是数据库的恢复。
恢复子系统在DBMS中的地位与作用:l 是数据库管理系统的一个重要组成部 分,而且还相当庞大,常常占整个系统代码 的百分之十以上l 数据库系统所采用的恢复技术是否行 之有效,不仅对系统的可靠程度起着决定性 作用,l 而且对系统的运行效率也有很大影响 ,l 是衡量系统性能优劣的重要指标7.3 故障的种类 数据库系统中可能发生各种各样的故障 ,大致可以分以下几类:l 事务内部的故障l 系统故障l 介质故障l 计算机病毒一、事务内部的故障l 有的是可以通过事务程序本身发现的(见下面的例子) ,l 有的是非预期的,不能由事务程序处理的例如:银行转账事务,这个事务把一笔金额从一个账产 甲转给另一个账户乙BEGIN TRANSACTION读账户甲的余额BALANCE;BALANCE=BALANCE-AMOUNT;(AMOUNT为转账金额 )IF (BALANCE<0) THEN{打印 '金额不足,不能转账';ROLLBACK; (撤销该事务)}ELSE{写回BALANCE;读账户乙的余额BALANCE1;BALANCE1=BALANCE1+AMOUNT;写回BALANCE1;COMMIT;}事务内部更多的故障是非预期的,是不能由应用程序 处理的。
如: l 运算溢出、 l 并发事务发生死锁而被选中撤销该事务、 l 违反了某些完整性限制等 以后,事务故障仅指这类非预期的故障 事务故障,意味着事务没有达到预期的终点 (COMMIT或者显式的ROLLBACK),因此,数据库可能 处于不正确状态 l 恢复程序要在不影响其他事务运行的情况下,强行 回滚(ROLLBACK)该事务, l 撤销该事务已经作出的任何对数据库的修改,使 得该事务好像根本没有启动一样这类恢复操作称为事务撤销(UNDO) 二、系统故障 系统故障,是指造成系统停止运转的任何事件 ,使得正在运行的事务都以非正常的方式终止, 从而引起的内存信息丢失,但未破坏外存中的数 据,导致系统要重新启动例如, l 特定类型的硬件错误(CPU故障)、 l 操作系统故障、 l DBMS代码错误、 l 突然停电等系统故障,导致的后果: 这类故障影响正在运行的所有事务 ,但不破坏数据库 l 一些尚未完成的事务的结果可 能已送入物理数据库,从而造成数据库可 能处于不正确的状态l 有些已完成的事务可能有一部分 甚至全部留在缓冲区, 尚未写回到磁盘上 的物理数据库中,系统故障使得这些事务 对数据库的修改部分或全部丢失,这也会 使数据库处于不一致状态。
让所有非正常 终止的事务回 滚, 强行撤销 (UNDO)所有 未完成事务重做(REDO)所 有已提交的事务 ,以将数据库真 正恢复到一致状 态恢复子系统必须在 系统重新启动时:n 主存内容,尤其是数据库缓冲区(在内存)中的内容 都被丢失,n 所有运行事务都非正常终止三、介质故障系统故障常称为软故障(Soft Crash),介质故障称为硬故 障(Hard Crash)硬故障,指外存故障,如: l 磁盘损坏、 l 磁头碰撞, l 瞬时强磁场干扰等硬故障,导致的后果: l 破坏数据库或部分数据库, l 影响正在存取这部分数据的所有事务这类故障比前两类故障发生的可能性小得多,但破坏性 最大四、计算机病毒计算机病毒: l 是一种人为的故障或破坏, l 是一些恶作剧者研制的一种计算机程序 l 它像微生物学所称的病毒一样,可以繁殖和传播, l 并造成对计算机系统包括数据库的危害 计算机病毒已成为计算机系统的主要威胁,自然也是数 据库系统的主要威胁各类故障, 对数据库的影响有两种可能性: •数据库本身被破坏;•数据库没有破坏,但数据可能不正确 恢复的基本原理:冗余实现技术却相当复杂。
计算机病毒已成为计算机系统的主要威胁,自然也是数据库系统的主要威胁为此计 算机的安全工作者已研制了: l 许多预防病毒的“疫苗”, l 检查、诊断、消灭计算机病毒的软件也在不断发展 l 但是,至今还没有一种使得计算机“终生”免疫的疫苗因此,数据库一旦被破坏仍要用恢复技术把数据库加以恢复尽管恢复的基本原理很简单,但实现技术的细节却相当复杂,下面略去一些细节, 介绍数据库恢复的实现技术 病毒的种类很多,不同病毒有不同的特征l 小的病毒只有20条指令,不到50Bl 大的病毒像一个操作系统,由上万条指令组成有的病毒传播很快,l 一旦侵入系统就马上摧毁系统;l 有的病毒有较长的潜伏期,机器在感染后数天或数月才开始发病;l 有的病毒感染系统所有的程序和数据;l 有的只对某些特定的程序和数据感兴趣l 多数病毒一开始并不摧毁整个计算机系统,它们只在数据库中或其他 数据文件中将小数点向左或向右移一移,增加或删除一两个“0”7.4 恢复的实现技术 恢复机制涉及的两个关键问题是: 如何建立冗余数据; 如何利用这些冗余数据实施数据库恢复建立冗余数据,最常用的技术是: l 数据转储 l 登录日志文件。
通常,在一个数据库系统中,这两种方法是 一起使用的 7.4.1 数据转储 数据转储是数据库恢复中采用的基本技术 (1) 转储的定义 转储是指DBA定期地将整个数据库复制到磁带或另一个磁盘 上保存起来的过程这些备用的数据文本称为后备副本或后援 副本 通过数据转储进行数据库恢复,会遇到以下问题: l 重装后备副本只能将数据库恢复到转储时的状态, l 要想恢复到故障发生时的状态,必须重新运行自转储以 后的所有更新事务例如在图7.1中,数据转储、发生故障、数据库恢复的过程为: l 数据转储n 系统在Ta时刻停止运行事务进行数据库转储,n 在Tb时刻转储完毕,得到Tb时刻的数据库一致性副本 l 发生故障n 系统运行到Tf时刻发生故障 l 数据库恢复n 为恢复数据库,首先由DBA重装数据库后备副本,n 将数据库恢复至Tb时刻的状态,n 然后重新运行自Tb~Tf时刻的所有更新事务, 这样就把数据库恢复到故障发生前的一致状态 图7.1 转储和恢复 转储:l 是十分耗费时间和资源的,l 不能频繁进行 DBA应该根据数据库使用情况确定一个 适当的转储周期 转储可分类为:l 静态转储l 动态转储。
静态转储:l 是在系统中无运行事务时进行的转储操作即 :l 转储操作开始的时刻,数据库处于一致性状态 ,l 而转储期间不允许(或不存在)对数据库的任何存 取、修改活动l 静态转储得到的一定是一个数据一致性的副本 静态转储的特点:l 简单,l 但转储必须等待正运行的用户事务结束才能进 行,l 同样,新的事务必须等。
