代码改变世界

数据库的Instance/Crash Recovery

2016-09-21 12:05  abce  阅读(688)  评论(0编辑  收藏  举报

crash recovery是指单实例数据库发生了failure、或者rac数据库中的所有实例都发生了failure后进行的recovery。rac数据库crash后,rac中第一个重启启动的instance负责进行crash recovery。
instance recovery是指rac环境中,剩下存活的instance的smon进程对已经发生failure的instance进行的recovery。实例恢复时可以查看视图gv$instance_recovery进行监控

 

Instance/Crash Recovery二者都不需要管理员人工参与。

 

Instance/Crash Recovery的目标是还原instance中止时cache中已经修改的数据块,并将仍处于open状态的redo thread关闭。Instance/Crash Recovery只会用到在线联机日志文件和当前在线的数据文件。

Instance/Crash Recovery包含两个阶段:前滚和回滚。前滚会将在线连接日志文件中已提交、未提交的事务记录应用到在线的数据文件上;回滚是将未提交的事务所做的修改变到最初的状态。

Instance/Crash Recovery有以下共同的特点:
-对当前在线数据文件重做修改操作
-只需要在线连接日志文件,不需要归档日志
-需要的时间与发生failure的instance的个数、redo的产生量(自上一个checkpoint后)、用户的配置(如redo日志的大小、检查点频率、是否开启并行等)等有关

Instance Recovery的过程:
1.执行实例恢复时,oracle会识别出上一次发生的检查点。
2.从上一次检查点开始,应用那些以及写入在线联机日志文件、但是还没有写入数据文件的操作。在前滚阶段会使用到RBS和用户数据
3.前滚结束,数据库被打开、用户可以连接到数据库。但是,未提交的事务会锁住有些数据
4.执行回滚操作
5.恢复过程结束