用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

原文地址:https://www.cnblogs.com/weixun/p/3143173.html