通過存儲過程向數據庫一下子插入了一千萬(10000000)條記錄,結果等了很長時間,PL/SQL都沒有響應,我又瞎折騰了下,結果執行了好幾次,導致數據庫假死了,我只有刪除當前的會話,從網上找到相關的腳本代碼。
1> 通過此語句查詢正在鎖定的SESSION_ID:
1
SELECT SESSION_ID FROM V$LOCKED_OBJECT,USER_OBJECTS WHERE V$LOCKED_OBJECT.OBJECT_ID = USER_OBJECTS.OBJECT_ID
2> 通過第一步查詢到的SESSION_ID查詢SERIAL#
1
SELECT SERIAL# FROM V$SESSION WHERE SID='12'(此處'12'為上面查詢到的'SESSION_ID')
3> 根據1,2步查詢到的SESSION_ID和SERIAL#執行
1
ALTER SYSTEM KILL SESSION '12,154'(12為SESSION_ID的值, 154為SERIAL#的值)
4> 如果利用上面的命令殺死一個進程后,進程狀態被置為"killed",但是鎖定的資源很長時間沒有被釋放,那么還可以在os一級再殺死相應的進程(線程),首先執行下面的語句獲得當前進程(線程)的標示PID:
1
select spid, osuser, s.program
2
from v$session s,v$process p
3
where s.paddr=p.addr and s.sid=12 (12是上面的SESSION_ID)
然后在OS通過任務管理器找到對應的進程,在殺死這個進程(線程)
posted on 2010-11-27 14:55
absolute 閱讀(859)
評論(0) 編輯 收藏 所屬分類:
DataBase