关于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的并发控制:lock 和 pin.Lock比pin具有更高的级别. Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.锁定主要有三种模式: Null,share,Exclusive.在读取访问对象时,通常需要获取Null(空)模式以及share(共享)模式的锁定.在修改对象时,需要获得Exclusive(排他)锁定. 在锁定了Library Cache对象以后,一个进程在访问之前必须pin该对象.同样pi…
研究了几天shared pool,没想到忽然就撞到问题上来了.作为一个案例写出来给大家参考一下吧. 问题起因是公司做短信群发,就是那个18万买的4000字的短信小说(嘘,小声点,我也没看过...).群发的时候每隔一段时间就会发生一次消息队列拥堵的情况在数据库内部实际上是向一个数据表中记录发送日志. 我们介入来检查数据库的问题,在一个拥堵时段我开始诊断: SQL> select sid,event,p1,p1raw from v$session_wait; SID EVENT P1 P1RAW -…
我们进一步来讨论一下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…
基本命令: 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 ,转储Library cache对象,只包含基本信息Level =8 ,转储Library cache对象,包含详细信息(包括child re…
原文链接: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共享池之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 一.Shared pool的引入 当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程: 1.语法检查(syntax check)       检查此sql的拼写是否语法.2.语义检查(semantic check)    诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限.3.对sql语句进行解析(prase)    利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execu…
共享池shared pool的概念用户提交的命令:解析.执行用户命令的解析解析的过程是一个相当复杂的过程,它要考虑各种可能的异常情况比如SQL语句涉及到的对象不存在.提交的用户没有权限等等而且还需要考虑如何执行SQL语句采用什么方式去获职数据等解析的最终结果是要产生oracle自己内部的执行计划从而指导SQL的执行过程.可以看到,解析的过程是一个非常消耗资源的过程.因此oracle在解析用户提交的SQL语句的过程中如果对每次出现的新的SQL语句,都按照标准过程完整的从头到尾解析一遍的话效率太低尤…