Oracle殺掉系統進程的描述

Oracle殺掉系統進程的描述

2012-01-18 00:00中國IT實驗室佚名
字號:
A+
|
A-

  在導入附件表AFFIX的時候,數據量很小就1w多條數據,但是AFFIX中有一個blob的大字段,這就使得查詢起來很慢,因爲工作的環境網絡特別的不穩定,開始導入了大概快一半了,突然網絡斷了,當時真的很生氣,但是也沒有什麼辦法,網絡好後接着導入此時總是出現導入錯誤、甚至導入了很長時間,數據條數根本沒發生變化,就是這樣的反反覆覆,查看了一下Oracle鎖表的情況:

  SELECT OBJECT_NAME, MACHINE, S.SID, S.SERIAL#

  FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S

  WHERE L.OBJECT_ID  =   O.OBJECT_ID

  AND L.SESSION_ID = S.SID;

  結果就看到如下結果:

  果然有表鎖死了,心想kill掉鎖死的表很簡單,命令如下:

  alter system kill session '519,10230';

  執行的時間很長,後來居然出現了下圖的錯誤:

  一看就是報錯了,查了一些資料是因爲oracle鎖死的表被殺死後,狀態被標識爲“killed”但是鎖定資源很長時間才能得到釋放,有的時候實在沒有別的好的辦法我們就需要重啓數據庫了,我的理解是如果等半天或者更長時間的話是可以被釋放的。於是就開始查詢資料、例子,解決辦法如下:

  SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='519' --被鎖定的SID

  此時可以得到 PADDR ,在通過SQL得到:

  SELECT SPID FROM V$PROCESS WHERE ADDR='695E3F2C'; --PADDR的值

  這個時候就可以直接在系統中把oracle進程殺掉了,可以使用 kill -9 SPID 或者 ORAKILL SID SPID

  此時整個操作完成,如果遇到此類問題不能解決大家在一起討論。


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