在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