随笔分类 - Oracle_Internal
摘要:Each heap may have one or more subheaps. These can be dumped using the command ALTER SESSION SET EVENTS 'immediate trace name heapdump_addr level level';where thelevelis the address of the subheap.The syntax for this command changed in Oracle 9.2Oracle 9.0.1 and belowOracle 9.2.0 and aboveOr
阅读全文
摘要:一. Shared Pool概述在之前的blog对Oracle的内存架构也做了一个概述,参考:Oracle内存架构详解http://blog.csdn.net/tianlesoftware/archive/2010/05/15/5594080.aspx在网上搜到一篇介绍shared pool非常详细的pdf资料。原文链接以找不到,但还是要感谢作者Kamus的辛勤劳动。结合Kamus的pdf和csdn网友的blog,重新整理了一下,链接如下:http://blog.csdn.net/robinson1988/archive/2010/11/26/6037925.aspxIINTRODUCT II
阅读全文
摘要:说点简单的,我说说共享池里面的两个latchShared pool latch用来保护共享池内部结构,在分配和释放共享池时需要获得latch,在老化或释放空间时也需要 latch。Oracle9i之前,共享池内存结构是由单独的Shared pool latch保护,从9i开始,如果服务器有4个以上的cpu且shared_pool_size大于250M,Oracle会动态将共享池分为多个子池,最多可以达到7个sub pool,每个子池有自己的free list,lru list及latch。子池的数量可以通过_kghdsidx_count参数来手动调整。查看Shared pool latch个数
阅读全文
摘要:Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedure,trigger)的信息,以及这些对象所依赖的table,index,view等对象的信息。Library cache需要解决三个问题:1.快速定位的问题:Library cache中对象众多,Oracle如何管理这些对象,以便服务进程可以迅速找到他们需要的信息。比如某个服务进程需要迅速定位某个SQL是否存在于Library cache中。2.关系依赖的问题:Library cache中的对象
阅读全文
摘要:我之前曾经写过一篇Library cache内部机制详解,但是遗留了一些关于11g中mutex的改进的问题,最近因为有些11g的数据库频频发生mutex相关的等待事件,所以我又多这个问题做了一些探讨。关于Mutex,可以参考ORACLE mutex实现机制这篇文章,mutex是从10g开始引入的,在library cache中有大量的使用,它的主要作用有两个:一是用来替换library cache pin,二是作为更轻量级的latch使用。在9i中,Library cache lock有null,share,exclusive三种模式,lock的作用是控制进程间的并发访问。Library ca
阅读全文
摘要:我们都知道Latch是Oracle用来在内存中做串行控制的机构,从10g R2开始,Oracle引入了一个新的技术-Mutex。Mutex并不是Oracle的发明,而是系统提供的一个底层调用,Oracle只是利用它实现串行控制的功能,并替换部分Latch。Mutex中有两个变量:分别是Holider identifer和Reference count,Holider identifer记录持有mutex的SID,而Reference count是一个计数,记录了当前正在以share方式访问mutex的数量,每当session以share方式持有mutex时,计数会加1,而释放时会减1。如果Re
阅读全文
摘要:昨天下午1点,收到公司在客户现场的电话,数据库访问不了了,因为我也不在现场,当时那个操作系统是windows 2003 server,oracle版本是oracle10g win32版本(10.2.0.1.0),觉得是操作系统不稳定的问题(先天不良),也没有多想,告诉他重启一下机器看看,然后就没事了,快到下班的时候,再次出现了这个问题。通过teamViewer等上这个系统,取下了alert_xx.log日志的,简单的see了一下,trace文件在bdump下,顺便把bdump文件夹取下来,一起分析。alert_xx.log文件报错误如下:Mon May 27 07:21:54 2013Thre
阅读全文
摘要:我们都知道,Oracle在进行dml过程中,有重要的一步,即创建undo和redo。redo用于事务重演,而undo用于事务的回退。创建undo,记录data block的前映像,需要在undo tablespace 中分配undo segment,来记录undo record。最近一个oracle群里遇到一个事务引起undo tablespace的一个undo segment暴涨的情况,群里也进行了讨论,其中有Q友发出了oracle doc中关于dml事务对undo segment 的分配和使用情况,如下:。群里讨论最后,我也来测试下这个过程及结论。(1):准备工作--创建一个新的undo
阅读全文
摘要:检查点的主要目的是以对数据库的日常操作影响最小的方式刷新脏块。脏块不断的产生,如何将脏块刷新到磁盘中去呢?在8i之前,Oracle定期的锁住所有的修改操作,刷新Buffercache中的所有脏块,这种刷新脏块的方式被称为完全检查点,这极大的影响了效率,从9i之后只有当关闭数据库时才会发生完全检查点。从8i开始,Oracle增加了增量检查点的概念,增量检查点的主要宗旨就是定期的刷新一部分脏块。将脏块一次刷新完是不合理的,因为脏块不断产生,没有穷尽。像完全检查点那样停止用户所有的修改操作,将脏块刷新完再继续,这绝对会极大的影响性能。所有增量检查点的一次刷新部分块是脏块问题的最好解决办法。那么,每次
阅读全文
摘要:http://t.askmaclean.com/thread-1302-1-33.html如何找出Oracle instance中当前打开游标open cursor的总数?v$open_cursor包括多种cursor:注意 11.2中v$open_cursor 才有 cursor_type 这一字段 之前都没有 , 即无法分清楚 是open cursor 还是cached cursorSQL> select distinct cursor_type from v$open_cursor;CURSOR_TYPE---------------------------------------
阅读全文
摘要:一.DB(Data block) From:http://www.orafaq.com/wiki/Data_block A data block is the smallest unit of storage in an Oracle database. Every database has a default block size (specified when the database is created), although blocks in different tablespaces may have different block sizes. An extent cons...
阅读全文
摘要:http://blog.csdn.net/tianlesoftware/article/details/7777511一.RAC全局等待事件说明在RAC环境中,和全局调整缓存相关的最常见的等待事件是global cache cr request,global cache busy和equeue。当一个进程访问需要一个或者多个块时,Oracle会首先检查自己的Cache是否存在该块,如果发现没有,就会先通过global cache赋予这些块共享访问的权限,然后再访问。假如,通过global cache发现这些块已经在另一个实例的Cache里面,那么这些块就会通过Cache Fusion,在节点之
阅读全文
摘要:https://blogs.oracle.com/askmaclean/entry/gc_buffer_busy_gcs_log?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+orana+%28OraNA%29http://t.askmaclean.com/thread-438-1-1.htmlgc current block busy 等待是RAC中global cache全局缓存当前块的争用等待事件, 该等待事件时长由三个部分组成:Time to process current block reques
阅读全文
摘要:http://www.askmaclean.com/archives/undo%E8%87%AA%E5%8A%A8%E8%B0%83%E4%BC%98%E4%BB%8B%E7%BB%8D.htmlOracle 10gr2的后续版本中添加了撤销(UNDO)信息最短保留时间段自动调优的特性,不再仅仅依据参数UNDO_RETENTION的设定,其调优原则如下:当撤销表空间(UNDO TABLESPACE)大小固定,Oracle将根据表空间的大小和实际的系统负载动态调整撤销信息保存时间,该最短保存时间的具体长短基于撤销表空间大小的一定比例值公式换算后获得;它总是比设定的UNDO_RETENTION大,
阅读全文
摘要:http://blog.csdn.net/robinson1988/article/details/4904911SQL> select name,parameter1,parameter2,parameter3,wait_class from v$event_name where name in( 'log file sync','log file parallel write');NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS-----------------...
阅读全文
摘要:http://www.dbform.com/html/2013/2078.html(转载)v$latch视图解析今天重新阅读Latch的文档,按照我自己的理解,对于v$latch视图中的以下几个字段再作一些解释。以下参数都是对于Willing-to-wait模式的latch而言的,no-wait模式的latch获得情况统计值则在IMMEDIATE_GETS和IMMEDIATE_MISSES字段中。所有v$latch视图中统计值都是在获得了latch之后才更新的。GETS:当尝试获取一个latch并最终获得的时候,该值加1,在一次请求中无论是经过多少次自旋多少次Sleep,该值只会加1.MISS
阅读全文