【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中也沒有相關佔用較高的程序了