作者:david_zhang@sh 【轉載時請以超鏈接形式標明文章】
鏈接:http://www.cnblogs.com/david-zhang-index/archive/2012/03/01/2375466.html
1.用oracle命令殺掉
在Oracle數據庫中,可以通過kill session的方式來終止一個進程,其基本語法結構為:alter system kill session 'sid,serial#';
•獲得SID,SERIAL#
select s.username,s.sid,s.serial# from v$session s where username='BOND'
可以根據sid和serial用oracle命令殺掉相應進程
example.
USERNAME SID SERIAL#
------------------------------ ---------- ----------
ORACLE 400 45085
ORACLE 767 29118
2.操作系統命令殺掉會話
由於Oracle系統忙, PMON沒有來的及釋放被Kill掉的會話資源,就需要通過操作系統來釋放相應的資源
在UNIX或LINUX上系統采用的是線程的,可用KILL命令直接將對應的線程殺掉。基本命令如下:Kill -9 SPID
•獲得線程ID
select s.sid,s.serial#,s.MACHINE,s.PROGRAM,p.SPID from v$session s,v$process p where s.PADDR = p.ADDR and s.username='ORACLE';
可以根據spid用系統命令殺掉相應進程
example.
SID SERIAL# MACHINE PROGRAM SPID
---------- ---------- ---------- ---------- ------------------------
767 29118 UCMSDB03 17287
400 45085 UCMSDB03 19380
101 37916 UCMSDB03 20066
由於部分線程,已經使用Oracle的alter system 命令殺掉了,但實際上資源沒有釋放。通過上面的語句得不到對應的線程ID,但是可以用下面的方法得到。
select p.spid from v$process p where not exists (select spid from v$session where paddr=p.addr)
再根據spid用系統命令殺掉相應進程
example.
SPID
------------------------
31662
31664
