简述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进程实例恢复完成,并打开数据库,没有被提交的数据将被回滚。

本文出自 “影子骑士” 博客,请务必保留此出处http://andylhz2009.blog.51cto.com/728703/460910

时间: 2024-10-26 05:25:44

简述Oracle实例恢复的原理的相关文章

Oracle实例恢复

Oracle实例恢复原理 首先从事物说起,当执行update开启一个事物的时候,首先需要在buffer cache中找到可用的块(block)更新数据,然后构造cr块,将update之前的数据放入到undo中,同时会在log buffer内写日志,log buffer内数据每隔3秒通过lgwr进程将往redo log写日志,在这个过程更改的数据还在内存中,产生脏数据,直到dbwr进程将脏数据写入到磁盘,如果脏数据还未写入磁盘,脏数据中包括提交或未提交的,这个时候由于掉掉或其他原因导致数据库意外宕

实例恢复的原理+PGA +

原文整理自网络: 5.4.2.5  实例恢复的原理 前面我们讲到过,当数据库突然崩溃,而还没有来得及将buffer cache里的脏数据块刷新到数据文件里,同时在实例崩溃时正在运行着的事务被突然中断,则事务为中间状态,也就是既没有提交也没有回滚.这时数据文件里的内容不能体现实例崩溃时的状态.这样关闭的数据库是不一致的. 下次启动实例时,Oracle会由SMON进程自动进行实例恢复.实例启动时,SMON进程会去检查控制文件中所记录的.每个在线的.可读写的数据文件的END SCN号.数据库正常运行过

Oracle实例恢复和介质恢复

Oracle恢复基础概述  一.恢复解决方案 错误类型及解决方案 错误分类 恢复解决方案 介质失败 如果是少量的块损坏,使用块介质恢复:如果是大量的块.数据文件.表空间的损坏,可能需要对损坏的数据文件或者表空间执行完全恢复:如果是归档Redo日志文件或者联机Redo日志文件的丢失,那么只需要不完全恢复方式. 逻辑损坏 如果是程序员错误导致出现的问题,可通过补丁应用修复问题.对于无法修复的问题,也可采用介质恢复手段来恢复数据. 用户错误 根据不同用户错误,选择不同的Flashback技术恢复,使用

Oracle 实例恢复

--======================= -- Oracle 实例恢复 --=======================   一.Oracle实例失败     Oracle实例失败多为实例非一致性关闭所致,通常称为崩溃(crash).实例失败的结果等同于shutdown abort.     实例失败的原因         电源负载故障         硬件故障         后台进程失败         异常关闭数据库     实例失败后的状况         数据库可能丢失已提

Oracle实例恢复的顺序

通过alert仔细观查,发现实例恢复的顺序是: 1.前滚 2.open db 3.rollback(注意:SMON: Parallel transaction recovery tried 在Completed: ALTER DATABASE OPEN)之后 SMON: enabling cache recovery Mon Jun 13 16:50:50 2011 Successfully onlined Undo Tablespace 1. Mon Jun 13 16:50:50 2011

Oracle实例恢复概述

一.Oracle实例失败 Oracle实例失败多为实例非一致性关闭所致,通常称为崩溃(crash).实例失败的结果等同于shutdown abort. 实例失败的原因 电源负载故障 硬件故障 后台进程失败 异常关闭数据库 实例失败后的状况 数据库可能丢失已提交的事务以及存储了未提交的事务,导致数据库出现不一致的情况 解决方案 使用startup 重新启动实例.实例实现自动恢复,根据联机日志文件前滚提交的事务,回滚未提交的事务 查看告警日志.跟踪日志等找出出现故障的原因 二.检查点 检查点在体系结

Oracle实例恢复详解

什么时候会产生实例恢复呢?当你数据库服务器异常断电,重启数据库就会发生实例恢复.实例恢复是由数据库自动完成的,无须DBA的干涉.当然这里有个前提条件:数据文件.在线日志文件.控制文件不得有损坏. 我们用实验来分析一下实例恢复的整个过程吧! 1.在关闭数据库前,我们先看一下几个检查点的SCN SQL> select checkpoint_change# from v$database; CHECKPOINT_CHANGE#   ------------------   1455180 --控制文件

Oracle实例恢复机制

整理自<OCP/OCA认证考试指南> 001      实例恢复不仅可以重新构成在崩溃时未被保存至数据文件的任何已提交事务,而且可以回滚已被写至数据文件的任何未提交事务.这种恢复是完全自动的,我们无法随意停止实例恢复过程.如果实例恢复失败,那么唯一的可能是在实例失败的同时还存在介质失败,此时只有在使用介质恢复技术还原和恢复受损文件后才能打开数据库.介质恢复的最后一个步骤是自动的实例恢复. 002 实例恢复机制     大体上,实例恢复只不过是使用联机日志文件的内容将数据库缓冲区缓存重新构建至崩

实例恢复(Instance Recovery)之前滚(Rolling Forward)和回滚(Rolling Back)

Oracle实例恢复(Instance Recovery)之前滚(Rolling Forward)和回滚(Rolling Back)     关于oracle实例恢复的一些理解,一直都有误区,今天通过查看相关资料和与同学探讨,发觉了自己的错误,探讨结果如下:       实例恢复:当数据库非正常关闭的时候(断电或者shu  abort等等非一致性关闭),当你从新启动数据库的时候,数据库相关进程自动进行实例恢复,无须人工干预,        一. 什么时候需要实例恢复     在shutdown