一次在给某个表增加字段时,一直hang住不动:
alter table my_table_name add my_column_name VARCHAR2(1);
查看等待事件,发现是library cache lock
但通过v$lock_object查看,没发现有任何会话在使用这个表。
通过以下语句查看哪个会话在阻碍:
SELECT DISTINCT b.username,b.sid
FROM sys.x$kglpn a,v$session b,sys.x$kglob c
WHERE a.kgl 3 pnuse = b.saddr
AND upper(c.kglnaobj) LIKE upper('APPLY_EXTEND_NA')
AND a.kglpnhdl = c.kglhdadr
;
SID
----------
81
88
111
551
723
或者通过handanalyze也可以看到相关信息:
SQL> oradebug setmypid
Statement processed.
SQL> oradebug unlimit
Statement processed.
SQL> oradebug hanganalyze 3
Hang Analysis in /xxx/udump/xxx_ora_13211.trc
SQL> exit
查看上面产生的trace,也可以看到相关会话阻碍了446会话:
==============
HANG ANALYSIS:
==============
Open chains found:
Chain 1 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/81/25843/0xe32f0f58/10590/No Wait>
-- <0/446/10029/0xe330a278/12625/library cache lock>
Chain 2 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/88/37814/0xe33851b8/24700/No Wait>
-- <0/446/10029/0xe330a278/12625/library cache lock>
Chain 3 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/111/54560/0xe3368e38/16815/No Wait>
-- <0/446/10029/0xe330a278/12625/library cache lock>
...
Chain 6 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/465/1499/0xe33bfe58/7801/No Wait>
-- <0/172/16996/0xe33eeed8/20101/latch free>
Chain 7 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/551/24276/0xe33ce578/16856/No Wait>
-- <0/446/10029/0xe330a278/12625/library cache lock>
Chain 8 : <cnode/sid/sess_srno/proc_ptr/ospid/wait_event> :
<0/723/38898/0xe33b7d58/21036/No Wait>
-- <0/446/10029/0xe330a278/12625/library cache lock>
...
[445]/0/446/10029/0xe72fc310/12625/NLEAF/579/584/[722][550][110][87][80]/none
将这些会话kill掉后,字段成功加上。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22818880/viewspace-1803345/
,如需转载,请注明出处,否则将追究法律责任。