Oracle内存结构 share pool library cache

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;
ColumnDatatypeDescription
NAMESPACEVARCHAR2(15)Library cache namespace
GETSNUMBERNumber of times a lock was requested for objects of this namespace
GETHITSNUMBERNumber of times an object's handle was found in memory
GETHITRATIONUMBERRatio ofGETHITStoGETS
PINSNUMBERNumber of times a PIN was requested for objects of this namespace
PINHITSNUMBERNumber of times all of the metadata pieces of the library object were found in memory
PINHITRATIONUMBERRatio ofPINHITStoPINS
RELOADSNUMBERAnyPINof an object that is not the firstPINperformed since the object handle was created, and which requires loading the object from disk
INVALIDATIONSNUMBERThe total number of times objects in this namespace were marked invalid because a dependent object was modified
DLM_LOCK_REQUESTSNUMBERNumber ofGETrequests lock instance locks
DLM_PIN_REQUESTSNUMBERNumber of PIN requests lock instance locks
DLM_PIN_RELEASESNUMBERNumber of release requests PIN instance locks
DLM_INVALIDATION_REQUESTSNUMBERNumber ofGETrequests for invalidation instance locks
DLM_INVALIDATIONSNUMBERNumber of invalidation pings received from other instances

3.library cache的统计信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值