`
xitonga
  • 浏览: 610962 次
文章分类
社区版块
存档分类
最新评论

oracle实例恢复 详解理论知识

 
阅读更多


实例恢复

当数据库突然崩溃,而还没有来得及将buffer cache里的脏数据块刷新到数据文件里,同时实例崩溃时正在运行着的事务被突然中断,则事务为中间状态,也就是既没有提交也没有回滚,这时数据文件里的内容不能体现实例崩溃的状态,这样关闭数据库是不一致的。

-下次启动实例时,oracle会由smon进程自动进行实例恢复,实例启动时,smon进程会去检查控制文件所记录的每个在线的、可读写的数据文件STOP SCN 号,数据库正常运行过程,该STOP SCN 为空,而当数据库正常关闭时,会进行完全检查点,并将检查点SCN 号更新到 STOP SCN中,实例崩溃时 oracle 来不及更新STOP SCN ,则STOP SCN 为空,当smon发现STOP SCN 是空值时,就知道实例上次没有正常关闭,因此由smon进程开始实例恢复,

前滚:SMON 实例恢复时,会从控制文件中找到每3秒触发的增量检查点,检查点队列的第一个脏数据块检查点所对应的RBA地址,于是,smon进程到联机文件中找到该检查点RBA地址,然后从该位置开始往下应用,应用所有的redo 条目到ON DISK RBA(检查点队列的最后一个RBA) 就是联机日志文件的最后一条redo。从而buffer cache 里又恢复了实例崩溃那个时间的状态。这个过程叫前滚

前滚完毕之后,buffer cache里既有崩溃时已经提交还没有写入数据文件里的脏数据块,也还有事务被突然终止,而没有提交又没有回滚的事务所脏的数据块,前滚完毕后,smon进程立即打开数据库,但是,这时的数据库中还含有那些中间状态的,既没有提交又没有回滚的脏数据块,这种脏数据块是不能存在数据库中的,因为他们没有被提交必须回滚,打开数据库以后,Smon 进程会在后台进行回滚。

oracle database 10g 会从实例错误中自动进行恢复,DBA所需要执行的操作就是正常启动实例。实例会装载控制文件,然后尝试打开数据文件。如果发现数据文件在关闭过程中不同步,则使用重做日志组中包含的信息将数据文件前滚到关闭时的状态,然后回退所有未提交的事务处理(因为还原表空间也已前滚)。

· 原因是尝试打开的数据库中的文件在关闭时不同步

· 是自动执行的

· 使用重做日志组中存储的信息来同步文件

· 涉及到两个不同的操作

- 前滚:数据文件还原到出现实例错误之前所处的状态。

- 回退: 已执行但尚未提交的更改会返回到初始状态。

实例恢复阶段:

要使实例打开一个数据文件,数据文件头中包含的系统更改号(SCN)必须也数据库控制文件中存储的当前SCN匹配。

如果编号不匹配,实例会应用联机重做日志中的redo 数据,并按顺序“重做”事务处理,直到数据文件处于最新状态。所有数据文件与控制文件同步后,就会打开数据库,此时用户可登陆

应用重做日志后,会应用所有事务处理,使数据库返回到出现错误时的状态。这通常包含正在进行但尚未提交的事务处理。打开数据库之后,会回退那些未提交的事务处理。在实例恢复的回退阶段结束时,数据文件只包含提交的数据。

1.数据文件不同步

2.前滚(利用redo)

3.文件中的提交和未提交数据

4.回退(还原)

5.文件中提交数据


优化实例恢复(FAST_START_MTTR_TARGET是指允许DBA指定数据库进行崩溃恢复需要的秒数)

在实例为事务处理返回 commit complete (提交完成)之前,在重做日志组中会始终记录事务处理信息。重做日志组中的信息确保了在出现错误时可恢复事务处理。另外,事务处理信息还需要写入数据文件。由于数据文件写过程比重做写过程要慢很多,因此,数据文件写操作通常发生在重做日志组记录了信息之后。(数据文件随机写过程比重做日志文件连续写过程要慢)

每隔三秒,检查点进程会在控制文件中记录关于重做日志中检查点位置的信息。因此,oracle 数据库认为此时间点之前记录的所有重做日志项对数据库恢复来说都是不需要的。

实例恢复所需的时间指的是将数据文件由其最后一个检查点返回到控制文件中记录的最新SCN所需的时间。管理员通过设置MTTR(Mean Time To Recovery)目标 (以秒为单位)并通过重做日志组的大小可控制这个时间。检查点位置与重做日志末尾之间的距离,永远不能大于最小重做日志组的90%

· 在实例恢复期间,必须将检查点位置与重做日志末尾之间的事务处理应用到数据文件

· 通过控制检查点位置与重做日志末尾之间的差异可优化实例恢复。图中:有条纹的块未写入磁盘





oracle进行备份的需要了解的知识:

oracle常见的故障类型:http://blog.csdn.net/wanghui5767260/article/details/20696235

oracle四个重要的后台进程(DBWR / LGWR / ARCH / CKPT):http://blog.csdn.net/wanghui5767260/article/details/20715809

oracle物理备份和逻辑备份理解:http://blog.csdn.net/wanghui5767260/article/details/20627639

分享到:
评论

相关推荐

    PowerBuilder+Oracle项目开发实例详解

    《PowerBuilder+Oracle项目开发实例详解》是一本深入探讨如何结合PowerBuilder和Oracle数据库进行项目开发的专业书籍。这本书籍提供了一系列实例,旨在帮助读者掌握这两种技术的整合应用,提升实际项目开发能力。随...

    Mondrian+Oracle 实例

    mondrian-oracle实例详解 Mondrian是一款开源的多维数据集(OLAP)引擎,它主要用于构建在线分析处理(OLAP)系统。Mondrian与数据库系统如Oracle结合使用,能够提供高效的数据分析和决策支持功能。在这个"Mondrian...

    Oracle PLSQL详解 宝典

    通过《Oracle PLSQL详解 宝典》,你不仅可以学习到PL/SQL的理论知识,还能通过实例和实践加深理解,提升编写高效、易维护的代码的能力。无论你是初学者还是经验丰富的开发者,这本书都将是你掌握Oracle数据库编程不...

    Oracle备份与恢复案例

    ### Oracle备份与恢复案例详解 #### 一、理解数据库恢复的重要性及分类 在日常的数据库管理工作中,确保数据的完整性和一致性至关重要。由于各种原因,如硬件故障、软件缺陷、网络问题、进程异常以及系统崩溃等,...

    Oracle大型数据库系统在AIX UNIX上的实战详解

    为了更好地理解和应用上述理论知识,我们可以通过几个具体案例来进行实践操作: - **案例一**:在AIX上部署一个高可用性Oracle数据库集群。 - **案例二**:实现Oracle数据库自动备份方案,并测试其有效性。 - **案例...

    Visual C++ 6.0数据库开发实例详解

    《Visual C++ 6.0数据库开发实例详解》是一本专为初学者和有一定经验的开发者设计的指导书籍,旨在帮助读者深入理解如何利用Visual C++ 6.0这一经典编程环境进行数据库应用的开发。这本书的核心内容围绕着C++与...

    Oracle,PLSQL课件详解,适合初学者,配备实例,全英文,在学习数据库之余亦可以提高英语水平

    9. **实例解析**:课件中的PPT文件(如Les03.ppt至Les23.ppt)很可能包含了实际案例分析,通过这些案例,你可以将理论知识应用到实践中,加深理解和记忆。 通过这套全英文的课件,你不仅可以掌握Oracle数据库和PL/...

    ORACLE课程ORACLE课程

    Oracle课程详解:开启数据库管理之旅 Oracle,作为全球领先的数据库管理系统之一,是企业级数据存储、管理和分析的核心工具。Oracle课程旨在帮助学习者掌握Oracle数据库系统的基础知识,深入理解其高级特性和管理...

    Oracle SQL优化实例讲解.pdf

    通过上述知识点的详细说明,我们可以了解到Oracle SQL优化涉及多个层面的内容,从具体的优化技巧到理论概念,从基本的操作到高级的性能分析工具,每一个环节都是优化过程中不可或缺的一环。通过实例讲解,能够更加...

    j2ee 经典实例详解3

    《J2EE经典实例详解3》是一本深入探讨J2EE技术的书籍,其核心内容是通过具体的实例来解析J2EE平台上的开发实践。J2EE,全称为Java 2 Platform, Enterprise Edition,是Oracle公司提供的一个用于构建企业级分布式应用...

    J2EE 经典实例详解9

    通过这些实例,读者不仅可以学习到J2EE的理论知识,还能掌握实际开发中的技巧和最佳实践。对于希望提升J2EE开发能力的工程师来说,这是一份不可多得的学习资料。虽然提供的文件名000099.pdg、000085.pdg等可能是文档...

    Oracle入门教程-28本全套

    Oracle入门教程是一套专为初学者设计的28本完整教程集合,旨在帮助读者逐步掌握Oracle数据库的基础...同时,理论知识与实践操作相结合,有助于提升解决问题的能力,为未来在数据库管理、开发或运维领域的工作做好准备。

    104.[提高班]网络渗透靶场Oracle+phpStudy本地搭建万字详解1

    安装Oracle数据库涉及多个步骤,包括了解基础概念、安装软件、创建监听服务、创建实例、配置TNS文件,以及使用Navicat等工具进行数据库连接。过程中可能会遇到各种问题,但详细的教程可以帮助初学者克服这些困难。 ...

    Oracle DBA必备图书

    书中可能包含大量实际案例,帮助读者将理论知识应用到实践中。 3. **《剑破冰山__Oracle开发艺术_》高清PDF+源代码**:这是一本关于Oracle开发的书籍,可能深入探讨了Oracle的高级特性,如PL/SQL编程、存储过程、...

    oracle 9i ocp 中文资料

    Oracle 9i OCP(Oracle Certified Professional)是Oracle公司针对其9i数据库系统推出的一...在学习过程中,你还需要通过实践操作来巩固理论知识,模拟真实环境下的问题解决,这样才能真正提升自己的数据库管理能力。

    Oracle详解ppt

    最后,"第10章 数据库开发应用实例.ppt"提供了实际的开发应用场景,帮助你将理论知识应用于实践中,解决实际问题。 总的来说,这份Oracle详解资料提供了全面的学习路径,从基础的SQL语法到复杂的存储过程和触发器,...

    老二牛车第一章理论课Oracle入门

    ### Oracle数据库应用理论课知识点详解 #### 一、Oracle数据库简介 **Oracle**,作为全球领先的中间件和数据库产品供应商,其名字源自古希腊语,意指“神谕”。在中国,由于古代对甲骨上文字的崇拜,Oracle也被...

    Oracle数据库教程.txt

    - 顶级专家认证:要求具备深厚理论知识及实践经验,并通过现场实操考核。 通过上述内容的学习与实践,可以全面掌握Oracle数据库的相关知识和技术要点,为今后从事相关工作打下坚实基础。此外,建议结合视频教程...

Global site tag (gtag.js) - Google Analytics