数据库的信息资源和逻辑程序复杂多样,根据其特征,可将故障形式分为三种:事务故障(Transaction Failure)、系统故障(System Failure)、介质故障(Media Failure)。不同故障的处理方式不同,恢复形式也各异。
(一)事务故障及其恢复
事务故障是指事务在执行操作期间由于程序异常导致的意外故障,使得逻辑程序不能按时完成任务,被迫停止运作。引起这一状况的原因有信息输入出错、运算逻辑故障、未遵循运行准则和多个程序事务并行导致的死锁现象。
数据库发生事务故障时,被强制结束操作的事务可能已经更改了部分数据信息。为避免事务中断而影响数据库的正常运行,应该充分利用日志文件中的信息,强制回滚(ROLLBACK)该项事务,使数据库恢复到更改前的状态。为此,要检查日志文件中由这些事务所引起变化的记录,取消这些没有完成的事务所做的一切改变。这类复操作称为事务撤消(UNDO),具体做法如下:
1.由后向前检索数据库中的日志文件,核查该项事务的更新行为。
2.用逆向思维处理事务的更新行为,也就是将日志中所记录的更新前的信息录入系统中。如果日志中是执行插入任务,通过逆向思维就是执行删除任务,因为此时更新前的信息为空。如果日志中是执行删除操作,就相当于执行插入任务;如果日志中是继续进行更改操作,就相当于用更改前的信息替换更改后的信息。
3.继续由后向前检索数据库的日志文件,核查系统中的其他更新行为,实行同样的解决方案。
4.一直进行此项操作,直到找到该项事务的开始执行任务的节点,实行故障恢复手段。事务故障的恢复是由数据库独立实现的,不需要其他因素的参与。因此,一个事务是一个工作单位,也是一个恢复单位。事务越短,越便于对它进行撒消操作。如果一个应用程序运行时间较长,应该把该应用程序分成多个事务,用明确的COMMIT语句结束各个事务。
(二)系统故障及其恢复
系统故障是指数据库在正常运行过程中,因为某种干扰导致数据库被迫停滞,所有正在执行任务的逻辑程序以异常的形式停止运行,需要重新开启数据库系统,继续进行相关工作。导致数据库出现故障的因素可能有物理配置的错误、操作体系或DBMS模型逻辑错误、电路故障等问题。此时,内存中数据库缓冲区的全部内容丢失,存储在外部存储设备上的数据库并未破坏,但内容不可靠了。
系统故障所导致的数据库信息一致性异常的因素有两方面。一种情况是部分为执行完任务的事务操作流程已经录入到系统中,使得在重新开启系统时,需要清除未完成的操作,删除事务对系统信息做出的更改。这些未完成事务在日志文件中只有BEGIN TRANSACTION标记,而无 COMMIT标记。另一种情况是有些已提交的事务对数据库的更新结果还保留在缓冲区中,数据信息尚未录入到物理配置中去,也会导致数据库系统的异常。所以,要将已经完成任务的事务录入到系统中。这种恢复行为被称为事务的重做(REDO)。这种已提交事务在日志文件中既有BEGIN TRANSACTION标记,也有COMMIT标记。
因此,系统故障的恢复要完成两方面的工作,既要撤消故障发生时未完成的事务,还需要重做已完成的事务。其具体做法如下:
1.由前向后检索日志文件信息,寻找在故障发生前已经完成相关操作的事务,将其录入到数据库中,进行重新排列,并进行细致的排查,找出发生故障时并未操作完的事务,将其录入到系统日志中。
2.取消对撤销队列中事务的决策。取消决策的途径是由后向前检索数据库信息,针对每个取消决策的事务执行反向操作,也就是将系统中出现故障前的信息录入到日志中。
3.重新排布系统中的数据信息。执行重新排布操作的途径是由前向后检索日志信息,将重新排布的事务录入到系统中,也就是将更改后的信息统计到系统中。
(三)介质故障及其恢复
介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据部分丢失或全部丢失。这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的整理数据和日志文件可能被破坏。解决此问题需要装入发生介质故障前最新的后备数据副本,然后利用日志文件重做该副本所运行的所有事务,具体方法如下:
1. 整合更新后的信息资源副本,将系统恢复到可以进行正常运作的状态。(www.xing528.com)
2.结合数据库系统中已经完成操作的事务,录入更新后的文件信息。录入途径是由前向后检索日志信息,找到发生故障后提交的数据,将其录入到系统中,进行重新排布。结合队列的各项事务的特征,设计全新的处理方案——由前向后检索日志信息,重新录入记载各项事务活动,也就是将更新后的信息录入到系统中。
通过以上对三类故障的分析,可以看出故障发生后对数据库的影响有以下两种可能性。
1.数据库没有被破坏,但数据可能处于不一致状态。
这是由事务故障和系统故障引起的。这种情况在恢复时,不需要重新装入数据副本,可直接根据日志文件撤消故障发生时未完成的事务,并重做已完成的事务,使数据库恢复到正确的状态。这类故障的恢复是系统在重新启动时自动完成的,不需要用户干预。
2.数据库本身被破坏。
这是由介质故障引起的。这种情况在恢复时,需要把最近一次转储的数据装入,然后借助于日志文件,再在此基础上对数据库进行更新,从而重建了数据库。这类故障的恢复不能自动完成,需要DBA的介入,方法是通过DBA重新排布系统中的数据文本和日志信息,再执行恢复数据库的指令,由DBMS模型来指导恢复工作的进行。
数据库恢复的基本原理就是利用数据的冗余,实现的方法比较明确,但真正实现起来相当复杂,执行恢复任务需要的逻辑程序较为复杂,占据数据库系统较大的空间。所以,系统所采用的模式是否切实可行,影响着数据库系统的稳定性,也影响着数据库的运行效率,是评定系统功能好坏的关键因素。
【注释】
[1]用户标识:即互联网上用户登录时用于识别用户身份的名字。通常是用户电子邮件地址的第一部分或在互联网上用户使用的绰号,也就是用户的入网帐号。
[2]数据加密技术:所谓数据加密(Data Encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数、解密钥匙(Decryption key)还原成明文。加密技术是网络安全技术的基石。
[3]接口:泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
[4]并发控制:在计算机科学,特别是程序设计、操作系统、多重处理和数据库等领域,并发控制是确保及时纠正由并发操作导致的错误的一种机制。并发控制的基本单位是事务。
[5]事务:在计算机术语中,事务是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
[6]事务故障:由于程序执行错误而引起事务非预期的、异常终止的故障。
[7]系统故障:指系统在运行过程中,由于某种原因造成系统停止运行,以致事务在执行过程中以非正常的方式终止,致使内存中的信息丢失,而存储在外存上的数据未受影响。
[8]介质故障:又称硬故障,是由于硬件的可靠性较差而出现的存储介质发生物理损坏,造成数据库的数据全部或部分丢失。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。