blocking_session阻塞

Xuan_Baby發表於2012-03-14
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
-----------------------------------------------------------------
2432,5634,valid,library cache lock ,valid,3121
可以看出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 ,user,valid 
ps -ef |grep 176859  
oracle 176859    1   0   Feb 14      -  0:04 ora_j000_crmrz ,可以的看出是個Job阻塞其他session,問了下是否可以kill 掉這個Session,客戶回答,可以.
alter system kill session '3121,5764 ' immediate;
處理結果:
再檢查了下這個3121的session是否殺掉,已經殺掉了,存貯過程也就可以立刻編譯了.
至於這條SQL,為什麼會阻塞那條存貯過程,沒空看指令碼,現就這樣吧。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26634508/viewspace-718554/,如需轉載,請註明出處,否則將追究法律責任。

相關文章