查看存儲過程被哪個會話引用

1、首先確定執行此存儲過程的會話,o.kglnaobj即爲會話鎖住的存儲過程名稱:

Select distinct  s.sid ,s.SERIAL#, username  ,o.kglnaobj  
from v$session s , sys.x$kglob o , sys.x$kglpn p where p.kglpnhdl=o.kglhdadr and s.saddr=p.kglpnuse ; 

2、查看被堵塞的sql語句,SID爲1中查到的SID

select sid,SERIAL#,a.EVENT, a.SQL_ID, a.MACHINE, b.SQL_TEXT, b.SQL_FULLTEXT,b.FIRST_LOAD_TIME,b.LAST_LOAD_TIME,b.LAST_ACTIVE_TIME
  from v$session a, v$sql b
where a.SQL_ID = b.SQL_ID
   and a.USERNAME is not null
   and a.STATUS = 'ACTIVE' and SID = '#SID'

3、殺掉會話,#SID和#SERIAL是從2查到的

alter system kill session '#SID,#SERIAL';

4、如果清理不掉,需要到服務器上面去殺掉進程

查詢進程id

select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=#SID

清理進程

kill -9 spid(是上一句sql查詢出來的)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章