Libraey Cache Data Access
library cache是关于SQL语句的SGA中的一系列的链表,
library cache是通过访问一系列的hash buckets,实现使用hash table,
每个特定的hash值,链接到SQL语句
链接到SQL语句挂载hash buckets的列表,
每个语句在特定的列表上Hashes到一个hash值
链表是一系列的处理或引用,事实上,SQL语句本身组成了句柄,在每个句柄下,可能有多个相同SQL
语句的版本,同一条SQL语句多个版本发生在如下情况:
--指向不同的对象(不同的用户)
--绑定变量类型不同
--优化器模式不同或者NLS设置不同
多版本的信息存储在单独的子library cache cursors中,当一条新的SQL被解析时,
语句被Hash后,被放到一个链表于hash值关联。不同的SQL语句可能有相同的
HASH值.为了找到library cache中的sql语句,SQL语句被hash后,扫描列表来查找匹配的SQL语句,如果存在多个版本,逐个匹配。
匹配SQL语句时通过访问parent library cursor,余下的信息存在在子游标中,
如果多个版本存在,多个版本的子游标依次访问。