0324resumable_timeout library cache lock

0324resumable_timeout library cache lock

[20160324]参数resumable_timeout和library cache lock.txt

–今天测试环境遇到library cache lock的情况,主要测试磁盘空间很紧张,但是设置了参数resumable_timeout。
–开发通过ctas建立表时,空间不够挂起,估计他程序挂起异常关闭,ctas依旧在后台运行。但是访问到这个表的程序全部挂起。
–通过例子来说明:

1.环境:

SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
—————————— ————– ——————————————————————————–
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production

CREATE TABLESPACE tea DATAFILE
  ‘/mnt/ramdisk/book/tea01.dbf’ SIZE 1536K AUTOEXTEND OFF
LOGGING
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

SCOTT@book> alter user scott quota unlimited on tea;
User altered.

SCOTT@book> alter session set resumable_timeout=3600 ;
Session altered.

SCOTT@book> create table t1 tablespace tea as select * from dba_objects ;

— 由于我限制表空间tea大小,加上参数resumable_timeout,操作会暂时挂起,等待空间分配。

SYS@book> @ &r/lcl
display  library cache lock problem
no rows selected
display wait library cache lock
no rows selected

2.如果我访问表问题就出现了:
SCOTT@book> select * from dba_objects  where owner=user and object_name=’T1′;
no rows selected

SYS@book> select * from obj$ where name=’T1′;
no rows selected

SCOTT@book> select * from t1 where rownum<=1;
–挂起!

SYS@book> @ &r/wait

P1RAW            P2RAW            P3RAW                    P1         P2         P3        SID    SERIAL#       SEQ# EVENT                                    STATE               WAIT_TIME_MICRO SECONDS_IN_WAIT
—————- —————- —————- ———- ———- ———- ———- ———- ———- —————————————- ——————- ————— —————
0000000062657100 0000000000000001 00               1650815232          1          0         80       1353         10 SQL*Net message to client                WAITED SHORT TIME                 2               0
000000007BA1B5C8 000000007BBEB7D0 FFFFFFFF00010002 2074195400 2076096464 1.8447E+19         90        815         85 library cache lock                       WAITING                    35152734              35
00               00               00                        0          0          0        232        597        330 statement suspended, wait error to be cl WAITING                     1567627               2
                                                                                                                     eared

–看到等待事件出现了library cache lock。实际上如果仔细看还出现了statement suspended, wait error to be cleared。
–当时出现library cache lock的行很多,主要精力集中在这里,后面的事件没有引起重视。而且根本不存在表T1并不存在,感觉有点奇怪。

SYS@book> @ &r/lcl

display  library cache lock problem

   INST_ID SADDR            HANDLE                  MOD        REQ OBJECT               SQL_ID        HASH_VALUE KGLNAOBJ                       USER_NAME            C50
———- —————- —————- ———- ———- ——————– ————- ———- —————————— ——————– ————————————————–
         1 00000000854DC040 000000007BA1B5C8          3          0 T1                   gsmky1za3hww0 3560469376 T1                             SCOTT                alter system kill session ‘232,597’ immediate;

display wait library cache lock

       SID    SERIAL# SPID       PID  P_SERIAL# EVENT                                    C50
———- ———- —— ——- ———- —————————————- ————————————————–
        90        815 53621       32         97 library cache lock                       alter system kill session ‘90,815’ immediate;

SYS@book> @ &r/sharepool/shp4 gsmky1za3hww0 3560469376
old  17:  WHERE kglobt03 = ‘&1′  or kglhdpar=’&1′ or kglhdadr=’&1’ or KGLNAHSH= &2
new  17:  WHERE kglobt03 = ‘gsmky1za3hww0′  or kglhdpar=’gsmky1za3hww0′ or kglhdadr=’gsmky1za3hww0’ or KGLNAHSH= 3560469376
TEXT           KGLHDADR         KGLHDPAR         C40                                      KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
————– —————- —————- —————————————- —————- —————- ———- ———- ———- ——— ———- ———- ————- ———-
父游标句柄地址 000000007BA1B5C8 000000007BA1B5C8 T1                                       000000007BB675C0 00                     4704          0          0      4704       4704 3560469376                        0

–看不到sql_id=gsmky1za3hww0.补充
select replace(wmsys.wm_concat(c),’,’) from (
select c from (
SELECT SUBSTR (‘0123456789abcdfghjkmnpqrstuvwxyz’, a + 1, 1) c,rownum rn
  FROM (WITH data (a, b)
             AS (SELECT MOD (&1, 32) a, TRUNC (&1 / 32) b FROM DUAL
                 UNION ALL
                 SELECT MOD (b, 32) a, TRUNC (b / 32) b
                   FROM data
                  WHERE b !=0
                  )
        SELECT a
          FROM data)) order by rn desc);
–带入3560469376。

REPLACE(WMSYS.WM_CONCAT(C),’,’)
————————————-
3a3hww0

–后面几位是对上的sql_id,奇怪一般一些对象仅仅存在HASH_VALUE。没有sql_id的,不知道为什么这里有记录。

select * from V$DB_OBJECT_CACHE where name=’T1′ ;
Record View
As of: 2016/03/24 15:19:07

OWNER:               SCOTT
NAME:                T1
DB_LINK:            
NAMESPACE:           TABLE/PROCEDURE
TYPE:                TABLE
SHARABLE_MEM:        4704
LOADS:               4
EXECUTIONS:          0
LOCKS:               1
PINS:                1
KEPT:                NO
CHILD_LATCH:         29568
INVALIDATIONS:       0
HASH_VALUE:          3560469376
LOCK_MODE:           EXCLUSIVE
PIN_MODE:            EXCLUSIVE
STATUS:              VALID
TIMESTAMP:           2016-03-24/14:33:13
PREVIOUS_TIMESTAMP: 
LOCKED_TOTAL:        21
PINNED_TOTAL:        22
PROPERTY:           
FULL_HASH_VALUE:     f1cd2b1c8166d406fc4e5e0fd4387380
–还真不知道对象的FULL_HASH_VALUE是如何计算的。
————————–

SYS@book> select * from V$OPEN_CURSOR where sid=232;
SADDR                   SID USER_NAME            ADDRESS          HASH_VALUE SQL_ID        SQL_TEXT                                                     LAST_SQL_ACTIVE_TIM SQL_EXEC_ID CURSOR_TYPE
—————- ———- ——————– —————- ———- ————- ———————————————————— ——————- ———– ————————
00000000854DC040        232 SCOTT                000000007DD7F9E0 1572239410 7jpt4cpfvcy1k select ts#,online$ from ts$ where name=:1                                                    SESSION CURSOR CACHED
00000000854DC040        232 SCOTT                000000007D7F9F68  594593636 4kp0kn4jr1jv4 table_1_ff_21f_0_0_0                                                                         OPEN-RECURSIVE
00000000854DC040        232 SCOTT                000000007C36D2F0 1853064805 5hrvvu1r771m5  SELECT VALUE$ FROM SYS.PROPS$ WHERE NAME = ‘OGG_TRIGGER_OPT                                 OPEN-RECURSIVE
00000000854DC040        232 SYS                  000000007C66F5E8  785625969 at1ygf4rd7cvj select file#, block#, blocks from seg$ where type# = 3 and t                                 SESSION CURSOR CACHED
00000000854DC040        232 SYS                  000000007C66F5E8  785625969 at1ygf4rd7cvj select file#, block#, blocks from seg$ where type# = 3 and t                                 SESSION CURSOR CACHED
00000000854DC040        232 SYS                  000000007D5D6AD0  534114327 0hhmdwwgxbw0r select obj#, type#, flags, related, bo, purgeobj, con#    fr                                 SESSION CURSOR CACHED
00000000854DC040        232 SYS                  000000007D5D6AD0  534114327 0hhmdwwgxbw0r select obj#, type#, flags, related, bo, purgeobj, con#    fr                                 SESSION CURSOR CACHED
00000000854DC040        232 SCOTT                000000007D75F7C8  838595833 7vvm9vcszrx7t create table t1 tablespace tea as select * from dba_objects  1970-01-01 08:59:37    16777218 OPEN
8 rows selected.

SYS@book> @ &r/sharepool/shp4 7vvm9vcszrx7t 838595833
old  17:  WHERE kglobt03 = ‘&1′  or kglhdpar=’&1′ or kglhdadr=’&1’ or KGLNAHSH= &2
new  17:  WHERE kglobt03 = ‘7vvm9vcszrx7t’  or kglhdpar=’7vvm9vcszrx7t’ or kglhdadr=’7vvm9vcszrx7t’ or KGLNAHSH= 838595833
TEXT           KGLHDADR         KGLHDPAR         C40                                      KGLOBHD0         KGLOBHD6           KGLOBHS0   KGLOBHS6   KGLOBT16   N0_6_16        N20   KGLNAHSH KGLOBT03        KGLOBT09
————– —————- —————- —————————————- —————- —————- ———- ———- ———- ——— ———- ———- ————- ———-
子游标句柄地址 000000007C757648 000000007D75F7C8 create table t1 tabl                     000000007DF65E68 000000007C473E90       4528     269096       3925    277549     277549  838595833 7vvm9vcszrx7t          0
子游标句柄地址 000000007D4D4AA8 000000007D75F7C8 create table t1 tabl                     000000007D9F2400 000000007C474298       4528     269120       3925    277573     277573  838595833 7vvm9vcszrx7t          1
父游标句柄地址 000000007D75F7C8 000000007D75F7C8 create table t1 tabl                     000000007D079730 00                     4752          0          0      4752       4752  838595833 7vvm9vcszrx7t      65535

–基本可以确定是还在建立表,如果查看select * from V$ACTIVE_SESSION_HISTORY更容易明确。时间长了,会提示:

SCOTT@book> select * from t1 where rownum<=1;
select * from t1 where rownum<=1
              *
ERROR at line 1:
ORA-04021: timeout occurred while waiting to lock object。

$ oerr ora 04021
04021, 00000, “timeout occurred while waiting to lock object %s%s%s%s%s”
// *Cause:  While waiting to lock a library object, a timeout occurred.
// *Action: Retry the operation later.

3.解决问题:
1.可以扩大表空间。
2.或者kill 建表的进程,然后重新建立。

4.附上lcl检查脚本:

$ cat lcl.sql
PROMPT
PROMPT display  library cache lock problem
PROMPT

column object format a20
column user_name format a20
SELECT inst_id
      ,kgllkses saddr
      ,kgllkhdl handle
      ,kgllkmod MOD
      ,kgllkreq REQ
      ,kglnaobj object
      ,KGLLKSQLID sql_id
      ,kglnahsh hash_value
      ,KGLNAOBJ
      ,user_name
      ,   ‘alter system kill session ”’
       || s.sid
       || ‘,’
       || s.serial#
       || ””
       || ‘ immediate;’
          c50
  –,lock_a.*
  FROM x$kgllk lock_a, v$session s
WHERE    s.saddr = lock_a.kgllkses and
kgllkmod > 0
       AND EXISTS
              (SELECT lock_b.kgllkhdl
                 FROM x$kgllk lock_b
                WHERE     kgllkses IN (SELECT saddr
                                         FROM v$session
                                        WHERE event like ‘library cache lock’) /* blocked session */
                                        –WHERE event like ‘library cache pin’) /* blocked session */
                      AND lock_a.kgllkhdl = lock_b.kgllkhdl
                      AND kgllkreq > 0);

PROMPT
PROMPT display wait library cache lock
PROMPT
SELECT s.sid
      ,s.serial#
      ,p.spid
      ,p.pid
      ,p.serial# p_serial#
          ,s.event
      ,   ‘alter system kill session ”’
       || s.sid
       || ‘,’
       || s.serial#
       || ””
       || ‘ immediate;’
          c50
  FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.event= ‘library cache lock’;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109110.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 极限思想之芝诺悖论[通俗易懂]

    极限思想之芝诺悖论[通俗易懂]芝诺悖论是古希腊哲学家芝诺提出的一组悖论。芝诺是一个很有学问,同时也很好玩的人(淘气)。他如果在中国出生,估计很难大学毕业,只能跟池子(脱口秀演员~)一样,高中教室门外面站三年课,然后去讲脱口秀糊口。阿基里斯,大家都知道。古希腊神话中的战神。无论是力量,速度,耐力,格斗技巧,都是巅峰级别的。一夜睡三女,第二天依然可以血染特洛伊的男人。芝诺就提出:在跑步比赛中,如果跑得最慢的乌龟一开始领先…

  • db4o官方停止支持及面向对象数据库的一些感想「建议收藏」

    db4o官方停止支持及面向对象数据库的一些感想

  • 汇编语言王爽第四版实验4答案_王爽汇编语言实验11

    汇编语言王爽第四版实验4答案_王爽汇编语言实验11汇编语言王爽第四版课后检测点课后实验持续更新~~实验4[bx]和loop的使用1编程,向内存0:200~0:23f依次传送数据0~63(3fh)assumecs:codecodesegment movax,0 movds,ax;设置ds=0 movbx,200h;设置从200h开始 movcx,64;循环64次 moval,0;传送的数据 s: mov[bx],al incbx incal loops movax,4c00h

    2022年10月30日
  • 微信养号防封攻略_防封群微信怎么卖「建议收藏」

    微信养号防封攻略_防封群微信怎么卖「建议收藏」任何企业或者个人做营销或者推广等等一切都离不开微信,有很多企业和个人的生存渠道就是微信,如果把微信号封了,几乎是断了他们生存的机会,在这样的大环境下,把自己企业和个人的微信号养好,就成了非常重要的一个环节。微信能安全使用,是所有一切的基础。但是很多人现在还不懂的去操作养号,这几天我个人也陆续有号被封,所以我就整理了一下微信养号的操作方法。自己可以使用,也顺便分享给更多的人,这个操作方法涵盖了微信每天养号需要必须要操作的动作,这些动作是每天必须要操作的。先说一下微信权重的影响因素微信养号一、微信权重

  • parse_url   解析 URL,返回其组成部分

    parse_url   解析 URL,返回其组成部分

  • 基于kettle的数据采集平台

    基于kettle的数据采集平台平台开发目的是设计一个通用的数据采集、解析、处理、装载、调度、监控的通用数据采集平台。平台具有业务无关性,涉及到具体的业务数据处理时候需要特殊处理,动态加载到框架中,达到通用的目的。 

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号