Oracle内存结构 share pool library cache
来源:互联网 发布:学校三级卫生网络 编辑:程序博客网 时间:2024/05/22 01:48
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;NAMESPACE
VARCHAR2(15)
Library cache namespaceGETS
NUMBER
Number of times a lock was requested for objects of this namespaceGETHITS
NUMBER
Number of times an object's handle was found in memoryGETHITRATIO
NUMBER
Ratio ofGETHITS
toGETS
PINS
NUMBER
Number of times a PIN was requested for objects of this namespacePINHITS
NUMBER
Number of times all of the metadata pieces of the library object were found in memoryPINHITRATIO
NUMBER
Ratio ofPINHITS
toPINS
RELOADS
NUMBER
AnyPIN
of an object that is not the firstPIN
performed since the object handle was created, and which requires loading the object from diskINVALIDATIONS
NUMBER
The total number of times objects in this namespace were marked invalid because a dependent object was modifiedDLM_LOCK_REQUESTS
NUMBER
Number ofGET
requests lock instance locksDLM_PIN_REQUESTS
NUMBER
Number of PIN requests lock instance locksDLM_PIN_RELEASES
NUMBER
Number of release requests PIN instance locksDLM_INVALIDATION_REQUESTS
NUMBER
Number ofGET
requests for invalidation instance locksDLM_INVALIDATIONS
NUMBER
Number of invalidation pings received from other instances3.library cache的统计信息
- Oracle内存结构 share pool library cache
- shared pool之三:library cache结构/library cache object的结构-dump LibraryHandle
- Oracle 中的share Cursor 和 Library Cache (上)
- share pool 与buffer cache详细解读
- 深入shared pool 存储结构 library cache dictionary cache 解析SQL语句 硬解析 软解析
- Oracle Share Pool工作原理
- Oracle Share Pool内部管理机制
- Oracle内存结构:Shared Pool的详细信息
- Oracle内存全面分析(3)-1Oracle 的内存架构组成_1SGA.3共享池(Shared pool)的组成:库缓存(Library Cache)和字典缓存(Dictionary Cache)
- library cache —— latch: shared pool
- Library Cache Latch和Shared Pool Latch
- shared pool latch和library cache latch
- 深入理解Oracle中的shared pool与library cache组件及相关等待事件
- 深入理解Oracle中的shared pool与library cache组件及相关等待事件
- Oracle内存详解之二 Library cache 库缓冲
- Oracle内存详解之二 Library cache 库缓冲
- Oracle内存详解之 Library cache 库缓冲
- oracle library cache 初识
- 微软企业库--Activation error occured while trying to get instance of type Database
- 字符串中一个常出错的地方。
- POJ 2186 Popular Cows (强连通分量)
- Java异常
- JNI数据类型
- Oracle内存结构 share pool library cache
- android学习——DatePicker 和 TimePicker
- asp.net中操作word文档的方法
- 关于MFC和STL的使用
- 新手入门:学好Oracle的六条总结
- Windows中回收站(Recycle Bin)的存取方法
- struts2中取得文件的绝对路径的方法
- 学习英语的网站
- 使用virtualBox与linux中的minicom通信