文档介绍:第11章数据库恢复技术 引言 数据库恢复概述 故障的类型 11. 4 恢复的实现技术 恢复的策略 采用检查点的恢复技术 引言?事务是 DBMS 中的基本执行单位; ?在任何情况下, DBMS 都应保证事务的 ACID 性质。?不但在系统正常运行时应保证事务的 ACID 性质;而且在系统发生故障时,也应保证事务的 ACID 性质。?不但在单个应用运行时应保证事务的 ACID 性质;而且在多个应用并行运行时,也应保证事务的 ACID 性质。?保证事务在故障发生时满足 ACID 性质的措施称为恢复技术。?保证多个事务在并行执行时满足 ACID 性质的措施称为并发控制技术。?恢复和并发控制是保证事务正确运行的两项基本技术, 它们被合称为事务管理。 数据库恢复概述?尽管数据库系统中采取了各种保护措施来防止数据库的安全性和完整性被破坏,保证并发事务的正确执行。?但是计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏仍是不可避免的。?这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失。?因此数据库管理系统(恢复子系统)必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复。 故障的类型 ?事务内部的故障有的是可以通过事务程序本身发现的(见下面转帐事务的例子),有的是非预期的,不能由事务程序处理的。?例如:银行转帐事务,这个事务把一笔金额从一个帐户甲转给另一个帐户乙。 BEGIN TRANSACTION 读帐户甲的余额 BALANCE ; BALANCE = BALANCE-AMOUNT ;( AMOUNT 为转帐金额) IF( BALANCE 〈0 ) THEN { 打印′金额不足,不能转帐′; ROLLBACK ;( 撤消刚才的修改,恢复事务) } ELSE{ 读帐户乙的余额 BALANCE1 ; BALANCE1 = BALANCE1+AMOUNT ; 写回 BALANCE1 ; COMMIT ;} 故障的类型?上面这个例子所包括的两个更新操作要么全部完成要么全部不做。否则就会使数据库处于不一致状态,例如只把帐户甲的余额减少了而没有把帐户乙的余额增加。?在这段程序中若产生帐户甲余额不足的情况,应用程序可以发现并让事务滚回,撤消已作的修改,恢复数据库到正确状态。?事务内部更多的故障是非预期的,是不能由应用程序处理的。如运算溢出、并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。以后,事务故障仅指这类非预期的故障。?事务故障意味着事务没有达到预期的终点( COMMIT 或者显式的 ROLLBACK ), 因此,数据库可能处于不正确状态。?恢复程序要在不影响其它事务运行的情况下,强行回滚( ROLLBACK )该事务,即撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本没有启动一样。这类恢复操作称为事务撤消( UNDO )。 故障的类型 ?系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误( CPU 故障)、操作系统故障、 DBMS 代码错误、突然停电等等。?这类故障影响正在运行的所有事务,但不破坏数据库。这时主存内容,尤其是数据库缓冲区(在内存)中的内容都被丢失,所有运行事务都非正常终止。?发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,有些已完成的事务可能有一部分甚至全部留在缓冲区, 尚未写回到磁盘上的物理数据库中,从而造成数据库可能处于不正确的状态。?为保证数据一致性,恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤消( UNDO) 所有未完成事务。重做( Redo) 所有已提交的事务,以将数据库真正恢复到一致状态。 故障的类型 ?系统故障常称为软故障( Soft Crash ), 介质故障称为硬故障( Hard Crash )。?硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。?这类故障比前两类故障发生的可能性小得多,但破坏性最大。 故障的类型 ?计算机病毒是具有破坏性、可以自我复制的计算机程序。计算机病毒已成为计算机系统的主要威胁,自然也是数据库系统的主要威胁。因此数据库一旦被破坏仍要用恢复技术把数据库加以恢复。?总结各类故障,对数据库的影响有两种可能性。一是数据库本身被破坏。二是数据库没有破坏,但数据可能不正确,这是