`

实例恢复的原理

 
阅读更多

当数据库突然崩溃,而还没有来得及将buffer cache里的脏数据块刷新到数据文件里,同时在实例崩溃时正在运行着的事务被突然中断,则事务为中间状态,也就是既没有提交也没有回滚。这时数据文件里的内容不能体现实例崩溃时的状态。这样关闭的数据库是不一致的。
下次启动实例时,Oracle会由SMON进程自动进行实例恢复。实例启动时,SMON进程会去检查控制文件中所记录的、每个在线的、可读写的数据文件的END SCN号。数据库正常运行过程中,该END SCN号始终为空,而当数据库正常关闭时,会进行完全检查点,并将检查点SCN号更新该字段。而崩溃时,Oracle还来不及更新该字段,则该字段仍然为空。当SMON进程发现该字段为空时,就知道实例在上次没有正常关闭,于是由SMON进程就开始进行实例恢复了。
SMON进程进行实例恢复时,会从控制文件中获得检查点位置。于是,SMON进程到联机日志文件中,找到该检查点位置,然后从该检查点位置开始往下,应用所有的重做条目,从而在buffer cache里又恢复了实例崩溃那个时间点的状态。这个过程叫做前滚,前滚完毕以后,buffer cache里既有崩溃时已经提交还没有写入数据文件的脏数据块,也还有事务被突然终止,而导致的既没有提交又没有回滚的事务所弄脏的数据块。
前滚一旦完毕,SMON进程立即打开数据库。但是,这时的数据库中还含有那些中间状态的、既没有提交又没有回滚的脏块,这种脏块是不能存在于数据库中的,因为它们并没有被提交,必须被回滚。打开数据库以后,SMON进程会在后台进行回滚。
有时,数据库打开以后,SMON进程还没来得及回滚这些中间状态的数据块时,就有用户进程发出读取这些数据块的请求。这时,服务器进程在将这些块返回给用户之前,由服务器进程负责进行回滚,回滚完毕后,将数据块的内容返回给用户。
Oracle提供了初始化参数fast_start_mttr_target让我们指定完成实例恢复所花费的
最长 时间(该时间只包括前滚并打开数据库的时间,不包括回滚的时间),该参数以秒为单位。比如我们设置该参数为30,表示如果发生实例崩溃,那么下次重新启动时,数据库最多用30秒的时间完成前滚,并打开数据库。在数据库运行过程中,就会根据该时间,来估算30秒大致对应多少量的重做记录,这实际上就决定了检查点位置,如下图所示。

                             
图中的红色竖线就是检查点位置。Oracle应用完检查点位置以后所有的重做记录所花费的时间就是fast_start_mttr_target所指定的时间。也就是说,检查点位置以后的重做记录所对应的脏块会被留在检查点队列上,而不被DBWn写入数据文件。因此,该参数越大,说明要应用的重做记录就越多,那么留在检查点队列上的脏块就越多,也就说明DBWn写脏块越不频繁,占用I/O越少,那么前台用户查询语句的I/O就能够越快地被响应。但是实例恢复的时间也会越长。反之,该参数越小,说明要应用的重做记录就越少,那么留在检查点队列上的脏块就越少,也就说明DBWn写脏块越频繁,因而占用I/O越多,那么前台用户查询语句的I/O就不能较快地被响应。但是实例恢复的时间会更短。


参考至:《教你成为10g OCP》韩思捷著

如有错误,欢迎指正

邮箱:czmcj@163.com

分享到:
评论

相关推荐

    oracle9i oracle11g oracle10g 性能调优 基础学习 视频地址

    ORACLE_实例恢复原理 8 Oracle存储结构完全攻略 8 第2讲 Oracle 11g的安装与测试 8 第三讲安装11gR2 11.2.0.3 Grid Infrastructure Clusterware GI集群软件 8 第四讲安装11gR2 RAC DB RDBMS HOME数据库软件并DBCA...

    数据恢复基础知识大全

    硬盘数据恢复实例全解 之一 1)解决方案 2)不可恢复的情况 3)破坏原因及恢复可行性分析 硬盘数据恢复实例全解 之二 1)解决方案 2)不可恢复的情况 3)破坏原因及恢复可行性分析 硬盘数据恢复实例全解 之三 ...

    数据恢复基础技术只是大全

    硬盘数据恢复实例全解 之一 1)解决方案 2)不可恢复的情况 3)破坏原因及恢复可行性分析 硬盘数据恢复实例全解 之二 1)解决方案 2)不可恢复的情况 3)破坏原因及恢复可行性分析 硬盘数据恢复实例全解 之三 ...

    基于强度传输方程法相位恢复技术实例演示.zip

    该资源详细情况可参考本人博客文章,链接如下: ... 资源主要采用傅里叶变换对强度传输方程的求解...4) 基于强度传输方程法相位恢复技术实例演示-GBK格式.m(防中文注释乱码) 5) 分辨率板.bmp(模拟被测物体) 6) 原理图.png

    oracle视频教程 下载地址

    Oracle实例恢复原理 Oracle体系结构1 Oracle体系结构2 Oracle重做日志管理1 Oracle重做日志管理2 OraclePL复合类型 OraclePL变量 Oracle序列索引管理 OraclePL-DM操作 OraclePL循环 Oraclesql_tune 因为视频太大 ...

    数据恢复课程设计论文

    2.2 数据恢复原理 3 第二章 数据恢复应用常见实例 4 3.1 主引导区的恢复 4 3.2 分区表破坏 4 3.3 修复DBR 4 3.4 文件被删除后的拯救 5 3.5 因病毒侵害而导致的文件假丢失 5 3.6 数据恢复过程方法图解 6 第三章 硬盘...

    精通Windows.API-函数、接口、编程实例.pdf

    6.3.2 挂起、恢复、切换、终止线程 164 6.3.3 创建远程线程、将代码注入其他进程中执行 167 6.3.4 创建纤程、删除纤程、调度纤程 170 6.3.5 纤程与线程的互相转换 171 6.4 进程状态信息 176 6.4.1 PS API...

    编译原理-作业-简单c++计算器

    这是编译原理课上写的一个简单计算器,可以完成简单的+-*/运算。

    开关电源设计实例之保护电路实例详解

    开关电源各种保护电路实例详细解剖! 输入欠压保护电路一 1概述(电路类别、实现主要功能描述): 该电路属于输入欠压电路,当输入电压低于保护电压时拉低控制芯片的供电Vcc,从而关闭输出。 2电路组成(原理图...

    [注册表]原理结构及恢复IE浏览器实例

    [注册表]原理结构及恢复IE浏览器实例

    数据恢复技术大全(22页doc,绝对超值!!)

    之三 1)解决方案 2)不可恢复的情况 3)破坏原因及恢复可行性分析 硬盘数据恢复实例全解 之四 1)两点建议 2)解决方案 3)实战操作 硬盘数据恢复实例全解 之五 1)FAT分区的恢复...

    数据恢复技术第二版.part1.rar

    本书通过多种典型实例详细介绍了在Windows系统下数据恢复技术的原理和方法。内容包括:硬盘数据组织、文件系统原理、数据恢复技术、文档修复技术、密码遗失处理技术、数据安全技术和数据备份技术。 本书作者戴士剑是...

    虚拟压缩恢复基本原理及应用实例解析 (2005年)

    概述了虚拟压缩恢复基本原理及其在地球科学特别是边值问题中的应用。作为新的应用实例,论证了 Runge定理、Runge-Krarup定理和 Keldysh-Lavrentiev定理均是虚拟压缩恢复原理的推论。

    开关电源设计实例之输入欠压保护电路

    开关电源设计实例之保护电路实例详解之输入欠压保护电路 输入欠压保护电路一 1概述(电路类别、实现主要功能描述): 该电路属于输入欠压电路,当输入电压低于保护电压时拉低控制芯片的供电Vcc,从而关闭输出。 2...

    OracleDBA高可用、备份恢复与性能优化

    资源名称:Oracle DBA高可用、备份恢复与性能优化资源目录:第 1章 RAC真应用集群 11.1 单实例数据库并发控制原理 ..... 11.1.1 并发访问的数据不一致问题 .... 11.1.2 事务以及隔离级别 .. 21.1.3 支持并发的 lock...

    数据恢复技术(戴士剑、陈永红 著).part1.rar

    戴士剑 陈永红 编著: 系统分析、实例讲解;原理与实践相结合,揭示数据恢复技术奥秘。本书通过多种典型实例详细介绍了Windows系统下数据恢复技术的原理和方法。

    Oracle四大宝典之三:Oracle备份与恢复 中文版

    任何数据库在长期使用过程中,都会存在一定的安全隐患。...第二章 Oracle备份与恢复原理 第三章 用户管理的备份 第四章 用户管理的恢复 第五章 RMAN简介与配置 第六章 RMAN备份 第七章 RMAN恢复 第八章 备份恢复示例

    开关电源设计实例之过温保护电路

    开关电源设计实例之保护电路实例详解之过温保护电路 过温保护电路 1概述(电路类别、实现主要功能描述): 该电路属于过温保护电路,但温度高于设定的保护点时,关闭模块输出,当温度恢复后自动开启模块。 2电路...

    精通WindowsAPI 函数 接口 编程实例

    6.3.2 挂起、恢复、切换、终止线程 164 6.3.3 创建远程线程、将代码注入其他进程中执行 167 6.3.4 创建纤程、删除纤程、调度纤程 170 6.3.5 纤程与线程的互相转换 171 6.4 进程状态信息 176 6.4.1 PS API...

Global site tag (gtag.js) - Google Analytics