1. 程式人生 > >【ORA】ORA-00030: User session ID does not exist.

【ORA】ORA-00030: User session ID does not exist.

今天巡檢,查詢鎖相關的情況的時候,確認業務後,準備將鎖幹掉,但是幹掉的時候報了一個錯誤,ORA-00030

發現回話不存在,我以為pmon程序已經將鎖程序kill掉了,就再次檢視,發現,還是存在

這個鎖現在佔用較高的cpu程序

查閱了相關的文章後,決定用os來殺掉他

思路:

1,在oracle中用sid檢視系統的spid,spid就是系統層的程序號

2.在系統層檢視這個程序,看是否為oracle系統相關程序,如果誤操作的話,會導致相關的資料庫問題層出不窮

3.確認無誤後,kill掉

4.再次檢視鎖,看是否還存在

執行命令:

1.用sid查系統程序號:

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

或者


select object_name as 物件名稱,s.sid,s.serial#,p.spid as 系統程序號
from v$locked_object l , dba_objects o , v$session s , v$process p
where l.object_id=o.object_id and l.session_id=s.sid and s.paddr=p.addr;

2.根據sid=1433檢視到的系統程序號是23421,由這個程序號,檢視當前程序

ps -ef | grep 23421| grep -v grep

oracle      23421   1  0 Dec21 ?        00:00:00 oracle10g (LOCAL=NO) 

 

這樣的local=no就是可以殺掉的,如果程序中有local=yes

那麼就要當心了,不要輕易kill掉

3.kill -9 23421   

4.ps -ef | grep 23421

沒有相關程序,證明成功幹掉,上資料庫中檢視,也沒有相關的鎖了

cpu中也沒有相關佔用較高的程序了