我杀了一个会话
ALTER SYSTEM KILL SESSION '123,456' IMMEDIATE;
但它仍然在v$session
中保留了5天,尽管v$processes
中没有附加过程。
SELECT
s.username,
s.osuser,
s.sid,
s.serial#,
p.spid
FROM v$session s, v$process p
WHERE s.sid = '123'
AND p.addr (+)= s.paddr;
我还检查了所有与Oracle相关的Linux进程,但没有找到僵尸:所有现有流程都与活动会话保持一致。
编辑: 这不适用于所有已杀死的会话。似乎PMON处于活动状态,因为大多数被杀死的会话在合理的时间内从列表中清除(通常需要一秒钟)。
如何从列表中消除长时间杀死的会话?
答案 0 :(得分:1)
这些应该由PMON自动清理,但有时您需要将其唤醒'在陷入困境的情况下。
要唤醒PMON,首先使用
获取PIDSELECT pid FROM v$process
WHERE addr =
(
SELECT paddr FROM v$bgprocess
WHERE name = 'PMON'
);
如果PID为6,则使用以下方式发送唤醒呼叫:
ORADEBUG WAKEUP 6
并且您可能需要重复该命令几次,直到失控会话被清除。