Oracle
清理 Oracle 終止會話
我殺死了一個會話
ALTER SYSTEM KILL SESSION '123,456' IMMEDIATE;
但它會保留
v$session
10 天,儘管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 似乎處於活動狀態,因為大多數被殺死的會話都在合理的時間內從列表中清除(通常需要一秒鐘)。
可以做些什麼來從列表中消除長時間播放的終止會話?
我認為這是已被終止的非活動會話的預期行為。
我有一個會話連接為處於“非活動”狀態的使用者“JAY”。
[oracle@myserver datafile]$ sqlplus jay@hrpdb Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
讓我們使用 sys 使用者檢查會話詳細資訊。
SQL> col username format a20 SQL> select sid,serial#,username,status from v$session where username ='JAY'; SID SERIAL# USERNAME STATUS ---------- ---------- -------------------- -------- 15 36102 JAY INACTIVE
讓我們殺了它。
SQL> alter system kill session '15,36102'; System altered.
再次檢查會話詳細資訊。
SQL> select sid,serial#,username,status from v$session where username ='JAY'; SID SERIAL# USERNAME STATUS ---------- ---------- -------------------- -------- 15 36102 JAY KILLED
它仍然處於“KILLED”狀態。
現在讓我們嘗試在 Jay 的會話中進行一些操作,該會話處於非活動狀態並被終止。
SQL> select * from tabs; select * from tabs * ERROR at line 1: ORA-00028: your session has been killed
現在讓我們使用 SYS 使用者檢查會話詳細資訊。
SQL> select sid,serial#,username,status from v$session where username ='JAY'; no rows selected
會話在 中不再可見
v$session
。