Verion:Oracle Server 10.2.0.4.8
刚要下班,接到客户电话,说有个的Procedure不能编译通过,一个十分简单的Procedure,已经编译了半个小时了,一直编译中.
select sid,serial#,status,event,blocking_session_status,blocking_session from v$session where sid=2432;
sid,serial#,status,event,blocking_session_status,blocking_session
-----------------------------------------------------------------
可以看出sid 3121阻塞了2432了,这个时候,我们看下3121在做什么,
select t1.sql_text, LOGON_TIME, SECONDS_IN_WAIT, LAST_CALL_ET
from v$session t, v$sqltext t1
where t.sid = 3121
and t.sql_id = t1.sql_id
order by t1.piece;
insert into ,... 14-MAR-12 0 2963
可以看出这个sid 3121在执行一条insert 操作,而且这个SQL已经执行了2963s,
赶紧kill这条session吧,
select t1.spid,t.sid,t.serial#,t.type,t.status from v$session t,v$process t1 where t.sid=3121 and t.addr=t1.paddr;
t1.spid,t.sid,t.serial#,t.type,t.status
-----------------------------------------------
176859 3121 5764 ,,valid
ps -ef |grep 176859
,可以的看出是个Job阻塞其他session,问了下是否可以kill 掉这个Session,客户回答,可以.
alter system kill session '3121,5764 ' immediate;
再检查了下这个3121的session是否杀掉,已经杀掉了,存贮过程也就可以立刻编译了.
至于这条SQL,为什么会阻塞那条存贮过程,没空看脚本,现就这样吧。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26634508/viewspace-718554/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26634508/viewspace-718554/