2017-08-17 73 views
0

我殺了會議刪除甲骨文打死會議

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; 

我也查了有關甲骨文所有Linux進程並沒有發現殭屍:所有在場的過程對活動的會話保持一致。

編輯:這種情況不適用於所有死亡的會話。看起來PMON是活躍的,因爲大部分被殺的會話在合理的時間內從列表中清除(通常需要一秒鐘)。

可以做些什麼來消除列表中的長時間死亡會話?

+0

在最壞的情況下,您必須重新啓動數據庫。 –

+0

@Wernfried Domscheit,我猜我會的。但在此之前,我想了解爲什麼會發生這種情況,是否有一種不太殘酷的方式來進行清理。 – diziaq

回答

0

這些應該由PMON自動清除,但有時候在卡住的過程中需要'醒來'。

要喚醒PMON,先獲得PID使用

SELECT pid FROM v$process 
WHERE addr = 
(
    SELECT paddr FROM v$bgprocess 
    WHERE name = 'PMON' 
); 

如果PID是6然後使用發送喚醒呼叫:

ORADEBUG WAKEUP 6

和你可能需要重複該命令幾次,直到失控會話被清除。

+0

顯然,PMON是活躍的,因爲其他會話被命令殺死,目前幾乎立即從列表中消失。儘管如此,該問題所涉問題的會議仍處於KILLED狀態超過10天。 – diziaq

+0

你嘗試過喚醒嗎?這是一種強制PMON清理的方式,即使它對正常關閉或放鬆的會話也是有效的。 – sandman

+0

是的,我將SYS連接爲SYSDBA。執行ORADEBUG WAKEUP 2(這是PMON的當前pid)。得到的迴應'處理的聲明'。會議仍處於KILLED狀態。 – diziaq