Oracle内存结构 share pool library cache
2011-10-18 16:01
495 查看
1.library cache的作用
library cache最主要的功能就是存放用户提交的SQL语句、SQL语句相关的解析树(解析树也就是对SQL语句中所涉及到的所有对象的展现)、执行计划、用户提交的PL/SQL程序块(包括匿名程序块、存储过程、包、函数等)以及它们转换后能够被oracle执行的代码等。为了对这些内存结构进行管理,还存放
了很多控制结构,包括lock、pin、dependency table等。
library cache还存放了很多的数据库对象的信息,包括表、索引等等。有关这些数据库对象的信息都是从dictionary cache中获得的。如果用户对library cache中的对象信息进行了修改,则这些修改会返回到dictionary
cache中。
在library cache中存放的所有的信息单元都叫做对象(object),这些对象可以分成两类:一类叫存储对象,也就是上面所说的数据库对象。它们是通过显式的 SQL语句或PL/SQL程序创建出来的,如果要删除它们,也必须通过显示的SQL命令进行删除。这类对象包括表、视图、索引、包、函数等等;另一类叫做过渡对象,也就是上面所说的用户提交的SQL语句或者提交的PL/SQL程序块等。这些过渡对象是在执行SQL语句或PL/SQL程序的过程中产生的,并
缓存在内存里。如果实例关闭则删除,或者由于内存不足而被交换出去,从而被删除。
当用户提交SQL语句或PL/SQL程序块到oracle的shared pool以后,在library cache中生成的一个可执行的对象,这个对象就叫做游标(cursor)。不要把这里的游标与标准SQL(ANSI SQL)的游标混淆起来了,标准SQL的游标是指返回多条记录的SQL形式,需要定义、打开、关闭。下面所说到的游标如无特别说明,都是指library cache中的可执行的对象。游标是可以被所有进程共享的,也就是说如果100个进程都执行相同的SQL语句,那么这100个进程都可以同时使用该SQL
语句所产生的游标,从而节省了内存。每个游标都是由library cache中的两个或多个对象所体现的,至少两个对象。一个对象叫做父游标(parent cursor),包含游标的名称以及其他独立于提交用户的信息。从v$sqlarea视图里看到的都是有关父游标的信息;另外一个或多个对象叫做子游标 (child cursors),如果SQL文本相同,但是可能提交SQL语句的用户不同,或者用户提交的SQL语句所涉及到的对象为同名词等,都有可能生成不同的子游 标。因为这些SQL语句的文本虽然完全一样,但是上下文环境却不一样,因此这样的SQL语句不是一个可执行的对象,必须细化为多个子游标后才能够执行。子
游标含有执行计划或者PL/SQL对象的程序代码块等。
2.library cache的信息获取
select * from v$libraryCache;Column | Datatype | Description |
---|---|---|
NAMESPACE | VARCHAR2(15) | Library cache namespace |
GETS | NUMBER | Number of times a lock was requested for objects of this namespace |
GETHITS | NUMBER | Number of times an object's handle was found in memory |
GETHITRATIO | NUMBER | Ratio ofGETHITSto GETS |
PINS | NUMBER | Number of times a PIN was requested for objects of this namespace |
PINHITS | NUMBER | Number of times all of the metadata pieces of the library object were found in memory |
PINHITRATIO | NUMBER | Ratio ofPINHITSto PINS |
RELOADS | NUMBER | AnyPINof an object that is not the first PINperformed since the object handle was created, and which requires loading the object from disk |
INVALIDATIONS | NUMBER | The total number of times objects in this namespace were marked invalid because a dependent object was modified |
DLM_LOCK_REQUESTS | NUMBER | Number ofGETrequests lock instance locks |
DLM_PIN_REQUESTS | NUMBER | Number of PIN requests lock instance locks |
DLM_PIN_RELEASES | NUMBER | Number of release requests PIN instance locks |
DLM_INVALIDATION_REQUESTS | NUMBER | Number ofGETrequests for invalidation instance locks |
DLM_INVALIDATIONS | NUMBER | Number of invalidation pings received from other instances |
3.library cache的统计信息
相关文章推荐
- share pool library cache oracle 内存结构
- oracle 内存结构 share pool sql解析的过程
- Oracle内存结构详解(三)--管理Oracle Share Pool
- Oracle Shared Pool之Library Cache
- oracle内存结构
- Database Performance: How to reduce "library cache: mutex X" waits for scalability in the Oracle dat
- oracle内存结构示意图
- Oracle内存结构详解(三)--Oracle管理Share Pool
- Oracle体系结构:内存结构和进程结构-体系架构
- Oracle之内存结构(SGA、PGA)
- Oracle内存结构研究-PGA篇
- oracle内存结构
- oracle buffer cache深度分析:概念以及内存结构
- Investigate the Oracle Library CacheHit Ratio
- Oracle关闭遇到ORA-00600 【LibraryCacheNotEmptyOnClose】的错误
- oracle 10g 刷新share pool里的执行计划
- Oracle Library Cache 的 lock 与 pin 说明
- 深入shared pool 存储结构 library cache dictionary cache 解析SQL语句 硬解析 软解析
- oracle内存结构学习记录——SGA
- Postmaster的Shared Memory中的shared buffer pool内存结构