第十章 数据库恢复技术——故障的种类

Posted 凯哥的故事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十章 数据库恢复技术——故障的种类相关的知识,希望对你有一定的参考价值。



故障的种类



数据库系统中可能发生各种各样的故障,大致可以分以下几类。

①事务内部的故障

事务内部的故障有的是可以通过事务程序本身发现的(见下面转账事务的例子),有的是非预期的,不能由事务程序处理。

例如,银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。

左右滑动或点击查看全图

这个例子所包括的两个更新操作要么全部完成,要么全部不做,否则就会使数据库处于不一致状态,例如可能出现只把账户甲的余额减少而没有把账户乙的余额增加的情况。

在这段程序中若产生账户甲余额不足的情况,应用程序可以发现并让事务滚回,撤销已作的修改,恢复数据库到正确状态。

事务内部更多的故障是非预期的,是不能由应用程序处理的。如运算溢出、并发事务发生死锁而被选中撤销该事务、违反了某些完整性限制而被终止等。本书后续内容中,事务故障仅指这类非预期的故障。

事务故障意味着事务没有达到预期的终点(COMMIT或者显式的ROLLBACK),因此,数据库可能处于不正确状态。恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务好像根本没有启动一样。这类恢复操作称为事务撤销(UNDO)。

②系统故障

系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、系统断电等。这类故障影响正在运行的所有事务,但不破坏数据库。此时主存内容,尤其是数据库缓冲区(在内存)中的内容都被丢失,所有运行事务都非正常终止。发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,从而造成数据库可能处于不正确的状态。为保证数据一致性,需要清除这些事务对数据库的所有修改。

恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤销所有未完成事务。

另一方面,发生系统故障时,有些已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。所以系统重新启动后,恢复子系统除需要撤销所有未完成的事务外,还需要重做(REDO)所有已提交的事务,以将数据库真正恢复到一致状态。

③介质故障

系统故障常称为软故障(soft crash),介质故障称为硬故障(hard crash)。硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。

④计算机病毒

计算机病毒是一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。这种程序与其他程序不同,它像微生物学所称的病毒一样可以繁殖和传播,并造成对计算机系统包括数据库的危害。

计算机病毒的种类很多,不同病毒有不同的特征。小的病毒只有20条指令,不到50B。大的病毒像一个操作系统,由上万条指令组成。

有的计算机病毒传播很快,一旦侵入系统就马上摧毁系统;有的病毒有较长的潜伏期,计算机在感染后数天或数月才开始发病;有的病毒感染系统所有的程序和数据;有的只对某些特定的程序和数据感兴趣。多数病毒一开始并不摧毁整个计算机系统,它们可能只在数据库或其他数据文件中将小数点向左或向右移一两位,增加或删除一两个“0”,从而导致系统运行不正常。

计算机病毒已成为计算机系统的主要威胁,自然也是数据库系统的主要威胁。为此计算机的安全工作者已研制了许多预防病毒的“疫苗”,检查、诊断、消灭计算机病毒的软件也在不断发展。但是,至今还没有一种可以使计算机“终生”免疫的“疫苗”。因此数据库一旦被破坏仍要用恢复技术把数据库加以恢复。

总结各类故障对数据库的影响有两种可能性,一是数据库本身被破坏,二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。

恢复的基本原理十分简单。可以用一个词来概括:冗余。这就是说,数据库中任何一部分被破坏或不正确的数据可以根据存储在系统别处的冗余数据来重建。尽管恢复的基本原理很简单,但实现技术的细节却相当复杂,下面略去一些细节,介绍数据库恢复的实现技术。


第十章 数据库恢复技术(2)——故障的种类

以上是关于第十章 数据库恢复技术——故障的种类的主要内容,如果未能解决你的问题,请参考以下文章

数据库第10章作业——数据库恢复技术

数据库第10章作业——数据库恢复技术

数据库恢复技术-第三节:故障种类

数据库 chapter 10 数据库恢复技术

作业——数据库恢复技术

作业——数据库恢复技术