Oracle实例恢复

实例恢复

Oracle实例在非正常关闭或执行SHUTDOWN ABORT强制关闭后,实例在下次打开数据库之前会执行实例恢复过程,这个过程是由Oracle自动完成的。执行实例恢复的目的是确保数据的一致性,只有当联机Redo日志文件和UNDO表空间的介质没有被破坏才能确保实例恢复能够成功。

1.        RAC的实例恢复

当软件、硬件或者人为问题导致实例失败之后,Oracle数据库自动使用联机Redo日志和UNDO数据执行实例恢复操作。

Crash恢复与实例恢复的区别:

l   一个单实例数据库或者RAC数据库所有实例失败之后,第一个打开数据库的实例会自动执行实例恢复。这种形式的实例恢复称为Crash恢复。

l   一个RAC数据库的一部分但不是所有实例失败后,在RAC中幸存的实例自动执行失败实例的恢复称为实例恢复。

根据Crash恢复和实例恢复的不同,由幸存实例或者第一个重启的实例读取失败实例生成的联机Redo日志和UNDO表空间数据,使用这些信息确保只有已提交的事务被写到数据库中,回滚在失败时候活动的事务,并释放事务使用的资源。

2.        实例恢复的阶段

在实例发生异常终止的情况下,数据库处于以下的状态:

l   事务提交的数据块只写入联机Redo日志中,没有更新到数据文件(那么未写入数据文件的更新必须重新写入数据文件)。

l   由于DBWR进程是异步向磁盘写入数据的,数据文件中可能包含没有被提交但已经写入数据文件的改变,这些改变必须回滚到之前的状态,以确保数据的一致性。

实例恢复利用联机Redo日志文件解决第一个问题,利用UNDO数据同步数据文件解决第二个问题,从而确保数据库数据的一致性。

因此,实例恢复过程会经历两个阶段:

u  实例恢复的第一个阶段称为Cache恢复或者前滚,确保联机Redo日志中所有已提交的事务操作的数据写回到数据文件中。如果正在执行的检查点还未完全执行完毕时发生实例失败,前滚过程可能需要通过多个联机Redo日志文件才能使数据恢复到之前时间的状态。前滚之后,数据中就包含了连接Redo日志文件中所有已提交的数据。在失败之前,数据文件中可能也包含未提交的改变,或者是记录在联机Redo日志中但未提交的数据,在前滚的时候被写到硬盘中。

u  实例恢复的第二个阶段称为回滚或者事务恢复,Oracle数据库应用UNDO块回滚在数据块中未提交的改变,这些数据块是在失败之前或者Cache恢复期间被写入的。回滚完成之后,整个实例恢复才算完成,而RedoUNDO的丢失或者损坏都可能导致实例恢复失败。Oracle数据库能同时回滚多个事务。所有在失败的时候是活动的事务都被打上了终止的标记,等待SMON进程回滚终止的事务。

            数据库由SMON后台进程自动应用联机Redo日志文件中的条目和读取UNDO表空间中的数据完成实例恢复。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29339097/viewspace-1062090/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29339097/viewspace-1062090/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值