原文链接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate=23w4l35u5_4&id=1523934.1用途   提出问题,得到帮助并分享您的心得   排错步骤   什么是shared pool?   专用术语   Literal SQL   Hard Parse(硬解析)   Soft Parse(软解析)   完全相同的语句?   Sharable SQL   语句的版本   Library Cac…
减轻Shared Pool负载 Parse一次并执行多次        在OLTP类型的应用中,最好的方法是只让一个语句被解析一次,然后保持这个cursor的打开状态,在需要的时候重复执行它.这样做的结果是每个语句只被Parse了一次(不管是soft parse还是hard parse).显然,总会有些语句很少被执行,所以作为一个打开的cursor维护它们是一种浪费.        请注意一个session最多只能使用参数:open_cursors定义的cursor数,保持cursor打开会增加…
[20190319]shared pool latch与library cache latch的简单探究.txt --//昨天看Oracle DBA手记3:数据库性能优化与内部原理解析.pdf 电子书,看了eygle的关于latch之类的测试.--//自己也重复测试看看. --//首先说明一下11g已经不存在这个shared pool latch,改为mutexes.所以测试在10g下进行:--//注意不要在生产系统做这样的测试!! 1.环境:SCOTT@test> @ &r/ver1POR…
产生library cache latch原因The library cache latches protect the cached SQL statements and objects' definitions held in the library cache within the shared pool. The library cache latch must be acquired in order to add a new statement to the library cach…
latch:library cache --desc v$librarycache; latch:library cache用于保护hash bucket.library cache lock保护HANDLE.library cache pin保护library cache object--LCO.从10G开始,library cache lock和library cache pin被MUTEX部分取代.暂时不讨论MUTEX.latch:library cache的数量:SYS@ bys3>se…
http://blog.csdn.net/panfelix/article/details/38347059   buffer pool 和shared pool 详解 http://blog.csdn.net/panfelix/article/details/38347137 shared pool 和buffer pool 详解(之二, Cache Buffers LRU Chain.Cache Buffers LRU Chain闩锁竞争与解决) http://blog.csdn.net/n…
Oracle Library Cache 的 lock 与 pin 说明 一. 相关的基本概念 之前整理了一篇blog,讲了Library Cache 的机制,参考: Oracle Library cache 内部机制 说明 http://blog.csdn.net/tianlesoftware/article/details/6629869 在这个机制中,没有详细讲library 上的lock 和pin.这2个概念对DB 的理解非常重要. 所以单独拿出来,进行说明. 根据hellodba 和…
Oracle内存详解之 Library cache 库缓冲 2017年11月09日 11:38:39 阅读数:410更多 个人分类: 体系结构 Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedure,trigger)的信息,以及这些对象所依赖的table,index,view等对象的信息. Library cache需要解决三个问题: 1.快速定位…
Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedure,trigger)的信息,以及这些对象所依赖的table,index,view等对象的信息. Library cache需要解决三个问题: 1.快速定位的问题:Library cache中对象众多,Oracle如何管理这些对象,以便服务进程可以迅速找到他们需要的信息.比如某个服务进程需要迅速定位…
Oracle SGA是oracle的内存结构,存放着oracle通过oracle进程读写的内存数据.sga分为好多组件,比如shared pool,buffer cache,redo log buffer等等.shared pool又分为library cache,data dictionary cache. library cache是存sql语句及其分析结果的内存结构 data dictionary cache是存放数据字典的内存结构 buffer cache存的就是数据. 我们分别来看这3…
前面介绍的 shared pool,library cache结构,都是为了说明一条SQL是如何被解析的.先看下面的图: 图中涉及的各结构简单介绍 父HANDLE,里面有父游标堆0的地址.. 父游标堆0:有指向一个或多个子游标的HANDLE的句柄地址 父游标在第一次打开时被锁定,直到其他所有的session都关闭该游标后才被解锁.当父游标被锁定的时候是不能被交换出librarycache的,只有在解锁以后才能被交换出library cache.父游标被交换出内存时父游标对应的所有子游标也被交换出…
一:硬解析造成的shared pool latch 争用: 每一个sql被执行之前,先要到library cache中根据hash_value查找parent cursor,这就需要先获得library cache latch: 也就是说硬解析和软解析都有可能造成latch 争用 查看这些非常相似的语句: select orguser0_.ID as ID359_, orguser0_.NAME as NAME359_, orguser0_.EMAIL as EMAIL359_, orguser…
研究了几天shared pool,没想到忽然就撞到问题上来了.作为一个案例写出来给大家参考一下吧. 问题起因是公司做短信群发,就是那个18万买的4000字的短信小说(嘘,小声点,我也没看过...).群发的时候每隔一段时间就会发生一次消息队列拥堵的情况在数据库内部实际上是向一个数据表中记录发送日志. 我们介入来检查数据库的问题,在一个拥堵时段我开始诊断: SQL> select sid,event,p1,p1raw from v$session_wait; SID EVENT P1 P1RAW -…
关于library cache相关的LATCH非常多,名称差不多,我相信一些人对这些概念还是有些晕,我之前也有些晕,希望此文可以对这些概念有个更为清晰的理解,本文主要学习library cache pin 前期相关文章 http://blog.itpub.net/9240380/ 结论 1,library cache pin是用于并发的一种特殊锁,它不是LATCH2,library cache pin适用于正在执行存储过程时,不能同时去编译存储过程,后者则会产生此等待事件,目的即防止并发修改存储…
http://blog.csdn.net/wanghai__/article/details/4881492 Buffer Cache LRU与Dirty List 在Buffer Cache中,Oracle通过几个链表进行内存管理. LRU list用于维护内存中的Buffer,按照LRU算法进行管理.数据库初始化时,所有的Buffer都被Hash到LRU list上管理.当需要从数据文件上读取数据时,首先要在LRU List上寻找Free的Buffer,然后读取数据到Buffer Cache…
先来张大图: 结合上图来说明一下解析的各个步骤涉及的锁. 软解析.硬解析.软软解析区别的简单说明: 为了将用户写的sql文本转化为oracle认识的且可执行的语句,这个过程就叫做解析过程. 解析分为硬解析和软解析,SQL语句第一次解析时必须进行硬解析 一句话说明硬解析与软解析的区别是: 硬解析=需要生成执行计划   软解析=不需要生成执行计划 在Oracle中存在两种类型的SQL语句,一类为DDL语句,不共享使用,也就是每次执行都需要进行硬解析.还有一类就是DML语句,会进行硬解析或软解析. 硬…
本文中,我们将讨论共享池(Shared Pool)中的各种内存保护结构,即Latches,Locks,Pins和Mutexes. 1.  Lathes 当在库缓冲(Libraray Cache)中创建新对象而没有足够的自由内存(没有足够大的单个自由内存块(Chunk of Free Memory))时,Oracle就会用LRU算法从相应哈希链表上分离(Delink)已有对象,并将新对象加入哈希链表上,该过程中,都会涉及各个对象中前后地址指针的修改,也会涉及各对象在自由链表及库缓冲链表间的移动.…
11g等待事件之library cache: mutex X 作者: dbafree 日期: 2012 年 07 月 01 日发表评论 (0)查看评论   library cache: mutex X替代了之前的library cache latch,主要作用是在hash bucket中定位handle时使用.(比如SQL硬解析时,需要往hash bucket中新增一个cursor时,需要library cache latch).如下图所示:文档上面的解释如下:The library cache…
Oracle Shared Pool 原理 由于shared pool中最重要的是library cache,所以本文主要讲解Library cache的结构,library cache latch,library cache lock,library cache pin. What is shared pool? Shared pool是SGA中的一部分,由于它是SGA的一部分,这意味着它可以被所有的进程所访问,Shared Pool当中主要包含了2部分:library cache和dicti…
业务系统数据库夯住,数据库内大量的library cache: mutex X及latch: shared pool等待,alert日志信息如下 Tue Sep :: WARNING: inbound connection timed out (ORA-) Tue Sep :: WARNING: inbound connection timed out (ORA-) Tue Sep :: WARNING: inbound connection timed out (ORA-) Tue Sep :…
Shared pool物理层面上由许多内存块(chunck)组成.从逻辑功能划分,Shared pool主要由三部分组成:Library cache,Dictionary cache和Control Structure.本文主要讲述 Library cache. Library cache library cache最主要的功能就是存放用户提交的SQL语句,SQL语句相关的解析树(解析树也就是对SQL语句中所涉及到的所有对象的展现)--->共享SQL区(shared SQL areas),私有S…
本文了解下等待事件library cache lock,进一步理解library cache,之前的文章请见:  深入理解shared pool共享池之library cache的library cache pin系列三 相关图例 为了真观理解library cache pin及library cache lock的联系,有个图: 结论 1,道理同library cache pin一样,诊断library cache lock也要使用v$session及dba_kgllock2, library…
背景 继续上文:深入理解shared pool共享池之library cache系列一,学习library cache数据结构,本文主要学习library cache object(lco)的数据结构:data blocks 为了直观理解,先放一张网上关于DATA BLOCK中存储不同HEAP的结构图: 结论 1,data block是存储不同HEAP的一个结构,每个HEAP存储的内容不同2,分析heap请最终查看ANONYMOUS LIST:对应的library object handle中的…
1. Shared Pool组成 Shared Pool由许多区间(Extent)组成,这些区间又由多个连续的内存块(Chunk)组成,这些内存块大小不一.从逻辑功能角度,Shared pool主要包含三个部分:Library Cache,Dictionary Cache和Control Structure.而这里,我们主要介绍其中的Library Cache.2. Library Cache Library Cache主要用于存储系统中的可执行对象(例如:SQL语句,PL/SQL块及相关对象等…
结论 1,oradebug dump library_cache不同级别dump的library cache内容及粒度会有所区别,具体见测试开始部分2,本文测示基于oradebug dump library_cache 32,即产生最为详细的library cachem内容,进而分析library cache数据结构3,关于创建表的DDL,表,以及基于表的SQL或DML,皆会存储到不同的bucket的library object handle4,大小写不同的SQL会存储到不同的bucket的li…
上一篇blog只是从概念上理解Library cache,本篇则是将Library cache从内存中dump出来,看看其结构. 基本命令 ALTER SESSION SET EVENTS 'immediate trace name LIBRARY_CACHE level LL'; 其中LL代表Level级别,对于9.2.0及以后版本,不同Level含义如下: Level =1 ,转储Library cache统计信息 Level =2 ,转储hash table概要 Level =4 ,转储L…
Buffer cache 和 share pool 是sga中最重要最复杂的部分. 一.Buffer Cache 通常数据的读取.修改都是通过buffer cache 来完成的.buffer cache 中的数据 ,oracle是通过LRU 和dirty list 这样的链表来管理的. 除了这2个,还有 hash bucket 和 cache buffer chain hash bucket:查找方法类似老式图书馆查书 二.Shared Pool 1.shared pool 是oracle sg…
https://www.sqlskills.com/help/latches/ (Companion SQL Server Wait Types Library) This site lists all latch classes in SQL Server 2005 onward and gives detailed information about where they occur inside SQL Server. I created this site to be a compreh…
Shared pool 一.Shared pool的引入 当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程: 1.语法检查(syntax check)       检查此sql的拼写是否语法.2.语义检查(semantic check)    诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限.3.对sql语句进行解析(prase)    利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execu…
Library cache lock/pin 一.概述 ---本文是网络资料加metalink 等整理得来一个实例中的library cache包括了不同类型对象的描述,如:游标,索引,表,视图,过程,等等. 这些对象不能在他们被使用的时候改变,他们在被使用的时候会被一种library locks and pins的机制锁住. 一个会话中,需要使用一个对象,会在该对象上先得到一个library lock(null, shared or exclusive模式的)这是为了,防止其他会话也访问这个对…