第七章数据库恢复技术 7.3故障的种类 ·例:银行转帐事务,这个事务把一笔金额从一个帐 户甲转给另一个帐户乙 BEGIN 7RANSACT10N 读帐户甲的余额B4Me; B4AM= BALANCEAMDI7;(M0mT为转帐金额) ∥(B1i(0)∥ 打印′金额不足,不能转帐′ kB;:(撤消刚才的修改,恢复事务) 读帐户乙的余额B4%E7 BALANCET BALANCEi+AMDlNT: 写回BmMF; C0MMIT:/
• 例1:银行转帐事务,这个事务把一笔金额从一个帐 户甲转给另一个帐户乙。 BEGIN TRANSACTION 读帐户甲的余额BALANCE; BALANCE = BALANCE-AMOUNT;(AMOUNT 为转帐金额) IF(BALANCE〈0 ) THEN { 打印′金额不足,不能转帐′ ; ROLLBACK;(撤消刚才的修改,恢复事务)} ELSE { 读帐户乙的余额BALANCE1; BALANCE1 = BALANCE1+AMOUNT; 写回BALANCE1; COMMIT;} 第七章 数据库恢复技术 7.3 故障的种类
第七章数据库恢复技术 7.3故障的种类 事务内部更多的故障是非预期的,是不能由应 用程序处理的。如运算溢出、并发事务发生死 锁而被选中撤消该事务、违反了某些完整性限 制等。以后,事务故障仅指这类韭预期的故障
第七章 数据库恢复技术 7.3 故障的种类 • 事务内部更多的故障是非预期的,是不能由应 用程序处理的。如运算溢出、并发事务发生死 锁而被选中撤消该事务、违反了某些完整性限 制等。以后,事务故障仅指这类非预期的故障
第七章数据库恢复技术 7.3故障的种类 事务故障意味着事务没有达到预期的终点 ( COMMr或者显式的 ROLLBACK),因此, 数据库可能处于不正确状态。 恢复程序要在不影响其它事务运行的情况下, 强行回滚( ROLLBACK)该事务,即撤消该 事务已经作出的任何对数据库的修改,使得该 事务好象根本没有启动一样。 ·这类恢复操作称为事务撤消(UNDO)
第七章 数据库恢复技术 7.3 故障的种类 •事务故障意味着事务没有达到预期的终点 (COMMIT或者显式的ROLLBACK),因此, 数据库可能处于不正确状态。 •恢复程序要在不影响其它事务运行的情况下, 强行回滚(ROLLBACK)该事务,即撤消该 事务已经作出的任何对数据库的修改,使得该 事务好象根本没有启动一样。 •这类恢复操作称为事务撤消(UNDO)
第七章数据库恢复技术 7.3故障的种类 、系统故障 系统故障是指造成系统停止运转的任何事件,使得系 统要重新启动。系统故障常称为软故障(o%) ·这类故障影响正在运行的所有事务,但不破坏数据库 这时主存内容,尤其是数据库缓冲区(在内存)中的 内容都被丢失,所有运行事务都非正常终止
第七章 数据库恢复技术 7.3 故障的种类 二、系统故障 • 系统故障是指造成系统停止运转的任何事件,使得系 统要重新启动。系统故障常称为软故障(Soft Crash) • 这类故障影响正在运行的所有事务,但不破坏数据库。 这时主存内容,尤其是数据库缓冲区(在内存)中的 内容都被丢失,所有运行事务都非正常终止
第七章数据库恢复技术 7.3故障的种类 二、系统故障 发生系统故障时 ()一些尚未完成的事务的结果可能已送入物理数据 库 (B)有些已完成的事务可能有一部分甚至全部留在缓 冲区,尚未写回到磁盘上的物理数据库中 ·为保证数据一致性,恢复子系统必须在系统重新启动 时让所有非正常终止的事务回滚, (升)强行撤消(Mm)所有未完成事务 (B)重做(Rh)所有已提交的事务
第七章 数据库恢复技术 7.3 故障的种类 二、系统故障 • 发生系统故障时 (A)一些尚未完成的事务的结果可能已送入物理数据 库 (B)有些已完成的事务可能有一部分甚至全部留在缓 冲区,尚未写回到磁盘上的物理数据库中。 • 为保证数据一致性,恢复子系统必须在系统重新启动 时让所有非正常终止的事务回滚, (A)强行撤消(Undo)所有未完成事务 (B)重做(Redo)所有已提交的事务