`
have23
  • 浏览: 44365 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于Oracle内部工作机制的一个疑惑

 
阅读更多

看了这个帖子

http://www.itpub.net/thread-171186-1-1.html

 

结合自己了解到的知识。

 

有一些不同的看法。

 

 

 写道
好像并无提及这个undo entry在写入机制上与data dirty buffer有什么不同,那么由此就产生了我的一个疑问:

undo buffer and data buffer 是一样处理的,都是 dirty buffer ---> 数据文件

因为凡是提交的,before image and after image 都进入了 redo log ,
若没有提交的数据要写入datafile 之前,oracle一定要保证其相应的时间点之前所有相关日志被写入日志文件,而before image 又是在after image 之前产生,所以SCN也靠前,所以after image 进入数据文件之前其 before iamge 一定进入了日志文件

(参考lgwr)
比如DBWR在写入之前会首先通知LGWR,将写入的dirty buffer相关的redo entry也写入到Log file中,但是文档中并未说明那些与不具有commit record的redo entry相对应的dirty buffer不能被写入到datafile中。

----------- 因为 redo log 里面是按照 SCN 的顺序写入的,所以一定是按照时间点顺序来写入的(发生变化的dirty buffer 是根据第一次发生变化时的SCN在 checkpoint queue 里面排序的,而dbwr是在这个queue 里面依次写入数据文件),所以我上面的阐述是对的,所以oracle可以保证你所想要的

所以crash 后就一定可以恢复

 

 

我觉得这个还要chk来解释。

 

可以参考:http://www.cnblogs.com/sopost/archive/2011/06/22/2190033.html

 

Redo Log files record all changes made to data.

the Oracle sever sequentially records all changes made to database in the redo log buffer.

 

 

The redo entries are written from the Redo Log Buffer to one of the online redo log 

file groups called the current online redo log file group by the LGWR process. LGWR writes 

under the following situations:

•   When a transaction commits

•   When the Redo Log Buffer becomes one-third full

•   When there is more than a megabyte of changed records in the Redo Log Buffer

•   Before the DBWn writes modified blocks in the Database Buffer Cache to the datafiles

 

 

“若没有提交的数据要写入datafile 之前,oracle一定要保证其相应的时间点之前所有相关日志被写入日志文件,而before image 又是在after image 之前产生,所以SCN也靠前,所以after image 进入数据文件之前其 before iamge 一定进入了日志文件”

 

这句话是值得考虑的,SCN是Oracle  Database 的时钟,只有checkpoint完成时,将SCN写入到数据文件与控制文件中。

在Redo Log buffer 中如何来判断SCN是否靠前?

 

因为all changes 是被顺序记录到redo log buffer中的,通过RBA(Redo Byte Address)来定位重做日志块。

那么before imgage的地址偏移位应该是小于after image.

 

"----------- 因为 redo log 里面是按照 SCN 的顺序写入的,所以一定是按照时间点顺序来写入的(发生变化的dirty buffer 是根据第一次发生变化时的SCN在 checkpoint queue 里面排序的,而dbwr是在这个queue 里面依次写入数据文件),所以我上面的阐述是对的,所以oracle可以保证你所想要的“

 

这句话也值的考虑。Oracle将所有在数据缓存中被修改的脏块按照LRBA顺序的组成一个checkpoint队列,增量checkpoint来保证最早修改的数据,陆续写入到数据文件中。增量checkpoint会将RBA写入到控制文件。这个也跟SCN没有关系。只有发生normal checkpoint的时候,SCN才被写入到数据文件与控制文件。

 

可以通过alter system checkpoint,然后查看V$DATAFILE_HEADER来观察 SCN的变化。

 

 

 

 

 

分享到:
评论

相关推荐

    ORACLE内部培训 ORACLE内部培训

    ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训ORACLE内部培训...

    Oracle 内部教程 超级经典

    本教程“Oracle 内部教程 超级经典”聚焦于Oracle的核心概念、管理和优化技术,对于想要深入理解Oracle数据库的IT专业人士来说,无疑是一份珍贵的学习资源。 一、Oracle基础 Oracle数据库系统由多个组件构成,包括...

    ORACLE的工作机制

    ### ORACLE的工作机制详解 #### 一、概述 Oracle数据库是一种关系型数据库管理系统,由美国甲骨文公司开发。Oracle数据库以其高度可靠性和强大的数据管理功能,在企业级应用中占据了重要地位。本文将深入探讨...

    Oracle 内部培训资料:Oracle 10g 培训材料(18个PPT)

    Oracle 内部培训资料:Oracle 10g 培训材料(18个PPT) 如下: Oracle_数据库_10g性能概述.ppt Oracle_数据库_10g极大提高可用性和网格计算能力.ppt Oracle_数据库_10g的备份与恢复特性-恢复管理器与闪回查询技术....

    ORACLE系统内部结构

    Oracle系统内部结构是一个复杂而精细的话题,它涵盖了数据库的各个层面,包括物理存储、逻辑结构、进程架构、内存管理、安全性、并发控制等关键组成部分。以下是对这些核心知识点的详细阐述: 1. 物理存储:Oracle...

    Oracle公司内部数据库培训资料

    Oracle公司内部数据库培训资料是一份宝贵的资源,涵盖了Oracle数据库的学习和实践内容。Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据了重要地位。这份资料旨在帮助学习者深入理解...

    Oracle内部培训教程

    Oracle内部培训教程是一套全面深入学习Oracle数据库系统的资源集合,主要涵盖了Oracle的多个核心主题,旨在帮助用户深入了解和掌握这个全球广泛使用的数据库管理系统。通过这些课件,学习者可以逐步理解Oracle的架构...

    ORACLE内部培训教学视频(22讲)

    教程名称:ORACLE内部培训教学视频(22讲)课程目录:【】ORACLE内部培训视频教学22讲(01-03)【】ORACLE内部培训视频教学22讲(04-06)【】ORACLE内部培训视频教学22讲(07-09)【】ORACLE内部培训视频教学22讲...

    Oracle工作流介绍

    Oracle工作流是Oracle Application Server的一个组成部分,它为业务流程管理提供了一个强大的平台。通过定义、执行和管理复杂的工作流程,Oracle工作流能够帮助企业自动化业务过程,提高效率并确保业务规则得到一致...

    ORACLE DBA工作笔记 运维数据迁移与性能调优

    7. 考虑到数据迁移与性能调优的复杂性,DBA应当具备良好的故障排查能力,这需要对Oracle数据库的内部工作机制有深刻理解,并能够根据问题日志和事件进行分析。 了解这些知识点后,DBA可以在实际工作中更加自信地...

    ORACLE内部DSI资料

    "ORACLE内部DSI资料"很可能是Oracle公司内部关于数据存储接口(Data Storage Interface,DSI)的培训材料,这对于理解Oracle数据库底层工作原理和高级特性具有极高的价值。不过,由于这些资料面向的是内部员工,对于...

    老方块ORACLE 内部培训.zip

    "老方块ORACLE 内部培训.zip"可能是一个包含了深入Oracle学习资料的压缩包,旨在帮助用户掌握Oracle数据库的核心技术和管理实践。以下是根据这个主题可能涵盖的一些关键知识点: 1. **Oracle数据库体系结构**:...

    oracle 内部资料 DSI

    Oracle DSI,全称为Oracle Data Services Infrastructure,是Oracle数据库系统中的一个重要组成部分,它提供了一整套数据服务和基础设施,用于支持高效、可靠的数据管理和处理。这个内部资料集合涵盖了从301到309...

    Oracle 11g内部技术文档

    Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,其内部技术涵盖了数据库管理、存储结构、查询优化、事务处理、并发控制、安全性等多个方面。这份"Oracle 11g内部技术文档"提供了深入理解Oracle数据库...

    oracle内部培训资料

    Oracle是全球知名的数据库管理系统,其内部培训资料涵盖了广泛的知识领域,包括数据库管理、SQL语言、存储结构、性能优化、安全策略以及故障排查等。对于希望深入理解和掌握Oracle技术的人来说,这些内部培训资料是...

    有关Oracle数据缓冲区的内部机制剖析

    为了监控数据缓冲区的性能,Oracle提供了一个内部视图X$BH,包含数据块的使用时间和计数。通过查询X$BH,我们可以找到那些被频繁访问的“热数据块”,并将它们转移到KEEP缓冲池,以确保它们始终在内存中可用。 ...

    oracle 全套实战培训资料(公司内部资料)

    Oracle是全球最大的数据库管理系统提供商之一,其产品广泛应用于企业级数据管理。本套"Oracle全套实战培训资料(公司内部资料)"是Oracle公司内部使用的培训材料,旨在帮助学习者从入门到精通,全面掌握Oracle数据库...

    东方标准Oracle内部教程

    "东方标准Oracle内部教程"无疑是一份极具价值的学习资料,旨在帮助读者深入理解Oracle的核心概念、功能以及最佳实践。本教程可能涵盖了Oracle数据库的基础知识到高级特性,包括安装配置、SQL语言、数据管理、性能...

    oracle 工作流 指南

    - **定义**:Oracle工作流是一个基于事件的、图形化的业务流程管理系统,用于创建、执行和监控业务流程。 - **组成部分**:主要包括工作流引擎、工作流客户端、工作流服务和工作流消息系统。 - **工作流对象**:...

    Oracle内部机试题目

    根据给定的文件信息,以下是对“Oracle内部机试题目”的详细解析,涵盖了北大青鸟Oracle内部机试中涉及的关键知识点: ### 1. Oracle连接与权限 在Oracle数据库环境中,连接与权限管理是基础而重要的操作。题目中...

Global site tag (gtag.js) - Google Analytics