• library cache pin 诊断思路


    <pre name="code" class="sql"><pre name="code" class="sql">create or replace procedure prc_test1 
    is
    begin
      loop
      execute immediate 'select * from dual';
    end loop;
    end; 
    
    SESSION 1644 执行存储过程:  
    SQL> select * from v$mystat where rownum<2;
    
           SID STATISTIC#	   VALUE
    ---------- ---------- ----------
          1644	    0	       1
    
    SQL> exec prc_test1;
    
      
    SESSION 1628 编译存储过程:
    
    SQL> select * from v$mystat where rownum<2;
    
           SID STATISTIC#	   VALUE
    ---------- ---------- ----------
          1628	    0	       1
    
    SQL> alter procedure prc_test1 compile;
    
    
    此时出现如下等待事件;
    SQL> select sid,p1, P1RAW,p2,p3,event from v$session_wait where event like '%library cache%';
    
           SID	   P1 P1RAW		       P2	        P3 EVENT
    ---------- ---------- ---------------- ---------- ---------- ----------------------------------------------------------------
          1628 2172090560 00000000817778C0 2196671232	 301 library cache pin
    
    此时1628 在等待library cache pin的excusive
    
    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
        AND kglpnhdl='00000000817778C0'  2    3    4  ;
    
           SID	 Mode	     Req KGLPNHDL
    ---------- ---------- ---------- ----------------
          1628	    0	       3 00000000817778C0
          1644	    2	       0 00000000817778C0
      
    SQL> desc x$kglpn;
    名称 类型
    ------------ ----------------------------
    ADDR RAW(4)
    INDX NUMBER
    INST_ID NUMBER
    KGLPNADR RAW(4)
    KGLPNUSE RAW(4) ---会话地址(对应v$session的saddr)
    KGLPNSES RAW(4) ---owner地址
    KGLPNHDL RAW(4) ---句柄
    KGLPNLCK RAW(4)
    KGLPNCNT NUMBER
    KGLPNMOD NUMBER ---持有pin的模式(0为no lock/pin held﹐1为null,2为share﹐3为exclusive) 
    KGLPNREQ NUMBER ---请求pin的模式(0为no lock/pin held﹐1为null,2为share﹐3为exclusive)
    KGLPNDMK NUMBER
    KGLPNSPN NUMBER ---对应跟踪
    
    此时1628在等待excusive模式,而1644是持有share 模式
    
    11g可以直接查询ash:
    


    
    
    
                                        
    
  • 相关阅读:
    dblink密码
    Select .. into .. 和 OCIBindByName
    在网上东逛西逛看到这篇文章,鼻子有点酸。
    奇怪的LINUX系统时间问题
    综合练习:简单日历
    15位到18位身份证的升级计算
    进入面向对象的世界:类就是代码,对象是内存。
    关于数据类型转换的补充知识
    数学函数
    抽象类和密封类
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352220.html
Copyright © 2020-2023  润新知