Oracle实例恢复的原理

简介:

   简单分析一下oracle数据的实例恢复

  当数据库突然崩溃,例如突然掉电,硬件故障等 ,还没来得及将buffer cache里面的脏数据块写入到数据文件中,同时在实例崩溃时,运行的事物也突然被中断,这时候事物是出于中间状态的,既没有提交也没有回滚,这个时候数据文件是不一致的状态。

 当修复完故障启动实例的时候,oracle的SMON进程会执行实例恢复,检查控制文件中的STOP SCN号(SCN 有四种1:系统SCN 2:数据文件SCN 3:启动SCN号 4: 终止SCN号) 数据库在正常运行中终止SCN号始终是空的,当数据库正常关闭的时候,会进行完全检查点,并将SCN号更新。当实例崩溃的时候,ORACLE还没来得及更新终止SCN号的时候,这时候终止SCN号是空的,当SMON进程检查该终止SCN号是空的,就认为数据库没有正常关闭,于是开始了实例的恢复。

  SMOIN进行实例恢复的时候,会从控制文件中查找检查点位置,根据在控制文件中查找到的检查点位置到联机日志文件中搜索这一位置,然后从该位置开始应用重做条目。重现实例崩溃的那个时间点的状态,这个过程叫做前滚,等待前滚完毕,数据库缓存中会有已经提交的和没有提交的脏数据块。 SMON进程实例恢复完成,并打开数据库,没有被提交的数据将被回滚。

 

     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/460910,如需转载请自行联系原作者

相关文章
|
负载均衡 Oracle 关系型数据库
Linux启动多个Oracle实例
Linux启动多个Oracle实例
166 0
|
SQL 运维 Oracle
Oracle 超时设置2:设置实例级参数
Oracle超时设置系列的第二篇文章,设置实例级参数
792 0
|
SQL 存储 Oracle
Oracle数据库中游标的工作原理与优化方法
Oracle数据库中游标的工作原理与优化方法
|
SQL Oracle 关系型数据库
Oracle 19c 启动和关闭实例保存PDB状态
十年以上 MySQL Oracle DBA从业者,MySQL 5.7 OCP, 微信号: jinjushuke
656 0
|
Oracle 关系型数据库
Oracle实例启动失败 ORA-27300 ORA-27301 ORA-27302 新增一个实例,信号量就不够了
我们在一个客户上进行恢复完成后,在RAC的第二个节点,Oracle实例启动失败,有下面的提示信息
362 0
|
Oracle 关系型数据库 数据库
Oracle实例迁移_真实场景实操
Oracle实例迁移_真实场景实操
161 0
|
存储 运维 Oracle
Oracle数据库机:让数据价值回归用户“第一性原理”
Oracle数据库机:让数据价值回归用户“第一性原理”
|
Oracle 关系型数据库 数据库连接
Kingbase国产化数据库数据迁移:oracle11g数据库转库人大金仓数据库实例演示
Kingbase国产化数据库数据迁移:oracle11g数据库转库人大金仓数据库实例演示
659 0
|
SQL Oracle 安全
Oracle DDL+DML+DCL实例
Oracle DDL+DML+DCL实例
227 0
|
SQL Oracle 关系型数据库
Oracle启动实例(instance)、打开数据库
Oracle启动实例(instance)、打开数据库
380 0