类型 | 说明 | 恢复步骤 |
| 事务内部故障 | 有的故障是可以通过事务程序本身发现。例如,银行转账事务,将账户A的金额转X元到账户B,此时应该将账户A的余额减X元,将账户B的余额加X元。如果帐户A的余额不足,那么这两个事务都不能被操作;反之则进行相应的操作。但有些是非预期的(例如运算溢出、并发事务发生死锁等),则不能由事务程序处理的 | ①反向扫描日志文件,查找该事务的更新操作;②对该事务的更新操作进行逆操作,即将日志记录更新前的值写入数据库;③继续反向扫描日志文件,查找该事务的其他更新操作,并作同样的处理:④如此处理直到读到此事务的开始标记 |
| 系统故障 | 也称为软故障,是指造成系统停止运行的任何事件(例如CP[J故障、操作系统故障、突然停电等),使得系统要重新启动 | ①正向扫描目志文件,找出故障发生前己提交的事务,并将其标识记入重做redo队列;②同时找出故障发生时尚未完成的事务,将其事务标识记入撤销undo队列;③反向扫描日志文件,对每个undo事务的更新操作执行逆操作:④正向扫描日志文件,对每个redo事务重新执 行日志文件登记的操作 |
| 介质故障 | 也称为硬故障。例如磁盘损坏、磁头碰撞、瞬时强磁干扰。此类故障发生概率小,但破坏性最大 | ①装入最新的数据库后备副本,使数据库恢复到虽近一次存储时的一致性状态;②装入相应的日志文件副本,重做已完成的事务 |
计算机 病毒 | 是一种人为的故障和破坏,是一些恶作剧研制的一种计算机程序,可以被繁殖和传播,并造成对计算机系统(包括数据库)的危害 | ①查杀计算机病毒:②使用恢复技术对数据库加以恢复 |