永发信息网

library cache pin与library cache lock是什么地方的等待事件,一般说明什么问题

答案:1  悬赏:10  手机版
解决时间 2021-11-26 04:15
library cache pin与library cache lock是什么地方的等待事件,一般说明什么问题
最佳答案
Session b:
SQL> create orreplace procedure delete_data
2 as
3 begin
4 loop
Delete fromTEXTAUTO_FOLDERARTICLE where LASTPOSTDATEExit whensql%notfound;--dml语句中隐式游标属性进行控制
Commit;
End loop;
9 Commit;
10 end;
11 /

出现了library cache pin等待事件:
SQL> selectevent,count(*) from v$session group by event;

EVENT COUNT(*)
--------------------------------------------------------------------------
SQL*Net messagefrom client 92
library cachepin 1
jobq slavewait 1
rdbms ipcmessage 10
smon timer 1
pmon timer 1
db file scatteredread 1
Streams AQ: qmnslave idle wait 1
SQL*Net message toclient 1
Streams AQ: qmncoordinator idle wait 1
Streams AQ: waitingfor time management or cleanup tasks 1

11 rows selected.

分析一下上述的library cache pin是如何造成的:首先系统运行了该procedure,此时该对象已经被pin到内存,占用了一个share pin和一个null lock,而此时在进程还没有释放此pin之前再次create procedure,此时要获取一个exclusive pin和exclusivelock,由于之前的share pin和exclusivepin不共存,此时就会产生一个library cache pin等待。

这里注意一下两个基表x$kglpn和x$kgllk,对于解决library cache pin和lock太轻松了。
SQL> descx$kglpn;
Name Null? Type
------------------------------------------------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KGLPNADR RAW(8)
KGLPNUSE RAW(8)
KGLPNSES RAW(8)
KGLPNHDL RAW(8)
KGLPNLCK RAW(8)
KGLPNCNT NUMBER
KGLPNMOD NUMBER
KGLPNREQ NUMBER
KGLPNDMK NUMBER
KGLPNSPN NUMBER

通过等待事件的p1raw参数联合kglpnhdl来获取kglpnuse,这里的kglpnmod和kglpnreq和v$lock的lmode和request基本相同,kglpnmod=2表示此时这个session占有了library cache pin而造成了kglpnreq=3这个session的等待。
SQL> selectkglpnuse,kglpnhdl,kglpnmod,kglpnreq from x$kglpn where kglpnhdl in (selectp1raw from v$session where event='library cache pin');

KGLPNUSE KGLPNHDL KGLPNMOD KGLPNREQ
-------------------------------- ---------- ----------
00000000D822759000000000DD876D98 0 3
00000000DA22534000000000DD876D98 2 0

联合v$session的saddr来获取sid然后可以通过v$process来kill掉没有释放的进程。
SQL> selectb.spid,a.sid from v$session a,v$process b where a.saddr in ('00000000DA225340') and a.paddr=b.addr;

SPID SID
----------------------
11232 195

而如果此时再重新编译一下该procedure,同样需要获取一个该对象的lock锁定,由于上述重建procedure还在视图获取该对象的librarycache lock的exclusive lock,那么当然此时出现librarycache lock是当然的。

SQL> alterprocedure delete_data compile;

SQL> selectevent,count(*) from v$session group by event;

EVENT COUNT(*)
--------------------------------------------------------------------------
SQL*Net messagefrom client 91
library cachepin 1
jobq slavewait 1
rdbms ipcmessage 10
smon timer 1
pmon timer 1
db file scatteredread 1
library cachelock 1
Streams AQ: qmnslave idle wait 1
SQL*Net message toclient 1
Streams AQ: qmncoordinator idle wait 1

SQL> descx$kgllk;
Name Null? Type
------------------------------------------------- ----------------------------
ADDR RAW(8)
INDX NUMBER
INST_ID NUMBER
KGLLKADR RAW(8)
KGLLKUSE RAW(8)
KGLLKSES RAW(8)
KGLLKSNM NUMBER
KGLLKHDL RAW(8)
KGLLKPNC RAW(8)
KGLLKPNS RAW(8)
KGLLKCNT NUMBER
KGLLKMOD NUMBER
KGLLKREQ NUMBER
KGLLKFLG NUMBER
KGLLKSPN NUMBER
KGLLKHTB RAW(8)
KGLNAHSH NUMBER
KGLLKSQLID VARCHAr2(13)
KGLHDPAR RAW(8)
KGLHDNSP NUMBER
USER_NAME VARCHAr2(30)
KGLNAOBJ VARCHAr2(60)

获取blocking session的方法基本相同,也是通过p1raw参数联合kgllkhdl来获取kgllkuse,最后联合v$session来获取sid,进而通过v$process获取spid,杀掉进程后即可
SQL> selectkgllkhdl,kgllkuse,kgllkreq,kgllkmod from x$kgllk where kgllkhdl in (Selectp1raw from v$session where event='library cache lock');

KGLLKHDL KGLLKUSE KGLLKREQ KGLLKMOD
-------------------------------- ---------- ----------
00000000DD876D9800000000DA225340 0 1
00000000DD876D9800000000D8227590 0 3
00000000DD876D9800000000D821FC40 3 0

通过上述的library cache pin和library cache lock等待事件的分析和诊断,可以看出数据字典基表可以提供我们非常的信息,而帮助解决一些比较棘手的案例,当然上述我们也可以利用oradebug然后通过trace文件来诊断,不过相对trace文件较难以阅读,需要一定的功底,.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
final cut的声相改成0怎么没声音了
南美五猛兽是哪五个
760除以50.5是循环小数吗?
日湖国贸中心停车场(出入口)地址有知道的么?
种植惯叶连翘可以用杀草剂吗?
众联达汽车销售服务有限公司地址好找么,我有
老公坐牢,留下我跟两个孩子怎么办啊,我希望
澳门星际酒店的酒店内管
当得数为68时用1,9,6,4这四个数字怎样组成
什么情况下三角形会有两解
“症瘕”的读音和字意?
做紫砂壶的名人有姓闻?
低脂半流食物标准
在车管所办理登记抵押需要什么手续
女子回湖北却被车拉到湖南是怎么搞得?
推荐资讯
晒干的针金茹咋吃,怎么做菜?
40岁后行冠带临官帝旺运气好吗
浙江省乐清中学地址在什么地方,想过去办事,
26岁了,还没做过爱这样正常嘛,怎么办
怎么防止白头发变多?
0.75减零点5x=8分之一求未知数x
珠宝的英文
肖申克的救赎里面为什么没提到肖申克?
我达不到父母遗传身高怎么办,我今年16
vivo x20怎么设置手机更快
腰里面疼是怎么回事女
形容老师的词语俩个字
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?