数据库恢复最新课件

上传人:re****.1 文档编号:568338254 上传时间:2024-07-24 格式:PPT 页数:68 大小:794.50KB
返回 下载 相关 举报
数据库恢复最新课件_第1页
第1页 / 共68页
数据库恢复最新课件_第2页
第2页 / 共68页
数据库恢复最新课件_第3页
第3页 / 共68页
数据库恢复最新课件_第4页
第4页 / 共68页
数据库恢复最新课件_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《数据库恢复最新课件》由会员分享,可在线阅读,更多相关《数据库恢复最新课件(68页珍藏版)》请在金锄头文库上搜索。

1、数据库恢复技术数据库恢复最新课件数据库恢复最新课件内容要求了解数据库的一致性状态;数据库运行中可能产了解数据库的一致性状态;数据库运行中可能产生的故障类型,以及对数据库造成的影响。生的故障类型,以及对数据库造成的影响。掌握事务的基本概念和事务的掌握事务的基本概念和事务的ACIDACID性质;数据库性质;数据库恢复的实现技术;日志文件的内容及作用。恢复的实现技术;日志文件的内容及作用。举一反三:恢复的基本原理,针对不同故障的恢举一反三:恢复的基本原理,针对不同故障的恢复策略和方法。复策略和方法。数据库恢复最新课件数据库恢复最新课件本讲内容一、事务的基本概念一、事务的基本概念二、数据库恢复概述二、

2、数据库恢复概述三、故障的种类三、故障的种类四、恢复的实现技术四、恢复的实现技术五、恢复策略五、恢复策略六、具有检查点的恢复技术六、具有检查点的恢复技术七、数据库镜像七、数据库镜像数据库恢复最新课件数据库恢复最新课件事务概念的引出 银行转账操作序列操作序列1 1读出读出账账号号A A的余额的余额R R2 2R-R-1 1万万 R R3 3中断中断4 4B B账账号的余额没有变。号的余额没有变。从账号从账号A转出转出1 1万万元到账号元到账号B 我我的的1万万元元呢呢?数据库恢复最新课件数据库恢复最新课件一、事务的基本概念1.1.事务的定义事务的定义2.2.事务的事务的ACIDACID性质性质3.

3、3.事务的状态变迁图事务的状态变迁图数据库恢复最新课件数据库恢复最新课件 1、事务(、事务(transaction) 一个数据库操作序列,是数据库应用程序的基本逻一个数据库操作序列,是数据库应用程序的基本逻辑单元。辑单元。 这些操作要么都做,要么都不做,是一个不可这些操作要么都做,要么都不做,是一个不可分割的执行单位。分割的执行单位。主要是更新操作主要是更新操作事务标记事务标记:BEGIN TRANSACTIONCOMMIT 或或 ROLLBACK事务开始事务开始 事务提交:事务提交:事务完成了其包含的事务完成了其包含的所有活动,正常结束所有活动,正常结束 事务回滚(中止):事务回滚(中止):

4、撤消已做的所有操作,撤消已做的所有操作,回到事务开始时的状态回到事务开始时的状态1 事务的基本概念事务的基本概念数据库恢复最新课件数据库恢复最新课件示例Create table MyFriendsCreate table MyFriendsname char(6) not null,name char(6) not null, sex char(2), sex char(2), phone char(11) not null phone char(11) not nullBegin transactionBegin transaction insert into MyFriends(name,

5、sex) insert into MyFriends(name,sex) values( values(王国庆王国庆, ,男男) ) update Myfriends update Myfriends set phone= set phone= where name= where name=王国庆王国庆commitcommit数据库恢复最新课件数据库恢复最新课件关于事务事务和程序是两个概念。事务和程序是两个概念。BEGIN TRANSACTIONBEGIN TRANSACTION表示事务的开始表示事务的开始COMMIT/ROLLBACKCOMMIT/ROLLBACK表示事务的结束。表示事务的结

6、束。(1 1)COMMITCOMMIT表示提交,即提交事务的所有操作。具体地说表示提交,即提交事务的所有操作。具体地说就是将事务中所有就是将事务中所有对数据库的更新写到磁盘的物理数据库对数据库的更新写到磁盘的物理数据库中中,事务正常结束。,事务正常结束。(2 2)ROLLBACKROLLBACK表示回滚,即在事务运行的过程中发生了某表示回滚,即在事务运行的过程中发生了某种例外,事务不能继续执行,系统将事务中对数据库的所种例外,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。有已完成的操作全部撤销,回滚到事务开始时的状态。说明:这里的操作指对数据库的说明

7、:这里的操作指对数据库的更新更新操作。操作。思考:查询操作,对思考:查询操作,对COMMITCOMMIT的结果有影响吗?有必要做的结果有影响吗?有必要做ROLLBACKROLLBACK吗?吗?数据库恢复最新课件数据库恢复最新课件示例例:设银行数据库中有一转账事务例:设银行数据库中有一转账事务T T,从帐号,从帐号A A转转一笔款(一笔款(5050)到帐号)到帐号B,B,其操作如下:其操作如下: T: read(A);T: read(A); A: =A-50; A: =A-50; write(A); write(A); read(B); read(B); B: =B+50; B: =B+50;

8、write(B). write(B).数据库恢复最新课件数据库恢复最新课件对应的程序T:BEGIN TRANSACTIONT:BEGIN TRANSACTION read(A); read(A); A: =A-50; A: =A-50; write(A); write(A); if(A0) ROLLBACK; if(A0) ROLLBACK; else else read(B); read(B); B: =B+50; B: =B+50; write(B); write(B); COMMIT; COMMIT;数据库恢复最新课件数据库恢复最新课件SQLSQL事务控制流程事务控制流程Begin tr

9、ansactionCommitRollbackSQL语句SQL语句执行成功SQL语句执行失败事务开始时的数据库更新后的数据库数据库恢复最新课件数据库恢复最新课件读写操作对数据库的访问是建立在读和写两个操作的基对数据库的访问是建立在读和写两个操作的基础上的:础上的:(1 1)Read(X)Read(X):把数据把数据X X从磁盘的数据库中读到从磁盘的数据库中读到内存的缓冲区中。内存的缓冲区中。(2 2)Write(X)Write(X):把数据:把数据X X从内存的缓冲区写回磁从内存的缓冲区写回磁盘的数据库。盘的数据库。说明:说明:在系统运行时,在系统运行时,writewrite操作未必导致数据操

10、作未必导致数据立即写回磁盘,很可能先暂存在内存缓冲区中,立即写回磁盘,很可能先暂存在内存缓冲区中,稍后再写回磁盘。稍后再写回磁盘。数据库恢复最新课件数据库恢复最新课件2.事务的特性(ACID特性)(1 1)原子性()原子性(AtomicityAtomicity)(2 2)一致性()一致性(ConsistencyConsistency)(3 3)隔离性()隔离性(IsolationIsolation)(4 4)持续性()持续性(Durability Durability )数据库恢复最新课件数据库恢复最新课件2、事务应具有的性质(、事务应具有的性质(P248)(1)原子性()原子性(Atomic

11、ity):事务执行时的不可分割性,):事务执行时的不可分割性, 即事务所包含的活动要么都做,要么都不做即事务所包含的活动要么都做,要么都不做 若事务因故障而中止,则要设法消除该事务所产生若事务因故障而中止,则要设法消除该事务所产生的影响,使数据库恢复到该事务执行前的状态。的影响,使数据库恢复到该事务执行前的状态。(2)一致性()一致性(Consistency):事务对数据库的作用应):事务对数据库的作用应 使数据库从一个一致状态到另一个一致状态使数据库从一个一致状态到另一个一致状态例如:一个帐号的收支之差应等于余额。例如:一个帐号的收支之差应等于余额。 飞机订票系统,事务执行前后,座位与订出座

12、位飞机订票系统,事务执行前后,座位与订出座位等信息必须一致。等信息必须一致。数据库恢复最新课件数据库恢复最新课件(3)隔离性()隔离性(Isolation):): 多事务并发执行,应象各事务独立执行一样,不多事务并发执行,应象各事务独立执行一样,不能相互干扰。一个正在执行的事务其中间结果不能为其能相互干扰。一个正在执行的事务其中间结果不能为其它事务所访问。它事务所访问。例如:有两个事务,在同一帐号上存款和贷款:例如:有两个事务,在同一帐号上存款和贷款:贷款事务贷款事务 T1存款事务存款事务 T2存入款存入款100元元贷出款贷出款50元元CommitRollbackT2中止,中止,T1也必须中止

13、,也必须中止,造成链式事务中止造成链式事务中止(cascading aborts)余额余额10元元数据库恢复最新课件数据库恢复最新课件(4)持久性()持久性(Durability):): 一旦事务提交,不论执行一旦事务提交,不论执行何种操作或发生何种故障,都不应对该事务的执行结果有何种操作或发生何种故障,都不应对该事务的执行结果有任何影响。任何影响。3、事务管理任务、事务管理任务 事务管理的任务就是要保证事务满足上述性质。使事事务管理的任务就是要保证事务满足上述性质。使事务不具有上述性质的因素可能是:务不具有上述性质的因素可能是:(1)事务在运行过程中被强行终止;)事务在运行过程中被强行终止;

14、(2)多个事务并行运行时,不同事务的操作交叉执行。)多个事务并行运行时,不同事务的操作交叉执行。能恢复能恢复因此事物管理又分为两个方面:因此事物管理又分为两个方面:恢复:保证事务在故障时满足上述性质的技术。恢复:保证事务在故障时满足上述性质的技术。并发控制:保证事务在并发执行时满足上述性质的技术。并发控制:保证事务在并发执行时满足上述性质的技术。数据库恢复最新课件数据库恢复最新课件练习1事务的原子性是由事务的原子性是由DBMSDBMS的实现的。的实现的。事务的一致性是由事务的一致性是由DBMSDBMS的实现的。的实现的。事务的隔离性是由事务的隔离性是由DBMSDBMS的实现的。的实现的。事务的

15、持久性是由事务的持久性是由DBMSDBMS的实现的。的实现的。答案:事务管理子系统答案:事务管理子系统 完整性子系统完整性子系统 并发控制子系统并发控制子系统 故障管理恢复子系统故障管理恢复子系统数据库恢复最新课件数据库恢复最新课件练习21.1.事务是一个(事务是一个( )A.A.程序程序 B.B.进程进程 C.C.操作序列操作序列 D.D.完整性规则完整性规则2.2.事务对事务对DBDB的修改,应该在数据库中留下痕迹,永不消的修改,应该在数据库中留下痕迹,永不消逝,这个性质称为事务的(逝,这个性质称为事务的( )A.A.持久性持久性 B.B.隔离性隔离性 C.C.一致性一致性 D.D.原子性

16、原子性3.3.事务的并发执行不会破坏事务的并发执行不会破坏DBDB的完整性,这个性质称为的完整性,这个性质称为事务的(事务的( )A.A.持久性持久性 B.B.隔离性隔离性 C.C.一致性一致性 D.D.原子性原子性答案:答案:C A BC A B数据库恢复最新课件数据库恢复最新课件事务的两段提交 一个事务完成其操作并提交,严格上讲一个事务完成其操作并提交,严格上讲并非已经并非已经“成功完成成功完成”该事务。实际上,事该事务。实际上,事务的提交有一个过程,从开始提交到提交成务的提交有一个过程,从开始提交到提交成功可以分为功可以分为部分提交部分提交和和提交提交两个阶段。两个阶段。 要详细了解这个

17、问题,首先要了解要详细了解这个问题,首先要了解事务运行过程中的状态变化。事务运行过程中的状态变化。数据库恢复最新课件数据库恢复最新课件事务的两段提交 事务运行时有如下五种状态:事务运行时有如下五种状态:活动活动状态状态部分部分提交提交失败失败状态状态提交提交状态状态异常异常状态状态数据库恢复最新课件数据库恢复最新课件事务的两段提交活动活动状态状态部分部分提交提交失败失败状态状态提交提交状态状态异常异常状态状态1、活动状态、活动状态 事务开始运行时被激活,就处于活动状态,直到事务被事务开始运行时被激活,就处于活动状态,直到事务被部分提交或失败。在这个状态中,事务将执行对数据库的读部分提交或失败。

18、在这个状态中,事务将执行对数据库的读写操作,但这时的写操作并非立即写到磁盘上,一般是暂时写操作,但这时的写操作并非立即写到磁盘上,一般是暂时存放在系统缓冲区中。存放在系统缓冲区中。数据库恢复最新课件数据库恢复最新课件事务的两段提交活动活动状态状态部分部分提交提交失败失败状态状态提交提交状态状态异常异常状态状态2、部分提交状态、部分提交状态 事务中所有读写操作已经完成,事务进入部分提交状态。事务中所有读写操作已经完成,事务进入部分提交状态。但这时对数据库的修改还存储在内存缓冲区中,事务还没有但这时对数据库的修改还存储在内存缓冲区中,事务还没有真正结束。真正结束。数据库恢复最新课件数据库恢复最新课

19、件事务的两段提交活动活动状态状态部分部分提交提交失败失败状态状态提交提交状态状态异常异常状态状态3、失败状态、失败状态 当一个事务无法正常进行下去时,该事务就会处于失当一个事务无法正常进行下去时,该事务就会处于失败状态。这时,数据库管理系统(败状态。这时,数据库管理系统(DBMS)必须撤消它对)必须撤消它对数据库和其他事务的影响。数据库和其他事务的影响。数据库恢复最新课件数据库恢复最新课件事务的两段提交活动活动状态状态部分部分提交提交失败失败状态状态提交提交状态状态异常异常状态状态4、异常结束状态、异常结束状态 当撤消一个失败事务对数据库和其他事务的影响,并当撤消一个失败事务对数据库和其他事务

20、的影响,并恢复到事务开始执行之前的状态以后,该失败事务退出数恢复到事务开始执行之前的状态以后,该失败事务退出数据库系统,进入异常结束状态。据库系统,进入异常结束状态。数据库恢复最新课件数据库恢复最新课件事务的两段提交活动活动状态状态部分部分提交提交失败失败状态状态提交提交状态状态5、提交状态、提交状态 当一个事务成功地完成所有操作,并且所有的操作对当一个事务成功地完成所有操作,并且所有的操作对数据库的影响都已经永久地存入数据库之后,该事务退出数据库的影响都已经永久地存入数据库之后,该事务退出数据库系统,进入提交状态,正常结束。数据库系统,进入提交状态,正常结束。异常异常状态状态数据库恢复最新课

21、件数据库恢复最新课件事务的两段提交活动活动状态状态部分部分提交提交失败失败状态状态 通常,一个事务开始运行便立即进入活动状态,当执行最后一个语句时通常,一个事务开始运行便立即进入活动状态,当执行最后一个语句时便进入部分提交状态。若处于活动状态的事务未能正常执行某一操作,或者便进入部分提交状态。若处于活动状态的事务未能正常执行某一操作,或者在部分提交状态中无法安全地将数据存入数据库,则事务进入失败状态。此在部分提交状态中无法安全地将数据存入数据库,则事务进入失败状态。此时,只要撤消其对数据库和其他事务的影响,该事务就进入异常结束状态。时,只要撤消其对数据库和其他事务的影响,该事务就进入异常结束状

22、态。 对于进入异常结束状态的事务,要根据失败原因分别作出相应处理:通对于进入异常结束状态的事务,要根据失败原因分别作出相应处理:通常情况下,由与事务无关的外部原因(如硬件故障或系统软件错误)引起的常情况下,由与事务无关的外部原因(如硬件故障或系统软件错误)引起的失败,可以重新启动该事务;而对于事务内部错误所引发的失败,将予以废失败,可以重新启动该事务;而对于事务内部错误所引发的失败,将予以废除,通知用户修改或重写该事务程序。除,通知用户修改或重写该事务程序。异常异常状态状态提交提交状态状态数据库恢复最新课件数据库恢复最新课件二、 数据库恢复概述故障是不可避免的故障是不可避免的系统故障:计算机软

23、、硬件故障系统故障:计算机软、硬件故障人为故障:操作员的失误、恶意的破坏等。人为故障:操作员的失误、恶意的破坏等。错误的情形:错误的情形:运行的事务非正常中断运行的事务非正常中断影响数据库中数据的正确性影响数据库中数据的正确性破坏数据库,使数据库中全部或部分数据丢失。破坏数据库,使数据库中全部或部分数据丢失。数据库的恢复(恢复子系统实现)数据库的恢复(恢复子系统实现)把数据库从错误状态恢复到某一已知的正确状态把数据库从错误状态恢复到某一已知的正确状态( (亦称为一致状态或完整亦称为一致状态或完整状态状态) )数据库恢复最新课件数据库恢复最新课件三、故障的种类1.1.事务内部的故障事务内部的故障

24、2.2.系统故障系统故障3.3.介质故障介质故障4.4.计算机病毒计算机病毒数据库恢复最新课件数据库恢复最新课件1.事务内部的故障事务内部的故障事务内部的故障有的是可以通过事务程序本身发现的有的是可以通过事务程序本身发现的( (见下见下面转账事务的例子面转账事务的例子) ) 有的是非预期的有的是非预期的数据库恢复最新课件数据库恢复最新课件示例例如,银行转账事务,这个事务把一笔金额从一个账户甲例如,银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。转给另一个账户乙。 BEGIN TRANSACTIONBEGIN TRANSACTION 读账户甲的余额读账户甲的余额BALANCEBAL

25、ANCE; BALANCE=BALANCE-AMOUNTBALANCE=BALANCE-AMOUNT;(AMOUNT (AMOUNT 为转账金额为转账金额) ) 写回写回BALANCEBALANCE; IF(BALANCE 0 ) THENIF(BALANCE 0 ) THEN 打印打印 金额不足,不能转账金额不足,不能转账 ; ROLLBACKROLLBACK;( (撤销刚才的修改,恢复事务撤销刚才的修改,恢复事务) ) ELSE ELSE 读账户乙的余额读账户乙的余额BALANCE1BALANCE1; BALANCE1=BALANCE1+AMOUNTBALANCE1=BALANCE1+AM

26、OUNT; 写回写回BALANCE1BALANCE1;COMMITCOMMIT; 数据库恢复最新课件数据库恢复最新课件示例(续)这个例子所包括的两个更新操作要么全部完成要这个例子所包括的两个更新操作要么全部完成要么全部不做。否则就会使数据库处于不一致状态,么全部不做。否则就会使数据库处于不一致状态,例如只把账户甲的余额减少了而没有把账户乙的例如只把账户甲的余额减少了而没有把账户乙的余额增加。余额增加。在这段程序中若产生账户甲余额不足的情况,应在这段程序中若产生账户甲余额不足的情况,应用程序可以发现并让事务回滚,撤销已作的修改,用程序可以发现并让事务回滚,撤销已作的修改,恢复数据库到正确状态。恢

27、复数据库到正确状态。数据库恢复最新课件数据库恢复最新课件示例(续)事务内部更多的故障是非预期的,是不能由应用程序处理事务内部更多的故障是非预期的,是不能由应用程序处理的。的。运算溢出运算溢出并发事务发生死锁而被选中撤销该事务并发事务发生死锁而被选中撤销该事务违反了某些完整性限制违反了某些完整性限制等等 以后,事务故障仅指这类以后,事务故障仅指这类非预期的故障非预期的故障事务故障的恢复:事务故障的恢复:撤消事务(撤消事务(UNDOUNDO),强行回滚,它将数),强行回滚,它将数据库恢复到事务执行前的状态。据库恢复到事务执行前的状态。数据库恢复最新课件数据库恢复最新课件2.系统故障系统故障系统故障

28、称为软故障,是指造成系统停止运转的任何事件,使称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。得系统要重新启动。 整个系统的正常运行突然被破坏整个系统的正常运行突然被破坏所有正在运行的事务都非正常终止所有正在运行的事务都非正常终止不破坏数据库不破坏数据库内存中数据库缓冲区的信息全部丢失内存中数据库缓冲区的信息全部丢失思考:内存、缓冲区与磁盘之间的关系如何?思考:内存、缓冲区与磁盘之间的关系如何?数据库恢复最新课件数据库恢复最新课件系统故障的常见原因特定类型的硬件错误(如特定类型的硬件错误(如CPUCPU故障)故障)操作系统故障操作系统故障DBMSDBMS代码错误代码错误系统断电

29、系统断电数据库恢复最新课件数据库恢复最新课件系统故障的恢复发生系统故障时,事务未提交发生系统故障时,事务未提交恢复策略:强行撤消(恢复策略:强行撤消(UNDOUNDO)所有未完成事务)所有未完成事务发生系统故障时,事务已提交,但缓冲区中的信发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上。息尚未完全写回到磁盘上。恢复策略:重做(恢复策略:重做(REDOREDO)所有已提交的事务)所有已提交的事务数据库恢复最新课件数据库恢复最新课件3.介质故障介质故障介质故障称为硬故障,指外存故障称为硬故障,指外存故障磁盘损坏磁盘损坏磁头碰撞磁头碰撞操作系统的某种潜在错误操作系统的某种潜在错误瞬

30、时强磁场干扰瞬时强磁场干扰数据库恢复最新课件数据库恢复最新课件介质故障对数据库的影响磁盘上的物理数据库遭到毁灭性的破坏磁盘上的物理数据库遭到毁灭性的破坏影响正在存取这部分数据的所有事务影响正在存取这部分数据的所有事务这类故障比事务故障和系统故障发生的可能性小这类故障比事务故障和系统故障发生的可能性小得多,但破坏性最大。得多,但破坏性最大。数据库恢复最新课件数据库恢复最新课件介质故障的恢复装入装入数据库发生介质故障前某个时刻的数据数据库发生介质故障前某个时刻的数据副本副本重做自此时始的所有重做自此时始的所有成功事务成功事务,将这些事务已提,将这些事务已提交的结果重新记入数据库交的结果重新记入数据

31、库数据库恢复最新课件数据库恢复最新课件4.计算机病毒计算机病毒计算机病毒一种人为的故障或破坏,是一些恶作剧者研制一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序的一种计算机程序可以繁殖和传播可以繁殖和传播危害危害破坏、盗窃系统中的数据破坏、盗窃系统中的数据破坏系统文件破坏系统文件破坏物理数据库破坏物理数据库数据库恢复最新课件数据库恢复最新课件故障小结各类故障,对数据库的影响有两种可能性各类故障,对数据库的影响有两种可能性一是数据库本身被破坏一是数据库本身被破坏二是数据库没有被破坏,但数据可能不正确,二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。这是由于事

32、务的运行被非正常终止造成的。数据库恢复最新课件数据库恢复最新课件四、 恢复的实现技术恢复操作的基本原理:冗余恢复操作的基本原理:冗余利用存储在系统其它地方的冗余数据来重建数据库中利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据。已被破坏或不正确的那部分数据。恢复机制涉及的关键问题恢复机制涉及的关键问题(1 1)如何建立冗余数据)如何建立冗余数据数据转储(数据转储(backupbackup)登录日志文件(登录日志文件(logginglogging)(2 2) 如何利用这些冗余数据实施数据库恢复如何利用这些冗余数据实施数据库恢复数据库恢复最新课件数据库恢复最新课件1. 数

33、据转储(1 1)什么是数据转储)什么是数据转储(2 2)转储方法)转储方法数据库恢复最新课件数据库恢复最新课件1、数据转储与恢复、数据转储与恢复 转储:转储:DBA定期将整个数据库复制到磁带或另一个磁定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。盘上保存起来的过程。 (这些备用的数据称为后备副本或后援副本)(这些备用的数据称为后备副本或后援副本) 恢复:当数据库被破坏后可将后备副本重新装入,并恢复:当数据库被破坏后可将后备副本重新装入,并重新运行转储以后的所有更新事务。重新运行转储以后的所有更新事务。 转储数据转储数据运行事务运行事务重装后备副本重装后备副本重新运行事务重新运行事务发

34、生故障发生故障TaTbTf正常运行正常运行恢恢 复复例:例:Ta时刻系统停止运行事务开始转储,时刻系统停止运行事务开始转储,Tb时刻转储完时刻转储完毕重新开始运行事务,毕重新开始运行事务,Tf时刻发生故障。时刻发生故障。数据库恢复最新课件数据库恢复最新课件转储的状态转储的状态 静态转储:转储期间静态转储:转储期间 不允许不允许 对数据库进行操作对数据库进行操作特点:静态转储得到的一定是一个数据一致性的特点:静态转储得到的一定是一个数据一致性的副本。因为转储必须等用户事务全部结束才能进副本。因为转储必须等用户事务全部结束才能进行,而且新的事务必须等待转储完毕才能开始执行,而且新的事务必须等待转储

35、完毕才能开始执行。但数据库的可用性被降低。行。但数据库的可用性被降低。动态转储:转储期间动态转储:转储期间 允许允许 对数据库进行操作对数据库进行操作特点:转储和用户事务可并发执行,即不必等待特点:转储和用户事务可并发执行,即不必等待正在运行的事务结束,也不影响新事务的运行。正在运行的事务结束,也不影响新事务的运行。但转储的数据可能已过时。但转储的数据可能已过时。为此,必须建立日志文件,记录转储期间对数据库的为此,必须建立日志文件,记录转储期间对数据库的更新活动。这样,后援副本加日志文件就能把数据库更新活动。这样,后援副本加日志文件就能把数据库恢复到某个时刻的一致性状态。恢复到某个时刻的一致性

36、状态。数据库恢复最新课件数据库恢复最新课件海量转储:每次转储全部数据库海量转储:每次转储全部数据库增量转储:只转储上次转储后更新过的数据增量转储:只转储上次转储后更新过的数据(一般每周一次)(一般每周一次)(一般每天一次)(一般每天一次)注意:对大中型数据库系统来说,注意:对大中型数据库系统来说, 转储是非常重要的!转储是非常重要的!转储方式转储方式转储方法转储方法 动态海量动态海量 动态增量动态增量静态海量静态海量 静态增量静态增量费时费时在转储后和故障点之间的数据更新不能恢复在转储后和故障点之间的数据更新不能恢复动态转储时转储的数据可能已过时动态转储时转储的数据可能已过时转储的缺点转储的缺

37、点数据库恢复最新课件数据库恢复最新课件2、日志文件和恢复、日志文件和恢复日志(日志(log):用来记录对数据库的更新操作的文件。):用来记录对数据库的更新操作的文件。 动态转储方式必须建立日志文件动态转储方式必须建立日志文件 静态转储方式最好建立日志文件静态转储方式最好建立日志文件日志文件的格式和内容日志文件的格式和内容* 以记录为单位的日志文件以记录为单位的日志文件 系统把系统把 事务开始(事务开始(BEGIN TRANSANCTION) 事务提交(事务提交(COMMIT)或)或 事务撤消(事务撤消(ROLLBACK) 对数据库的插入、删除、修改等对数据库的插入、删除、修改等 每一个操作作为

38、一条记录存放到日志文件中每一个操作作为一条记录存放到日志文件中数据库恢复最新课件数据库恢复最新课件事务标识(哪个事务)事务标识(哪个事务)操作类型(插删改)操作类型(插删改)操作对象(哪条记录)操作对象(哪条记录)更新前数据的旧值更新前数据的旧值更新后数据的新值更新后数据的新值每条日志记录的主要内容每条日志记录的主要内容对插入此项为空对插入此项为空对删除此项为空对删除此项为空* 以数据块为单位的日志文件以数据块为单位的日志文件 将事务标识及更新前后的数据块均放在日志文件中。将事务标识及更新前后的数据块均放在日志文件中。日志文件的作用日志文件的作用静态转储:数据库毁坏后,重装后援副本,根据日志文

39、静态转储:数据库毁坏后,重装后援副本,根据日志文件,重做已完成的事务,并撤消未完成的事务。件,重做已完成的事务,并撤消未完成的事务。动态转储:用后援副本和日志文件综合起来恢复数据库动态转储:用后援副本和日志文件综合起来恢复数据库数据库恢复最新课件数据库恢复最新课件日志超前写规则日志超前写规则 写数据库和写日志文件是两个不同的操作,在这两个操写数据库和写日志文件是两个不同的操作,在这两个操作之间有可能发生故障,若先写数据库数据,再写日志的作之间有可能发生故障,若先写数据库数据,再写日志的话,万一在写日志前发生故障,则这次的数据库修改未登话,万一在写日志前发生故障,则这次的数据库修改未登记,从而不

40、能恢复。若写日志后发生故障而未修改数据库,记,从而不能恢复。若写日志后发生故障而未修改数据库,则事务一定未完成,在恢复时会执行撤消处理。则事务一定未完成,在恢复时会执行撤消处理。登记日志文件登记日志文件原则:严格按并发事务执行的时间次序登记;原则:严格按并发事务执行的时间次序登记; 先写日志文件,后写数据库。先写日志文件,后写数据库。如:欲将数据库中某记录字段的值由如:欲将数据库中某记录字段的值由5改为改为8,登记日志,登记日志文件后发生故障,则字段值仍为文件后发生故障,则字段值仍为5,日志中不会登记该事,日志中不会登记该事务的务的COMMIT或或ROLLBACK记录,事务未完成,恢复记录,事

41、务未完成,恢复时对该操作做撤消处理,将字段值改为该修改操作的旧时对该操作做撤消处理,将字段值改为该修改操作的旧值值5,数据库内容不变。,数据库内容不变。数据库恢复最新课件数据库恢复最新课件4 恢复策略恢复策略利用日志文件进行恢复利用日志文件进行恢复 基本策略:基本策略: 对于尚未提交的事务,执行撤消处理(对于尚未提交的事务,执行撤消处理(UNDO) 对于已经提交的事务,执行重做处理(对于已经提交的事务,执行重做处理(REDO) 基本方法:基本方法: 扫描日志文件,确定所有已开始但尚未提交的事务扫描日志文件,确定所有已开始但尚未提交的事务 (对它们需(对它们需UNDO),再确定所有已提交的事务)

42、,再确定所有已提交的事务 (对它们需(对它们需REDO) 发生故障时,利用数据库后援副本和日志文件可以发生故障时,利用数据库后援副本和日志文件可以将数据库恢复到某个一致性状态,但不同故障的恢复策将数据库恢复到某个一致性状态,但不同故障的恢复策略和方法是不一样的。略和方法是不一样的。数据库恢复最新课件数据库恢复最新课件UNDO处理:若事务提交前出现异常,则对已执行的操作处理:若事务提交前出现异常,则对已执行的操作 进行撤消处理,使数据库恢复到该事务开始前的状态。进行撤消处理,使数据库恢复到该事务开始前的状态。 具体做法是:反向扫描日志文件,对每个需具体做法是:反向扫描日志文件,对每个需UNDO的

43、的 事务的更新操作执行反操作。即对已插入的记录执行事务的更新操作执行反操作。即对已插入的记录执行 删除,对已删除的记录重新插入,对已修改的记录用删除,对已删除的记录重新插入,对已修改的记录用 旧值代替新值。旧值代替新值。UNDO处理是维护事务的原子性所必须的处理是维护事务的原子性所必须的REDO处理:重做已提交事务的操作。处理:重做已提交事务的操作。 具体做法是:正向扫描日志文件重新执行登记的操作具体做法是:正向扫描日志文件重新执行登记的操作数据库恢复最新课件数据库恢复最新课件 有些事务虽已发出有些事务虽已发出COMMIT操作,但更新的结果操作,但更新的结果可能只是写到缓冲区而未能写入磁盘,或

44、磁盘上数据库可能只是写到缓冲区而未能写入磁盘,或磁盘上数据库被破坏,因此需要被破坏,因此需要REDO处理。处理。例如:事务例如:事务T1在学生表在学生表S上执行下面三个操作:上执行下面三个操作:INSERT INTO S VALUES (S4, D, CS, 19););DELETE FROM SWHERE S# =S1;UPDATE SSET SD=CSWHERE S# =S2;数据库恢复最新课件数据库恢复最新课件S1 A CS 20S2 B CI 21S3 C MA 19事务事务T1执行前的执行前的SS1 A CS 20S2 B CI 21S3 C MA 19S4 D CS 19INSER

45、T INTO S VALUES (S4, D, CS, 19););S2 B CS 21S3 C MA 19S4 D CS 19S2 B CI 21S3 C MA 19S4 D CS 19DELETE FROM SWHERE S#=S1;UPDATE SSET SD=CSWHERE S#=S2;写日志写日志事务事务T1开始开始 T1在在S中插入键中插入键为为S4的记录的记录S4 D CS 19 T1在在S中删除键中删除键为为S1的记录的记录S1 A CS 20 T1在在S中修改键中修改键为为S2的记录的记录S2 B CI 21S2 B CS 21数据库恢复最新课件数据库恢复最新课件S1 A C

46、S 20S2 B CI 21S3 C MA 19S1 A CS 20S2 B CI 21S3 C MA 19S4 D CS 19S2 B CS 21S3 C MA 19S4 D CS 19S2 B CI 21S3 C MA 19S4 D CS 19日志日志事务事务T1开始开始 T1在在S中插入键中插入键为为S4的记录的记录S4 D CS 19 T1在在S中删除键中删除键为为S1的记录的记录S1 A CS 20 T1在在S中修改键中修改键为为S2的记录的记录S2 B CI 21S2 B CS 21REDO处理处理正向正向扫描扫描数据库恢复最新课件数据库恢复最新课件S1 A CS 20S2 B C

47、I 21S3 C MA 19S4 D CS 19S2 B CS 21S3 C MA 19S4 D CS 19S2 B CI 21S3 C MA 19S4 D CS 19日志日志事务事务T1开始开始 T1在在S中插入键中插入键为为S4的记录的记录S4 D CS 19 T1在在S中删除键中删除键为为S1的记录的记录S1 A CS 20 T1在在S中修改键中修改键为为S2的记录的记录S2 B CI 21S2 B CS 21REDO处理处理正向正向扫描扫描此时无数据修改此时无数据修改若数据库若数据库中的状态是中的状态是:数据库恢复最新课件数据库恢复最新课件S1 A CS 20S2 B CI 21S3

48、C MA 19S1 A CS 20S2 B CI 21S3 C MA 19S4 D CS 19S2 B CS 21S3 C MA 19S4 D CS 19S2 B CI 21S3 C MA 19S4 D CS 19日志日志事务事务T1开始开始 T1在在S中插入键中插入键为为S4的记录的记录S4 D CS 19 T1在在S中删除键中删除键为为S1的记录的记录S1 A CS 20 T1在在S中修改键中修改键为为S2的记录的记录S2 B CI 21S2 B CS 21UNDO处理处理反向反向扫描扫描数据库恢复最新课件数据库恢复最新课件1、事务故障的恢复、事务故障的恢复 事务故障是指事务被非正常终止,

49、应根据日志文件对未事务故障是指事务被非正常终止,应根据日志文件对未完成事务做完成事务做UNDO处理,步骤如下:处理,步骤如下:(1)反向扫描日志文件,查找未完成事务的更新操作;)反向扫描日志文件,查找未完成事务的更新操作;(2)对该事务的更新操作执行逆操作;)对该事务的更新操作执行逆操作;(3)继续反向扫描日志文件,对遇到的更新操作做同样)继续反向扫描日志文件,对遇到的更新操作做同样 处理;处理;(4)当遇到某事务的开始标记时,停止对该事务的处理。)当遇到某事务的开始标记时,停止对该事务的处理。(5)重复上述过程,直到所有未完成事务全部)重复上述过程,直到所有未完成事务全部UNDO完完 毕。毕

50、。数据库恢复最新课件数据库恢复最新课件2、系统故障的恢复、系统故障的恢复 系统故障造成数据库不一致的原因,一是未完成事务系统故障造成数据库不一致的原因,一是未完成事务对数据库的更新已写入数据库,二是已提交事务的结果对数据库的更新已写入数据库,二是已提交事务的结果在故障发生前留在缓冲区没来得及写入数据库。恢复操在故障发生前留在缓冲区没来得及写入数据库。恢复操作是撤消未完成事务,重做已完成事务。步骤如下:作是撤消未完成事务,重做已完成事务。步骤如下: (1)正向扫描日志文件,找出在故障发生前已提交的事)正向扫描日志文件,找出在故障发生前已提交的事 务,将它们记入重做(务,将它们记入重做(REDO)

51、队列,同时找出故)队列,同时找出故 障发生前尚未完成的事务,将它们记入撤消障发生前尚未完成的事务,将它们记入撤消 (UNDO)队列。)队列。(2)反向扫描日志文件,对)反向扫描日志文件,对UNDO队列的每个事务执行队列的每个事务执行 逆操作,即做撤消处理。逆操作,即做撤消处理。(3)正向扫描日志文件,对)正向扫描日志文件,对REDO队列中的每个事务重队列中的每个事务重 新执行日志文件登记的操作。新执行日志文件登记的操作。数据库恢复最新课件数据库恢复最新课件3、介质故障的恢复、介质故障的恢复 介质故障发生后,磁盘上的数据文件和日志文件均被介质故障发生后,磁盘上的数据文件和日志文件均被破坏,恢复的

52、方法是重装数据库和日志文件,然后重做破坏,恢复的方法是重装数据库和日志文件,然后重做自转储以来已完成的事务。步骤如下:自转储以来已完成的事务。步骤如下: (1)装入最近转储的数据库后援副本,若是动态转储,)装入最近转储的数据库后援副本,若是动态转储, 则还应装入转储期间的日志文件,将数据库恢复则还应装入转储期间的日志文件,将数据库恢复 到一致性状态。到一致性状态。(2)装入转储结束后的日志副本,重做已完成的事务。)装入转储结束后的日志副本,重做已完成的事务。 系统故障与事务故障的恢复由系统自动完成,对用户系统故障与事务故障的恢复由系统自动完成,对用户透明,介质故障的恢复,需要透明,介质故障的恢

53、复,需要DBA重装数据库和日志文重装数据库和日志文件副本,然后执行相应的恢复命令。不论那种恢复,一件副本,然后执行相应的恢复命令。不论那种恢复,一般都要扫描整个日志文件。般都要扫描整个日志文件。数据库恢复最新课件数据库恢复最新课件恢复方式总结恢复方式总结: 当数据库被破坏时当数据库被破坏时, 要重装后备副本要重装后备副本, 然后利用日志然后利用日志 文件执行事务恢复,重建数据库文件执行事务恢复,重建数据库 转储转储(静态静态)运行事务运行事务发生故障发生故障登记日志文件登记日志文件重装后备副本重装后备副本重新运行事务重新运行事务利用日志恢复利用日志恢复登记日志文件登记日志文件 数据库本身未被破

54、坏,但有些内容可能不正确,则可数据库本身未被破坏,但有些内容可能不正确,则可 只利用日志文件恢复,使数据库回到某一正确状态只利用日志文件恢复,使数据库回到某一正确状态数据库恢复最新课件数据库恢复最新课件5 具有检查点的恢复技术具有检查点的恢复技术 利用日志文件恢复数据库,一般要扫描整个日志文利用日志文件恢复数据库,一般要扫描整个日志文件,日志是个流水帐,往往很长,这样做具有两个问题:件,日志是个流水帐,往往很长,这样做具有两个问题:* 搜索整个日志文件将耗费大量的时间;搜索整个日志文件将耗费大量的时间;* 许多已提交事务的更新结果实际上已写入数据库中,许多已提交事务的更新结果实际上已写入数据库

55、中,重新做这些事务只会浪费大量的时间。重新做这些事务只会浪费大量的时间。 因此,确定哪些事务需因此,确定哪些事务需REDO,哪些不需,哪些不需REDO,就,就很有意义。解决的方法是:很有意义。解决的方法是:在日志文件中设置检查点记录在日志文件中设置检查点记录 DBMS周期性地在日志中记录一个检查点:将当前周期性地在日志中记录一个检查点:将当前正在执行(尚未提交)的所有事务记录于一个记录中正在执行(尚未提交)的所有事务记录于一个记录中检查点记录。具体工作为:检查点记录。具体工作为:数据库恢复最新课件数据库恢复最新课件 将内存中所有日志记录写入磁盘;将内存中所有日志记录写入磁盘; 在磁盘日志文件中

56、写入一个检查点记录;在磁盘日志文件中写入一个检查点记录; 将内存中所有数据库记录写入磁盘数据库中;将内存中所有数据库记录写入磁盘数据库中; 把检查点记录在日志文件中的地址写入一个重新把检查点记录在日志文件中的地址写入一个重新开始文件中。开始文件中。 在检查点之前已提交的事务对数据库的修改在检在检查点之前已提交的事务对数据库的修改在检查点之前或检查点建立时已记入磁盘,只要数据库未查点之前或检查点建立时已记入磁盘,只要数据库未被破坏,不需要对这些事务执行重做(被破坏,不需要对这些事务执行重做(REDO)。)。检查点记录的内容包括:检查点记录的内容包括: 建立检查点时所有正在执行的事务清单;建立检查

57、点时所有正在执行的事务清单; 这些事务中最近的一个日志记录地址。这些事务中最近的一个日志记录地址。参见参见P257图图7.3。数据库恢复最新课件数据库恢复最新课件具有检查点的恢复算法具有检查点的恢复算法 根据重新开始文件中最后一个检查点记录的地址,根据重新开始文件中最后一个检查点记录的地址,在日志文件中找到最近的一个检查点记录;在日志文件中找到最近的一个检查点记录; 设置两个队列,将检查点中的所有事务放入设置两个队列,将检查点中的所有事务放入UNDO-LIST,并令,并令REDO-LIST暂为空集;暂为空集; UNDO-LIST:需要:需要UNDO操作的事务集合;操作的事务集合; REDO-L

58、IST:需要:需要REDO操作的事务集合;操作的事务集合; 从该检查点开始扫描日志文件到文件结束为止:从该检查点开始扫描日志文件到文件结束为止: 凡遇有凡遇有begin_transaction的事务放入的事务放入UNDO-LIST; 凡遇有凡遇有commit的事务的事务, 将它从将它从UNDO-LIST移入移入REDO-LIST; 对对UNDO-LIST中的事务执行中的事务执行UNDO操作操作 对对REDO-LIST中的事务执行中的事务执行REDO操作操作数据库恢复最新课件数据库恢复最新课件日志日志T1开开始始T2提提交交T4开开始始T2开开始始T5开开始始T3开开始始T6开开始始T7开开始始

59、T8开开始始T1提提交交T4提提交交T5提提交交T8提提交交T6提提交交T1T3T5T3T6检查点记录内容检查点记录内容最近一个检查点最近一个检查点UNDO-LIST:REDO-LIST:T3,T6 T3,T6,T7 T3,T7 T6 T3,T7,T8 T6 T3,T7T6,T8执行执行UNDO执行执行REDO数据库恢复最新课件数据库恢复最新课件6 数据库镜像数据库镜像 前面已介绍,当数据库系统发生故障时,可利用日前面已介绍,当数据库系统发生故障时,可利用日志文件进行数据库恢复,但前提是日志文件必须完好。志文件进行数据库恢复,但前提是日志文件必须完好。然而当发生介质故障时,往往不仅数据库被摧毁

60、,日志然而当发生介质故障时,往往不仅数据库被摧毁,日志文件也难逃恶运,此时恢复操作就无法实施。这在银行文件也难逃恶运,此时恢复操作就无法实施。这在银行数据库等系统中是绝对不允许的。数据库等系统中是绝对不允许的。解决办法:解决办法: 1、数据库镜象:将整个数据库或其中的关键数据同时、数据库镜象:将整个数据库或其中的关键数据同时存放在两个分离的物理磁盘上。每当主数据库更新时,存放在两个分离的物理磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制到另一个磁盘上,从而自自动把更新后的数据复制到另一个磁盘上,从而自动保证主数据库与镜像数据库的一致性。动保证主数据库与镜像数据库的一致性。 但镜象的

61、内容可选,如只是事务日志,或服务器上但镜象的内容可选,如只是事务日志,或服务器上所有内容,等等。所有内容,等等。数据库恢复最新课件数据库恢复最新课件数据库镜像的优缺点:数据库镜像的优缺点:优点:可提高数据库的可用性。优点:可提高数据库的可用性。* 在介质故障时,不需关闭系统和重装后援副本,在介质故障时,不需关闭系统和重装后援副本,保证保证“不间断不间断”地恢复;地恢复;* 便于并发操作,当主数据库的某个对象被加排它便于并发操作,当主数据库的某个对象被加排它锁时,其它应用可以读镜像数据库。锁时,其它应用可以读镜像数据库。缺点:缺点:* 由于频繁地复制数据,会降低系统的运行效率;由于频繁地复制数据

62、,会降低系统的运行效率;* 使用更多的磁盘设备。使用更多的磁盘设备。2、磁盘双工:用两个不同控制器控制的磁盘存放同一内、磁盘双工:用两个不同控制器控制的磁盘存放同一内 容,对数据库的每个写操作,两个控制器同时实现。容,对数据库的每个写操作,两个控制器同时实现。3、双机热备份:用两台机器存放同一内容。、双机热备份:用两台机器存放同一内容。数据库恢复最新课件数据库恢复最新课件小结(续)常用恢复技术常用恢复技术事务故障的恢复事务故障的恢复UNDOUNDO系统故障的恢复系统故障的恢复UNDO + REDOUNDO + REDO介质故障的恢复介质故障的恢复重装备份并恢复到一致性状态重装备份并恢复到一致性状态 + REDO+ REDO数据库恢复最新课件数据库恢复最新课件小结(续) 提高恢复效率的技术提高恢复效率的技术检查点技术检查点技术可以提高系统故障的恢复效率可以提高系统故障的恢复效率可以在一定程度上提高利用动态转储备份进可以在一定程度上提高利用动态转储备份进行介质故障恢复的效率行介质故障恢复的效率镜像技术镜像技术镜像镜像技术可以改善介质故障的恢复效率技术可以改善介质故障的恢复效率数据库恢复最新课件数据库恢复最新课件 下课了。休息一会儿。休息一会儿。数据库恢复最新课件数据库恢复最新课件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号