关闭
侧边栏

LIBRARY CACHE PIN 等待事件

Posted by dbtan on 十二月 5th, 2009

LIBRARY CACHE PIN 等待事件:

Oracle文档上这样介绍这个等待事件:library cache pin是用来管理library cache的并发访问的,pin一个Object会引起相应的heap被载入内存中(如果此前没有被加载),pins可以在Null、Share、Exclusive这3个模式下获得,可以认为pin是一种特定形式的锁。

当library cache pin等待事件出现时,通常说明该pin被其他用户已非兼容模式持有。library cache pin的等待时间为3秒钟,其中有1秒钟用于PMON后台进程,即在取得pin之前最多等待3秒钟,否则就超时。library cache pin的参数有P1(KGL Handle Address)、P2(Pin Address)和P3(Encoded Mode & Namespace),常用的主要是P1和P2<
... ...
<阅读全文>

Library Cache Pin 及 Library Cache Lock分析

Posted by dbtan on 十二月 4th, 2009

Library Cache Pin 及 Library Cache Lock分析:

Oracle使用两种数据结构来进行Library Cache的并发访问控制:lockpin。lock可以被认为是解析锁,而pin则可以被认为是以读取或改变对象内容为目的所加的短时锁。之所以将Library Cache Object对象分开,使用多个锁定来保护,其中一个重要的目的就是为了提高并发。

lock比pin具有更高的级别。lock在对象handle上获得,在pin一个对象之前,必须首先获得该handle的锁定。handle可以理解为Library Cahce对象的Buffer Header,其中包含了库缓存对象的名称、标记、指向具体对象
... ...
<阅读全文>

SHARED_POOL_RESERVED_SIZE参数的设置及作用

Posted by dbtan on 十二月 3rd, 2009

SHARED_POOL_RESERVED_SIZE参数的设置及作用:

还有一个参数是需要提及的:shared_pool_reserved_size。该参数指定了保留的共享池空间,用于满足将来的大的连续的共享池空间请求。当共享池出现过多碎片,请求大块空间会导致Oracle大范围的查找并释放共享池内存来满足请求,由此可能会带来较为严重的性能下降,设置合适的shared_pool_reserved_size参数,结合_shared_pool_reserved_min_alloc参数可以用来避免由此导致的性能下降。

这个参数理想值应该大到足以满足任何对RESERVED LIST的内存请求,而无需数据库从共享池中刷新对象。这个参数的缺省值是shared_pool_size的5%
... ...
<阅读全文>

使用Flush Shared Pool缓解共享池问题

Posted by dbtan on 十二月 3rd, 2009

使用Flush Shared Pool缓解共享池问题:

前面提到,本质上ORA-04031多数是由于SQL编写不当引起,所以如果能够修改应用绑定变量是最好的解决之道。当然如果应用不能修改,或者不能强制变量绑定,那么Oracle还提供一种应急处理方法,强制刷新共享池。

alter system flush shared_pool;

刷新共享池可以帮助合并碎片(small chunks),强制老化SQL,释放共享池,但是这通常是不推荐的做法,这是因为:

·Flush Shared Pool会导致当前未使用的cursor被清除出共享池,如果这些SQL随后需要执行,那么数据库将经历大量的硬解析,
... ...
<阅读全文>


Copyright © 2009 - 2018 https://www.dbtan.com. All rights reserved.    京ICP备13006977号-1