发表于:2006.11.09 20:20
分类: oracle
出处:http://xhailiang.itpub.net/post/6051/228105
---------------------------------------------------------------
The first step is to see who is waiting for Library Cache Pins:
SQL> COL event FORMAT a20 TRUNC
SQL>
SQL> tti "Users Waiting for Library Cache Pins"
SQL> SELECT sid, event, p1raw, seconds_in_wait, wait_time
2 FROM sys.v_$session_wait
3 WHERE event = 'library cache pin'
4 AND state = 'WAITING'
5 /
Wed Aug 11 page 1
Users Waiting for Library Cache Pins
SID EVENT P1RAW SECONDS_IN_WAIT
---------- -------------------- ---------------- ---------------
374 library cache pin 000000051862E5F0 1531
944 library cache pin 000000051862E5F0 10383
1057 library cache pin 000000051862E5F0 10554
776 library cache pin 000000051862E5F0 2405
4 rows selected.P1raw is the "Handle Address" of the object that is blocking. Execute the following query to get the object's owner and name:
SQL> tti "Object that is Blocking"
SQL> COL owner format a8
SQL> COL object format a70
SQL> SELECT kglnaown AS owner, kglnaobj as Object
2 FROM sys.x$kglob
3 WHERE kglhdadr='&P1RAW'
4 /
Enter value for p1raw: 000000051862E5F0
old 3: WHERE kglhdadr='&P1RAW'
new 3: WHERE kglhdadr='000000051862E5F0'
Wed Aug 11 page 1
Object that is Blocking
OWNER OBJECT
-------- -------------------------------------------------- --------------------
begin SP_EMP.PROC1@orcl(:a,:b,:c); end;Identify the users that are waiting/ blocking:
SQL> tti "Blocking/Waiting Users"
SQL> col SID_SERIAL format a12
SQL> SELECT s.sid||','||s.serial# SID_SERIAL, kglpnmod "Mode Held", kglpnreq "Request"
2 FROM sys.x$kglpn p, sys.v_$session s
3 WHERE p.kglpnuse = s.saddr
4 AND kglpnhdl = '&P1RAW'
5 /
Enter value for p1raw: 000000051862E5F0
old 4: AND kglpnhdl = '&P1RAW'
new 4: AND kglpnhdl = '000000051862E5F0'
Wed Aug 11 page 1
Blocking/Waiting Users
SID_SERIAL Mode Held Request
------------ ---------- ----------
374,1390 0 2
776,2906 0 2
944,2193 0 2
991,59496 3 0
1057,1966 0 2
5 rows selected.In the above example, session 991 is blocking the other sessions listed. Killing session 911 should solve the problem. However, before killing the session, you may want to collect evidence of the problem so you can log a TAR. To do so, collect 3 SYSTEMSTATE dumps at 30 seconds intervals, then submit them to Oracle support for further analysis
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/6456/viewspace-112238/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/6456/viewspace-112238/
本文详细介绍了如何处理Oracle数据库中导致用户阻塞的图书馆缓存钉等待事件。通过查询会话等待事件,确定阻塞对象及其所有者,识别并解决阻塞问题,收集系统状态转储以供进一步分析。

被折叠的 条评论
为什么被折叠?



