目录
数据库系统中可能发生各种各样的故障,主要有以下四类
- 事务故障
- 系统故障
- 介质故障
- 计算机病毒
一:事务故障
(1)事务故障概念
事务故障:某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了
(2)事务故障原因
事务故障出现的常见原因有
- 业务规则要求被终止
- 输入数据有误
- 运算溢出
- 违反了某些完整性限制
- 某些应用程序出现错误
- 并行事务因发生死锁而被系统选中结束运行
(3)事务故障恢复
事务故障意味着事务没有达到预期的终点(COMMIT或者显式的ROLLBACK),因此,数据库可能处于不正确状态。恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务好像根本没有启动一样。这类恢复操作称为事务撤销(UNDO)
二:系统故障
(1)系统故障概念
系统故障:是指造成系统停止运转的任何事件,使得系统需要重新启动,例如:
- 硬件错误(CPU故障)
- 操作系统故障
- DBMS代码错误
- 系统断电
(2)系统故障的破坏性
发生系统故障将导致:
- 整个系统的正常运行突然被破坏
- 所有正在运行的事务都会非正常终止
- 内存中数据库缓冲区的信息全部丢失
- 外部存储设备上的数据未受影响
(3)系统故障恢复
- 对于尚未完成的事务:系统重新启动后,恢复程序要执行撤销(UNDO)所有未完成事务
- 对于已经完成的事务:系统重新启动后,恢复程序要执行重做(REDO)所有已提交事务
三:介质故障
(1)介质故障概念
硬件故障会使存储在外存中的数据部分丢失或全部丢失。介质故障发生的可能性要小于前两种故障,但是其破坏性却很大
(2)介质故障恢复
- 更换或自动切换磁介质
- 装入数据库发生介质故障前某个时刻的数据副本
- 重做(REDO)自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库
四:计算机病毒
计算机病毒本身不属于一种故障,但是它数据库的破坏会表现为前面的故障
- 事务故障(软故障,仅事务崩溃)
- 系统故障(软故障,系统崩溃,需要重启)
- 介质故障(硬故障,数据库文件被删除)
总之,出现故障后,就要对数据库进行恢复,恢复时需要利用到冗余数据,或者说就是备份数据。冗余的数据包括
- 备份
- 日志
- 镜像