library cahce pin

 library cahce pin(库高速缓存pin)等待事件与库高速缓存并发性有关,当会话尝试在库高速缓存中钉住对象

以修改或检查该对象时产生该事件。会话必须获取(pin)以确保此时对象没有被其他会话更新。

当会话正在编译或分析PL/SQL过程和视图时,Oracle提交该事件。

library cache pin和library cache lock的并不是hard parse



create or replace procedure test_prc as
begin
insert into test1 select * from test1;
end;

SESSION SID=1执行该存储过程后,

SESSION SID=36去编译该过程

SQL> select sid,event from v$session_wait where event not like '%message%';

       SID EVENT
---------- ----------------------------------------------------------------
	 1 db file scattered read
	 2 pmon timer
	 3 VKTM Logical Idle Wait
	 5 DIAG idle wait
	 8 DIAG idle wait
	10 db file async I/O submit
	12 log file parallel write
	13 smon timer
	18 Streams AQ: qmn coordinator idle wait
	26 Streams AQ: qmn slave idle wait
	28 Space Manager: slave idle wait

       SID EVENT
---------- ----------------------------------------------------------------
	32 Streams AQ: waiting for time management or cleanup tasks
	36 library cache pin
	37 Data file init write

14 rows selected.


SQL> col name format a30
SQL> select SESSION_ID,NAME,P1,P2,P3,WAIT_TIME,CURRENT_OBJ#,CURRENT_FILE#,CURRENT_BLOCK#
          from v$active_session_history ash, v$event_name enm
          where ash.event#=enm.event#
           and SESSION_ID=36;   2    3    4  

SESSION_ID NAME 				  P1	     P2 	P3  WAIT_TIME CURRENT_OBJ# CURRENT_FILE# CURRENT_BLOCK#
---------- ------------------------------ ---------- ---------- ---------- ---------- ------------ ------------- --------------
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139

SESSION_ID NAME 				  P1	     P2 	P3  WAIT_TIME CURRENT_OBJ# CURRENT_FILE# CURRENT_BLOCK#
---------- ------------------------------ ---------- ---------- ---------- ---------- ------------ ------------- --------------
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139
	36 library cache pin		   737880368  737837676      65539	    0	       236	       1	 102139


SQL> SQL> select name, PARAMETER1,PARAMETER2,PARAMETER3 from v$event_name where name='library cache pin';

NAME			       PARAMETER1	    PARAMETER2		 PARAMETER3
------------------------------ -------------------- -------------------- ------------------------------
library cache pin	       handle address	    pin address 	 100*mode+namespace


--通过查询V$SESSION_WAIT找出正在等待”library cache pin”的session
SQL> SELECT sid,
       SUBSTR (event, 1, 30),
       TO_CHAR(p1, 'xxxxxxxx') p1_16,
       --P1RAW P1_16,
       p2,
       p3
  FROM v$session_wait
 WHERE wait_time = 0 AND event LIKE 'library cache pin%';  2    3    4    5    6    7    8  

       SID SUBSTR(EVENT,1,30)						P1_16		  P2	     P3
---------- ------------------------------------------------------------ --------- ---------- ----------
	36 library cache pin						 2bfb2930  737458808 3.3599E+14



--通过查询DBA_LOCK_INTERNAL和V$SESSION_WAIT,可得到与”library cache pin” 等待相关的object的名字
SQL> SELECT TO_CHAR (SESSION_ID, '999') sid,
       SUBSTR (LOCK_TYPE, 1, 30) TYPE,
       SUBSTR (lock_id1, 1, 23) Object_Name,
       SUBSTR (mode_held, 1, 4) HELD,
       SUBSTR (mode_requested, 1, 4) REQ,
       lock_id2 Lock_addr
  FROM dba_lock_internal
 WHERE mode_requested <> 'None' AND mode_requested <> mode_held
       AND session_id IN
              (SELECT sid
                 FROM v$session_wait
                WHERE wait_time = 0 AND event LIKE 'library cache pin%');
                   2    3    4    5    6    7    8    9   10   11   12  ;

SID  TYPE							  OBJECT_NAME					 HELD	  REQ	   LOCK_ADDR
---- ------------------------------------------------------------ ---------------------------------------------- -------- -------- -------------------------

---------------
  36 Table/Procedure/Type Definitio				  TEST.TEST_PRC 				 None	  Excl	   2BFB2930



SQL> SQL>  select sid, P1RAW,P1TEXT ,event from v$session_wait where event not like '%message%';

       SID P1RAW	    P1TEXT			   EVENT
---------- ---------------- ------------------------------ ----------------------------------------------------------------
	 1 0000000000000004 file#			   db file scattered read
	 2 0000000000000100 duration			   pmon timer
	 3 00						   VKTM Logical Idle Wait
	 5 0000000000000005 component			   DIAG idle wait
	 8 0000000000000005 component			   DIAG idle wait
	10 000000000000077A requests			   db file async I/O submit
	12 0000000000000001 files			   log file parallel write
	13 000000000000012C sleep time			   smon timer
	18 00						   Streams AQ: qmn coordinator idle wait
	26 0000000000000001 Type			   Streams AQ: qmn slave idle wait
	28 0000000000000001 Slave ID			   Space Manager: slave idle wait

       SID P1RAW	    P1TEXT			   EVENT
---------- ---------------- ------------------------------ ----------------------------------------------------------------
	32 00						   Streams AQ: waiting for time management or cleanup tasks
	36 000000002BFB2930 handle address		   library cache pin
	37 00		    Slave ID			   Space Manager: slave idle wait

14 rows selected.



SELECT s.sid, kglpnmod "Mode", kglpnreq "Req",p.kglpnhdl
    FROM x$kglpn p, v$session s 
    WHERE p.kglpnuse=s.saddr
    AND kglpnhdl='&P1RAW'


SQL> SELECT s.sid, kglpnmod "Mode", kglpnreq "Req",p.kglpnhdl
    FROM x$kglpn p, v$session s 
    WHERE p.kglpnuse=s.saddr  2    3  ;

       SID	 Mode	     Req KGLPNHDL
---------- ---------- ---------- --------
	36	    0	       3 2BFB2930
	 1	    2	       0 2BFB2930

这里的kglpnhdl=p1_16


       SID SUBSTR(EVENT,1,30)						P1_16		  P2	     P3
---------- ------------------------------------------------------------ --------- ---------- ----------
	36 library cache pin						 2bfb2930  737458808 3.3599E+14



000000002BFB2930 16进制就是2BFB2930 转换为10进制就是737880368 









posted @ 2014-03-21 11:05  czcb  阅读(235)  评论(0编辑  收藏  举报