ITPub博客

首页 > 数据库 > Oracle > library cache pin模拟与处理

library cache pin模拟与处理

原创 Oracle 作者:a960549548 时间:2024-03-25 10:05:30 0 删除 编辑

会话一:

 

       SID     AUDSID
---------- ----------
       237       9013
 
create or replace procedure dummy is
begin
null;
end;
/

 

 

begin
Dummy;
Dbms_lock.sleep(1000);
End;
/

 

知识拓展:

DBMS_LOCK.SLEEP (seconds IN NUMBER);  单位为“秒”

 

会话二:

 

      SID     AUDSID
---------- ----------
        19      36753
 
alter procedure dummy compile;


卡住

 

查看当前锁情况:

SELECT RPAD('+', LEVEL, '-') || sid || ' ' || sess.module session_detail,
       blocker_sid,
       in_wait_secs,
       wait_event_text,
       object_name,
       RPAD(' ', LEVEL) || sql_text sql_text
  FROM v$wait_chains c
  LEFT OUTER JOIN dba_objects o ON (row_wait_obj# = object_id)
  JOIN v$session sess
 USING (sid)
  LEFT OUTER JOIN v$sql sql ON (sql.sql_id = sess.sql_id AND
                               sql.child_number = sess.sql_child_number)
CONNECT BY PRIOR sid = blocker_sid
       AND PRIOR sess_serial# = blocker_sess_serial#
       AND PRIOR INSTANCE = blocker_instance
 START WITH blocker_is_valid = 'FALSE';

 

SESSION DETAIL  1 +237 SQL*PIus  2 +19 SQL*Plus  BLOCKER SID IN WAIT SECS  237  23  18  WAIT EVENT TEXT  PL/SQL lock timer  library cache pin  OBJECT NAME  SQL _ TEXT  begin Dummy. Dbms_lock sleep(1000). End.  alter procedure dummy compile

 

 

查看造成问题的数据库对象(一般为存储过程):

SELECT *
  FROM v$session_wait
 WHERE event = 'library cache pin'
 ORDER BY p1raw;

SID SEQ#  19  43  EVENT  library cache pin  PI TEXT  handle address  PI RAW  1702837496 000000006S7F3CF8  P2TEXT  pin address  P2RAW  3006976264 00000000833AD108  P3TEXT  100*mode+namespace  387646568

 

P1 handle address

P2 pin address

P3 100*mode+namespace

 

 

SELECT kglnaown "Owner", kglnaobj "Object"
  FROM x$kglob
 WHERE kglhdadr = 'p1raw';

Owner  TEST123  Object  DUMMY

 

 

 

SELECT DECODE (lob.kglobtyp,
                 0, 'NEXT OBJECT',
                 1, 'INDEX',
                 2, 'TABLE',
                 3, 'CLUSTER',
                 4, 'VIEW',
                 5, 'SYNONYM',
                 6, 'SEQUENCE',
                 7, 'PROCEDURE',
                 8, 'FUNCTION',
                 9, 'PACKAGE',
                 11, 'PACKAGE BODY',
                 12, 'TRIGGER',
                 13, 'TYPE',
                 14, 'TYPE BODY',
                 19, 'TABLE PARTITION',
                 20, 'INDEX PARTITION',
                 21, 'LOB',
                 22, 'LIBRARY',
                 23, 'DIRECTORY',
                 24, 'QUEUE',
                 28, 'JAVA SOURCE',
                 29, 'JAVA CLASS',
                 30, 'JAVA RESOURCE',
                 32, 'INDEXTYPE',
                 33, 'OPERATOR',
                 34, 'TABLE SUBPARTITION',
                 35, 'INDEX SUBPARTITION',
                 40, 'LOB PARTITION',
                 41, 'LOB SUBPARTITION',
                 42, 'MATERIALIZED VIEW',
                 43, 'DIMENSION',
                 44, 'CONTEXT',
                 46, 'RULE SET',
                 47, 'RESOURCE PLAN',
                 48, 'CONSUMER GROUP',
                 51, 'SUBSCRIPTION',
                 52, 'LOCATION',
                 55, 'XML SCHEMA',
                 56, 'JAVA DATA',
                 57, 'SECURITY PROFILE',
                 59, 'RULE',
                 62, 'EVALUATION CONTEXT',
                 'UNDEFINED')
            object_type,
         lob.KGLNAOBJ object_name,
         pn.KGLPNMOD lock_mode_held,
         pn.KGLPNREQ lock_mode_requested,
         ses.sid,
         ses.serial#,
         ses.username
    FROM x$kglpn pn,
         v$session ses,
         x$kglob lob,
         v$session_wait vsw
   WHERE     pn.KGLPNUSE = ses.saddr
         AND pn.KGLPNHDL = lob.KGLHDADR
         AND lob.kglhdadr = vsw.p1raw
         AND vsw.event = 'library cache pin'
ORDER BY lock_mode_held DESC

 

OBJECT TYPE  1 PROCEDURE  2 PROCEDURE  OBJECT NAME  DUMMY  DUMMY  LOCK MODE HELD LOCK MODE REQUESTED SID SERIAL#  2  o  3  237  19  9013  36753  USERNAME  TEST123  TEST123

 

 

咋办捏,杀会话

alter system kill session '237,9013' immediate;

 

会话一:

SQL> begin
Dummy;
  2    3  Dbms_lock.sleep(1000);
  4  End;
  5  /
begin
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 16808
Session ID: 237 Serial number: 9013

 

会话二:

SQL> alter procedure dummy compile;  
Procedure altered.

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70013625/viewspace-3009977/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ora-00314 00312
请登录后发表评论 登录
全部评论
Oracle ACE,MySQL 8.0 OCP,PMP,拥有OceanBase OBCP,TiDB PCTP,GoldenDB GDCP等多项认证,ITPUB认证专家,微信公众号:DBA之友。

注册时间:2022-02-08

  • 博文量
    132
  • 访问量
    171526