故障的种类
事务故障
逻辑故障,例如:除以0;
余额不允许为负。系统崩溃故障
停电、硬件故障,蓝屏死机故障。磁盘故障
分为数据库磁盘故障和日志磁盘故障。灾难故障
例如:地震,火灾等不可抗因素。
故障的恢复方法
1、事务故障的恢复:撤消事务(UNDO)
具体方法:
(1). 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
(2). 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值” 写入数据库。
插入操作, “更新前的值”为空,则相当于做删除操作
删除操作,“更新后的值”为空,则相当于做插入操作
若是修改操作,则相当于用修改前值代替修改后值
(3). 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
(4). 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。
2、系统崩溃故障的恢复:撤消事务(UNDO)+重做事务(REDO)
发生系统故障时,事务未提交
恢复策略:强行撤消(UNDO)所有未完成事务
发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上。
恢复策略:重做(REDO)所有已提交的事务
具体方法:
重启数据库管理系统;从日志磁盘读取日志文件;反向扫描日志,也就是从日志文件的结束位置开始后向扫描。当发现一个事务在日志记录中没有 记录时,执行undo( Ti) 操作,使用旧值恢复数据项: 然后从日志文件的开始位置顺向扫描。对日志记录中含有的事务,执行redo( Ti) 操作,使用新值恢复数据项;
3、磁盘(介质)故障的恢复
数据库磁盘故障,把dump的备份数据库文件拷贝到新的数据库磁盘上;从日志文件的末尾逆向扫描直至记录,再顺向扫描日志记录,对有日志记录的事务做redo(Ti)操作。
日志磁盘故障:不再接收事务请求,让当前的所有活动事务执行完毕;输出数据库缓冲区中的缓冲数据到数据库磁盘中(即checkpoint);执行Dump操作,把磁盘中的数据库文件拷贝到另一个磁盘上;更换日志磁盘。
4、灾难故障的恢复:远程备份