oracle kill session

-- 1) 查看需要KILL的进程
SELECT 'ALTER SYSTEM KILL SESSION ' || '''' || SID || ',' || SERIAL# || '''' ||
       ' IMMEDIATE;'
  FROM V$SESSION
WHERE USERNAME = 'DEV_MDS';

-- 2) 记住SPID //
SELECT A.SID, A.SERIAL#, B.SPID, A.STATUS, A.PROGRAM
  FROM V$SESSION A, V$PROCESS B
WHERE A.PADDR = B.ADDR
   AND A.SID IN (4, 83, 165, 404)
ORDER BY A.SID;

--- 3) KILL 进程
ALTER SYSTEM KILL SESSION '4,19955' IMMEDIATE;
ALTER SYSTEM KILL SESSION '83,33095' IMMEDIATE;
ALTER SYSTEM KILL SESSION '165,30253' IMMEDIATE;
ALTER SYSTEM KILL SESSION '404,51628' IMMEDIATE;

-- 4) 看看是否还存在
SELECT * FROM V$SESSION WHERE USERNAME = 'DEV_MDS';

-- 5) 一般KILL如上进程,若不行则需要操作系统级别KILL进程
--   5.1) 登陆操作系统 依次 kill -9 第2)步得到的SPID进程
--   5.2) 若上述步骤还没成功,则将下面查询到得SPID进程KILL掉。
SELECT SPID, PROGRAM
  FROM V$PROCESS
WHERE PROGRAM != 'PSEUDO'
   AND ADDR NOT IN (SELECT PADDR FROM V$SESSION)
   AND ADDR NOT IN (SELECT PADDR FROM V$BGPROCESS);

猜你喜欢

转载自michales003.iteye.com/blog/1850023