Shared pool】的更多相关文章

原文链接: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 一.Shared pool的引入 当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程: 1.语法检查(syntax check)       检查此sql的拼写是否语法.2.语义检查(semantic check)    诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限.3.对sql语句进行解析(prase)    利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execu…
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…
构建实验数据 --使用NC50用户查询(会话1) SQL> conn NC50/NC50 Connected. SQL> create table emp as select * from scott.emp; Table created. SQL SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- ---------…
前面介绍的 shared pool,library cache结构,都是为了说明一条SQL是如何被解析的.先看下面的图: 图中涉及的各结构简单介绍 父HANDLE,里面有父游标堆0的地址.. 父游标堆0:有指向一个或多个子游标的HANDLE的句柄地址 父游标在第一次打开时被锁定,直到其他所有的session都关闭该游标后才被解锁.当父游标被锁定的时候是不能被交换出librarycache的,只有在解锁以后才能被交换出library cache.父游标被交换出内存时父游标对应的所有子游标也被交换出…
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中的…
共享池shared pool的概念用户提交的命令:解析.执行用户命令的解析解析的过程是一个相当复杂的过程,它要考虑各种可能的异常情况比如SQL语句涉及到的对象不存在.提交的用户没有权限等等而且还需要考虑如何执行SQL语句采用什么方式去获职数据等解析的最终结果是要产生oracle自己内部的执行计划从而指导SQL的执行过程.可以看到,解析的过程是一个非常消耗资源的过程.因此oracle在解析用户提交的SQL语句的过程中如果对每次出现的新的SQL语句,都按照标准过程完整的从头到尾解析一遍的话效率太低尤…
减轻Shared Pool负载 Parse一次并执行多次        在OLTP类型的应用中,最好的方法是只让一个语句被解析一次,然后保持这个cursor的打开状态,在需要的时候重复执行它.这样做的结果是每个语句只被Parse了一次(不管是soft parse还是hard parse).显然,总会有些语句很少被执行,所以作为一个打开的cursor维护它们是一种浪费.        请注意一个session最多只能使用参数:open_cursors定义的cursor数,保持cursor打开会增加…
1.1       现象描写叙述 数据库节点响应缓慢,部分用户业务受到影响. 查看数据库告警日志,開始显示ORA-07445错误,然后是大量的ORA-04031错误和ORA-00600错误. 检查数据库日志,数据库仍处于活动状态的信息例如以下: Sat Jul 17 07:51:52 2010 Thread 1 advanced to log sequence 266272   Current log# 2 seq# 266272 mem# 0: /dev/rlv_redo121   Curre…
In this Document   Purpose   Troubleshooting Steps   References APPLIES TO: Oracle Database - Enterprise Edition - Version 8.0.6.3 and later Information in this document applies to any platform. PURPOSE The purpose of this document is to provide some…
[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…
本文中,我们将讨论共享池(Shared Pool)中的各种内存保护结构,即Latches,Locks,Pins和Mutexes. 1.  Lathes 当在库缓冲(Libraray Cache)中创建新对象而没有足够的自由内存(没有足够大的单个自由内存块(Chunk of Free Memory))时,Oracle就会用LRU算法从相应哈希链表上分离(Delink)已有对象,并将新对象加入哈希链表上,该过程中,都会涉及各个对象中前后地址指针的修改,也会涉及各对象在自由链表及库缓冲链表间的移动.…
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块及相关对象等…
研究了几天shared pool,没想到忽然就撞到问题上来了.作为一个案例写出来给大家参考一下吧. 问题起因是公司做短信群发,就是那个18万买的4000字的短信小说(嘘,小声点,我也没看过...).群发的时候每隔一段时间就会发生一次消息队列拥堵的情况在数据库内部实际上是向一个数据表中记录发送日志. 我们介入来检查数据库的问题,在一个拥堵时段我开始诊断: SQL> select sid,event,p1,p1raw from v$session_wait; SID EVENT P1 P1RAW -…
Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin.Lock比pin具有更高的级别. Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.锁定主要有三种模式: Null,share,Exclusive.在读取访问对象时,通常需要获取Null(空)模式以及share(共享)模式的锁定.在修改对象时,需要获得Exclusive(排他)锁定. 在锁定了Library Cache对象以后,一个进程在访问之前必须pin该对象.同样pi…
我们进一步来讨论一下shared pool的处理: 先进行相应查询,获得测试数据: [oracle@jumper udump]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.3.0 - Production on Thu Aug 26 10:21:54 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i…
关于shared pool的深入探讨(二)   作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道]链接:http://www.eygle.com/archives/2004/10/shared_pool-2.html 我们继续把前面的问题展开一下. 其实我们可以从数据库内部监控shared pool的空间碎片情况.这涉及到一个内部视图x$ksmsp X$KSMSP的名称含义为: [K]ernal [S]torage [M]emory Ma…
关于shared pool的深入探讨(一)   作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道]链接:http://www.eygle.com/archives/2004/10/shared_pool-1.html 关于shared pool的设置一直是一个争议较多的内容.很多文章上说,shared pool设置过大会带来额外的管理上的负担,从而在某些条件下会导致性能的下降. 那么这个管理上的负担指的是什么内容呢?本文对这个内容作一定的…
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 :…
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…
Oracle数据库简单介绍 对象关系型数据库 重点:一致性+性能 一致性优于性能 处理模型:C/S模型 Client:用户和用户进程             Server:服务器进程,实例,数据库本身 概念:实例 instance 后台进程+共享内存 用于管理和控制数据库           数据库 database 物理文件的集合,为实例提供数据,(三类文件)数据文件,控制文件,日志文件,参数文件等 数据库服务器 database server 软件+实例+数据库 Oracle软件+Oracl…
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…
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…
今天rac中有一个节点asm实例起不来包了ora-000371的错误,错误贴在下面: [oracle@rac2 dbs]$ srvctl start asm -n rac2 PRKS-1009 : Failed to start ASM instance "+ASM2" on node "rac2", [PRKS-1009 : Failed to start ASM instance "+ASM2" on node "rac2"…
Oracle共享池 Oracle共享池(Share Pool)属于SGA,由库高速缓存(library cache)和数据字典高速缓存(data dictionary cache)组成. 库高速缓存 Oracle引入库高速缓存的目的是共享SQL和PL/SQL代码.   服务器进程执行SQL和PL/SQL时,首先会进入库高速缓存查找是否有相同的SQL,如果有,就不再进行后续的编译处理,直接使用已经编译的SQL和执行计划.   Oracle通过比较两条SQL语句的正文来确定两条SQL是否相同,所以如…
上一篇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…
关于library cache相关的LATCH非常多,名称差不多,我相信一些人对这些概念还是有些晕,我之前也有些晕,希望此文可以对这些概念有个更为清晰的理解,本文主要学习library cache pin 前期相关文章 http://blog.itpub.net/9240380/ 结论 1,library cache pin是用于并发的一种特殊锁,它不是LATCH2,library cache pin适用于正在执行存储过程时,不能同时去编译存储过程,后者则会产生此等待事件,目的即防止并发修改存储…