非结构化信息数据恢复主要针对3种不同的故障类型进行恢复工作,其基本原理是利用日志文件、副本来对系统中的非结构化信息进行恢复。
1.事务故障恢复
对于事务故障,利用保存在磁盘上逻辑日志以及物理日志中关于故障事务的信息,来撤销故障事务对非结构化信息所产生的影响。其具体的恢复步骤如下:
(1)在磁盘上逻辑日志中查找是否有有关该事务的记录信息;若无关于该事务的记录,则直接将各个缓存中有关该事务的数据处理,逻辑日志记录,物理日志记录清空,执行完毕;否则执行下面的操作;
(2)在逻辑日志和物理日志中记录该事务的ROLLBACK记录;
(3)在逻辑日志中反向查找最近一次系统级CKPT标识,从该CKPT标识向上找到该事务的开始标记,然后对于该事务的所做操作,对应扫描物理日志,按照不同操作逐条执行逆向恢复操作,直至该事务的开始标记;
(4)将各缓存中有关该事务未写入磁盘的数据处理,物理日志处理,逻辑日志处理清空;
(5)故障事务所有操作回滚完毕,返回用户信息。从上述内容可知,由于逻辑日志记录内容的简化以及CKPT技术避免了对整个日志的检索工作,大大缩减了查找执行时间,从而可较为高效地完成恢复工作。
2.系统故障恢复
系统故障造成数据库不一致状态的主要原因:一是未完成的事务由于检查点的到达而对非结构化信息作了部分物理上的更新;二是已经提交的事务可能有部分留在缓冲区中。其具体恢复如下:
(1)首先扫描系统逻辑日志文件,在逻辑日志中反向查找最近一次系统级CKPT标识,顺次查找未完成的事务,记入待撤销队列中。然后从该检查点开始正向扫描,把所有具有开始标记但无结束标记的事务也记入撤销队列;
(2)反向扫描物理日志,对物理日志中记录的有关该事务的操作,按照不同操作逐条执行反向恢复操作;
(3)该事务回滚完毕后,重复前两步操作,直至所有的未完成事务撤销完毕。
该恢复机制利用检查点技术,从日志中所记录的CKPT标识直接确定故障发生前所有未完成的事务,避免重做尚未写入数据库的已完成的事务,从而改善了恢复效率,提高了性能。
3.介质故障恢复
对于介质故障,采用的恢复方法是通过非结构化信息的备份和转储期间的日志备份,以及转储后至故障发生前日志文件副本中所保留的信息来恢复数据库系统。其主要步骤如下:
(1)找到离故障发生时刻最近的转储副本,重装数据库;
(2)同时装入转储开始时刻至结束时刻的逻辑日志和物理日志文件副本。首先搜索逻辑日志文件,找到所有具有用户级CKPT标识的事务,记入重做队列,然后正向扫描物理日志文件,顺序重做这些事务,利用恢复系统故障的方法撤销转储期间所有未完成的事务;
(3)装入转储结束时刻以后的逻辑日志文件和物理日志文件副本;
(4)正向扫描逻辑日志文件,找出故障发生时已经提交的事务,将其记入重做队列,然后正向扫描物理日志文件,对重做队列中的所有事务进行重做处理;
(5)重做处理完毕,系统恢复至故障前最近时刻的一致状态,恢复正常运作。