11g之前:
1 2 3 4 5 |
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 ) and addr not in (select paddr from v$shared_server); |
11g之后:
1 |
select * from v$process where addr=(select creator_addr from v$session where sid=140); |
参考:
How To Find The Process Identifier (pid, spid) After The Corresponding Session Is Killed? (Doc ID 387077.1)
3条评论
–11G下我使用的脚本:
SELECT ‘kill -9 ‘ || spid kill_spid, program
FROM v$process
WHERE addr = (SELECT creator_addr
FROM v$session
WHERE status = ‘KILLED’);
有时候查出来 kill不掉是什么原因?
kill是能kill掉的。感觉kill不掉,一般是kill的命令执行下去之后,执行慢。这个时候,往往数据库会伴随着一些性能问题,比如cpu,比如latch,导致smon或者pmon没有及时的清理这些被杀掉的进程资源。
通常情况下,kill完之后(不加immediate参数),1~2秒就能杀掉并释放资源,但是当数据库出现问题的时候,且这个时候由于应用端没有很好的限流机制,大量重试导致又上来大量的新进程,kill完回收的速度跟不上进程上来的速度,于是就看到执行完kill却不能快速的完成这样的情况了。