【数据库管理】⑨实例恢复机制

实例恢复机制Instance Recovery

实例恢复机制(Instance Recovery)是Oracle数据库中的一种机制,用于在数据库实例崩溃或异常关闭后,将数据库恢复到一致的状态。实例恢复机制的主要作用是保证数据库的一致性和可用性,避免数据的丢失和损坏。

实例恢复机制的实现方式通过Oracle后台进程SMON(System Monitor)来完成的当数据库实例崩溃或异常关闭后,SMON会在数据库重新启动时自动启动,并执行以下步骤来恢复数据库:

  1. 打开数据库的控制文件和日志文件,读取最近的Checkpoint信息。

  2. 从日志文件中读取未提交的事务,并将其回滚。

  3. 将未写入磁盘的脏数据写入磁盘,并更新数据库的控制文件和日志文件。

  4. 执行Redo日志,将未提交的事务重新应用到数据库中。

  5. 将数据库的状态设置为可用状态,等待用户连接。

需要注意的是,实例恢复机制只能恢复未提交的事务,已经提交的事务不会被回滚。因此,在实际应用中,需要定期进行数据备份和恢复测试,以保证数据的完整性和可用性。同时,还需要根据实际情况来配置数据库的日志文件和控制文件,以及定期监控数据库的状态和性能。

有了redo,undo和ckpt概述后,有助于更好的理解实例恢复

实例崩溃时,内存中的db buffer和磁盘上的datafile不一致.

实例恢复要解决的两个问题是:

1).重新构成崩溃时内存中未被保存到磁盘的已commit事务.

2).回滚已被写至数据文件的uncommit事务.

由于引入了增量检查点,当实例恢复时,oracle首先从控制文件里找到最后一次检查点位置,这个位置就是实例恢复时运用日志的起点.

然后是SMON监控下的一系列动作:
 

roll forward :利用redo,将检查点位置之后的变更,包括commit和uncommit的都前滚出来了,然后统统写到磁盘(datafile)里.

open :用户可以连接进来,访问数据库.

roll back   :通过undo,把写入磁盘里(datafile)的uncommit的数据回滚.

/为何使用redo前滚 :因为abort时有可能有未写到数据文件里的已经提交的事务.

//为何使用undo回滚 :因为abort时有可能有未提交的事务写到了数据库里.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值