热门关键字:  项目经理  分析师  CEO  中间件  报名费





恢复基本策略

来源: 作者: 时间:2008-04-02 点击:

故障的种类不同,其恢复的方法不同.


1. 事务故障的恢复


事务故障恢复采取的主要策略是根据日志文件,将事务进行的操作撤消(UNDO).事务故障对用户来说是透明的,系统自动完成.步骤如下:


(1) 根据事务开始标志和结束标志成对的原则,正向扫描日志文件,找出没有事务结束标志的事务(没有提交的事务),查找事务的更新操作.


(2) 对日志记录的操作进行反向逆操作.所谓反向,如果原来顺序是第一个操作,第二个操作,直到第n个操作,则从第n个操作开始,直到第二个操作,最后是第一个操作.所谓逆操作:如果是插入记录就删除相应的记录,如果是删除就插入原来的记录,如果是修改,就将新值改为旧值.


(3)继续扫描,查找没有结束事务标志的事务,直到日志结束.


2. 系统故障的恢复


系统故障恢复,一是对未提交事务进行撤消(UNDO),二是对已经提交事务因为内存缓冲区数据丢失没有写入数据库的事务进行重做(REDO).系统故障恢复是系统重新启动时完成的,也不需要用户干预.步骤如下:


(1)正向扫描日志文件,根据事务开始标志和事务结束标志,将只有事务开始标志没有事务结束标志的事务记入UNDO队列;将既有事务开始标志又有事务结束标志的事务记入REDO队列.


(2)对UNDO队列进行撤消处理:反方向逆操作(见事务故障恢复).


(3)对REDO队列进行重做处理:顺序重做每一个事务的操作.


3. 介质故障的恢复


介质故障可能使磁盘上的数据库和日志文件都遭损坏,是破坏性最大的一种故障.介质故障的恢复需要DBA干预.步骤如下:


(1)装入最近的数据库备份,使数据库还原到最后备份点的一致状态;


(2)从备份点到故障点的日志文件没有损坏的情况下,根据日志文件,采用REDO和UNDO方法,将数据库恢复到故障点的一致状态.如果日志文件损坏,需要手工提供备份点到故障点的事务


4. 具有检查点的恢复


在对数据库进行恢复时,使用日志文件,恢复子系统搜索日志文件,以便确定哪些需要UNDO,哪些需要REDO,一般需要检查全部的日志.扫面全部的日志将消耗大量的时间,同时将有大量的事务都要重做(REDO),而实际已经将更新结果写入了数据库中,浪费了大量的时间.为了减少扫描日志的长度,在日志中插入一个检查点(CheckPoint),并确保检查点以前事务的一致性.在进行恢复时,从检查点开始扫描,而不是从全部日志开始扫描,可以节省扫描时间,同时减少REDO事务.检查点恢复只对事务故障和系统故障有效,对于介质故障,日志的扫描从备份点开始.


为了确保检查点以前的事务都具有一致性,在检查点时,应该进行如下的工作:


(1)将当前日志缓冲区的所有日志写入日志文件中;


(2)在日志文件中插入检查点数据,作为检查点的标志;


(3)将当前数据缓冲区的数据写入数据库(物理文件).


DBMS可以指定固定的周期产生检查点,另外可以根据一定的事件产生检查点,如日志文件切换时产生检查点,同时可以让某些命令产生检查点,如关闭数据库命令产生检查点.


具有检查点的事务故障和系统故障恢复,只需要从最后一个检查点(其检查点号最大)开始扫面到日志文件结束,然后对其中的没有提交的事务进行UNDO,对提交的事务进行REDO.

 





最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
企业电子商务

赞助商