删除 Oracle 终止会话
Removing Oracle killed session
我终止了一个会话
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 处于活动状态,因为大多数被杀死的会话都在合理的时间内从列表中清除(通常需要一秒钟)。
如何从列表中消除长时间播放的终止会话?
这些应该由 PMON 自动清理,但有时您需要 'wake it up' 在进程卡住的情况下。
要唤醒PMON,首先使用
获取PID
SELECT pid FROM v$process
WHERE addr =
(
SELECT paddr FROM v$bgprocess
WHERE name = 'PMON'
);
如果 PID 为 6,则使用以下方式发送唤醒呼叫:
ORADEBUG WAKEUP 6
并且您可能必须重复该命令几次,直到清除失控的会话。
我终止了一个会话
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 处于活动状态,因为大多数被杀死的会话都在合理的时间内从列表中清除(通常需要一秒钟)。
如何从列表中消除长时间播放的终止会话?
这些应该由 PMON 自动清理,但有时您需要 'wake it up' 在进程卡住的情况下。
要唤醒PMON,首先使用
获取PIDSELECT pid FROM v$process
WHERE addr =
(
SELECT paddr FROM v$bgprocess
WHERE name = 'PMON'
);
如果 PID 为 6,则使用以下方式发送唤醒呼叫:
ORADEBUG WAKEUP 6
并且您可能必须重复该命令几次,直到清除失控的会话。