论文部分内容阅读
随着档案信息化步伐的加快,档案信息数据库逐步建立和完善,但是,目前,档案数据库面临着许多不安全因素,包括不可抗因素(地震、火灾等)和人为因素(计算机网络犯罪、病毒、软件错误、系统崩溃、硬件过时等)。有的档案馆由于备份措施做得好,出现问题时可顺利恢复数据库的内容,而有些却在问题面前无计可施,眼看着多年来辛苦著录的档案数据瞬间丢失,造成人力、物力资源的极大浪费。如何快速地恢复数据库,保证档案信息系统的正常运转,成为急需研究解决的课题之一。
恢复是指当磁盘损坏或者数据库崩溃时,通过转储或卸载的备份重新安装数据库的过程。
1 数据库的恢复大致有如下方法:
1.1 周期性地(如3天一次)对整个数据库进行转储,把它复制到备份介质中,作为后备副本,以备恢复之用。转储通常可分为静态转储和动态转储。静态转储是指转储期间不允许对数据库进行任何存取、修改活动。而动态转储是指在转储期间允许对数据库进行存取或修改。
1.2 对数据库的每次修改,都记下修改前后的值,写入“运行日志”数集中。它与后备副本结合,可有效地恢复数据库。
日志文件是用来记录对数据库每一次更新活动的文件。在动态转储方式中必须建立日志文件,后备副本和日志文件综合起来才能有效地恢复数据库。在静态转储方式中,也可以建立日志文件。当数据库毁坏后,可重新装入后备副本,把数据库恢复到转储结束时刻的正确状态。然后,利用日志文件,把已完成的事务进行重新处理,对故障发生时尚未完成的事务进行撤销处理。这样,不必重新运行那些已完成的事务程序,就可把数据库恢复到故障前某一时刻的正确状态。
2 用日志文件恢复事务
下面,介绍一下如何登记日志文件以及发生故障后,如何利用日志文件恢复事务。
2.1 登记日志文件(logging)。事务运行过程中,系统把事务开始、事务结束(包括COMMIT和ROLLBACK)以及对数据库的插入、删除、修改等每一个操作作为一个登记记录(LOG记录)存放到日志文件中。每个记录包括的主要内容有:执行操作的事务标识、操作类型,更新前数据的旧值(对插入操作而言,此项为空值),更新后的新值(对删除操作,次项为空值)。
登记的次序严格按并行事务执行的时间次序。同时,遵循“先写日志文件”的规则。我们知道,写一个修改到数据库和写一个表示这个修改的“log”记录到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个操作只完成了一个。因此,为了安全,应该先写日志文件,即首先把“log”记录写到日志文件上,然后,再写数据库的修改。这就是 “先写日志文件”的原则。
事务恢复。利用日志文件恢复事务的过程分两步:第一步,从头开始扫描日志文件,找出哪些事务故障发生时已经结束,哪些事务尚未结束。第二步,对尚未结束的事务进行撤销处理,对已经结束的事务进行重做。进行撤销处理的方法是:反向扫描日志文件,对每个重做事务的更新操作执行反操作。即对已经插入的新记录执行删除操作,对已删除的记录重新插入,对修改的数据恢复旧值(即用旧值代替新值)。
进行重做处理的方法是:正向扫描日志文件,重新执行登记操作。
对于非常结束的事务应该进行撤销处理,以消除可能对数据库造成的不一致性。对于正常结束的事务进行重做处理也是需要的,这是因为,事务已经发出COMMIT操作请求,但更新操作有可能只写到了数据库缓冲区(在内存),还没来得及物理地写到数据库(外存)便发生了系统故障。数据库缓冲区的内容被破坏,这种情况,仍可能造成数据库的不一致性。由于日志文件上更新活动已完整地登记下来,因此,可能重做这些操作而不必重新运行事务程序。
3 利用转储和日志文件可以有效地恢复数据库
当数据库本身被破坏时(如硬盘故障和病毒破坏)可重装转储的后备副本,然后,运行日志文件执行事务恢复,这样,就可以重建数据库。
当数据库本身没有被破坏,但内容已经不可靠时(如发生事务故障和系统故障),可利用日志文件恢复事务,从而使数据库回到某一正确状态。这时,不必重装后备副本。
恢复是指当磁盘损坏或者数据库崩溃时,通过转储或卸载的备份重新安装数据库的过程。
1 数据库的恢复大致有如下方法:
1.1 周期性地(如3天一次)对整个数据库进行转储,把它复制到备份介质中,作为后备副本,以备恢复之用。转储通常可分为静态转储和动态转储。静态转储是指转储期间不允许对数据库进行任何存取、修改活动。而动态转储是指在转储期间允许对数据库进行存取或修改。
1.2 对数据库的每次修改,都记下修改前后的值,写入“运行日志”数集中。它与后备副本结合,可有效地恢复数据库。
日志文件是用来记录对数据库每一次更新活动的文件。在动态转储方式中必须建立日志文件,后备副本和日志文件综合起来才能有效地恢复数据库。在静态转储方式中,也可以建立日志文件。当数据库毁坏后,可重新装入后备副本,把数据库恢复到转储结束时刻的正确状态。然后,利用日志文件,把已完成的事务进行重新处理,对故障发生时尚未完成的事务进行撤销处理。这样,不必重新运行那些已完成的事务程序,就可把数据库恢复到故障前某一时刻的正确状态。
2 用日志文件恢复事务
下面,介绍一下如何登记日志文件以及发生故障后,如何利用日志文件恢复事务。
2.1 登记日志文件(logging)。事务运行过程中,系统把事务开始、事务结束(包括COMMIT和ROLLBACK)以及对数据库的插入、删除、修改等每一个操作作为一个登记记录(LOG记录)存放到日志文件中。每个记录包括的主要内容有:执行操作的事务标识、操作类型,更新前数据的旧值(对插入操作而言,此项为空值),更新后的新值(对删除操作,次项为空值)。
登记的次序严格按并行事务执行的时间次序。同时,遵循“先写日志文件”的规则。我们知道,写一个修改到数据库和写一个表示这个修改的“log”记录到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个操作只完成了一个。因此,为了安全,应该先写日志文件,即首先把“log”记录写到日志文件上,然后,再写数据库的修改。这就是 “先写日志文件”的原则。
事务恢复。利用日志文件恢复事务的过程分两步:第一步,从头开始扫描日志文件,找出哪些事务故障发生时已经结束,哪些事务尚未结束。第二步,对尚未结束的事务进行撤销处理,对已经结束的事务进行重做。进行撤销处理的方法是:反向扫描日志文件,对每个重做事务的更新操作执行反操作。即对已经插入的新记录执行删除操作,对已删除的记录重新插入,对修改的数据恢复旧值(即用旧值代替新值)。
进行重做处理的方法是:正向扫描日志文件,重新执行登记操作。
对于非常结束的事务应该进行撤销处理,以消除可能对数据库造成的不一致性。对于正常结束的事务进行重做处理也是需要的,这是因为,事务已经发出COMMIT操作请求,但更新操作有可能只写到了数据库缓冲区(在内存),还没来得及物理地写到数据库(外存)便发生了系统故障。数据库缓冲区的内容被破坏,这种情况,仍可能造成数据库的不一致性。由于日志文件上更新活动已完整地登记下来,因此,可能重做这些操作而不必重新运行事务程序。
3 利用转储和日志文件可以有效地恢复数据库
当数据库本身被破坏时(如硬盘故障和病毒破坏)可重装转储的后备副本,然后,运行日志文件执行事务恢复,这样,就可以重建数据库。
当数据库本身没有被破坏,但内容已经不可靠时(如发生事务故障和系统故障),可利用日志文件恢复事务,从而使数据库回到某一正确状态。这时,不必重装后备副本。