library cache pin或lock的简单解决办法

library cache pin或lock的简单解决办法

ID:1646935

大小:64.50 KB

页数:9页

时间:2017-11-12

library cache pin或lock的简单解决办法_第1页
library cache pin或lock的简单解决办法_第2页
library cache pin或lock的简单解决办法_第3页
library cache pin或lock的简单解决办法_第4页
library cache pin或lock的简单解决办法_第5页
资源描述:

《library cache pin或lock的简单解决办法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、librarycachepin/lock的简单解决办法近日数据库出现librarycachepin的问题,网上转过来一个简单的查询办法,以备日后使用。 Oracle使用两种数据结构来进行sharedpool的并发控制:lock和pin.Lock比pin具有更高的级别.Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.锁定主要有三种模式:Null,share,Exclusive.在读取访问对象时,通常需要获取Null(空)模式以及share(共享)模式的锁定.在修改对象时,需要获得Exclusive(排他)锁定.在

2、锁定了LibraryCache对象以后,一个进程在访问之前必须pin该对象.同样pin有三种模式,Null,shared和exclusive.只读模式时获得共享pin,修改模式获得排他pin.通常我们访问、执行过程、Package时获得的都是共享pin,如果排他pin被持有,那么数据库此时就要产生等待.在很多statspack的report中,我们可能看到以下等待事件: Top5WaitEvents~~~~~~~~~~~~~~~~~                                            Wait    %TotalE

3、vent                                              Waits Time(cs)  WtTime---------------------------------------------------------------------------librarycachelock                                75,884   1,409,500  48.44latchfree                                    34,297,906  

4、 1,205,636  41.43librarycachepin                                    563     142,491   4.90dbfilescatteredread                           146,283      75,871   2.61enqueue                                            2,211      13,003    .45         -------------------------------

5、------------------------------                             这里的librarycachelock和librarycachepin都是我们关心的.接下来我们就研究一下这几个等待事件.(一).LIBRARYCACHEPIN等待事件Oracle文档上这样介绍这个等待事件:"librarycachepin"是用来管理librarycache的并发访问的,pin一个object会引起相应的heap被载入内存中(如果此前没有被加载),Pins可以在三个模式下获得:NULL,SHARE,EXCLUSIV

6、E,可以认为pin是一种特定形式的锁.当LibraryCachePin等待事件出现时,通常说明该Pin被其他用户已非兼容模式持有."librarycachepin"的等待时间为3秒钟,其中有1秒钟用于PMON后台进程,即在取得pin之前最多等待3秒钟,否则就超时."librarycachepin"的参数如下,有用的主要是P1和P2:               P1-KGLHandleaddress.               P2-Pinaddress               P3-EncodedMode&Namespace"LIBRARY

7、CACHEPIN"通常是发生在编译或重新编译PL/SQL,VIEW,TYPES等object时.编译通常都是显性的,如安装应用程序,升级,安装补丁程序等,另外,"ALTER","GRANT","REVOKE"等操作也会使object变得无效, 可以通过object的"LAST_DDL"观察这些变化.当object变得无效时,Oracle会在第一次访问此object时试图去重新编译它,如果此时其他session已经把此objectpin到librarycache中,就会出现问题,特别时当有大量的活动session并且存在较复杂的dependence时

8、.在某种情况下,重新编译object可能会花几个小时时间,从而阻塞其它试图去访问此object的进程.下面让我们通过一个例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。