您好,欢迎访问一九零五行业门户网

Librarycache内部机制详解

library cache是shared pool的一部分,它几乎是oracle内存结构中最复杂的一部分,主要存放shared curosr(sql)和plsql对象(fun
library cache是shared pool的一部分,它几乎是oracle内存结构中最复杂的一部分,主要存放shared curosr(sql)和plsql对象(function,procedure,trigger)的信息,以及这些对象所依赖的table,index,view等对象的信息。
library cache需要解决三个问题:
1.快速定位的问题:library cache中对象众多,oracle如何管理这些对象,以便服务进程可以迅速找到他们需要的信息。比如某个服务进程需要迅速定位某个sql是否存在于library cache中。
2.关系依赖的问题:library cache中的对象存在复杂的依赖关系,当某个objec失效时,可以迅速将依赖其的对象也置为失效状态。比如某个表发生了结构变化,依赖其的sql语句需要重新解析。
3.并发控制的问题:library cache中必须有一个并发控制的机构,比如锁机制,来管理大量共享对象的并发访问和修改的问题,比如某个sql在重新编译的同时,其所依赖的对象不能被修改。
library cache结构:
oracle利用hash table结构来解决library cache中快速定位的问题,,hash table就是很多hash bucket组成的数组:
原理与buffer cache中定位block的方式相同,将对象信息(比如sql)hash定位到某个hash bucket中,然后顺序扫描bucket中的 list,实现快速定位对象的目的。
library cache handle是对象的一个指针,其中的namespace属性表示其指向的对象的类型:比如crsr(cursor),tabl(table),indx(index) ,prod(procedure),trig(trigger)等等。
其它类似信息

推荐信息