セッションを終了しました
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プロセスを確認したところ、ゾンビは見つかりませんでした。現在のプロセスはすべて、生きているセッションと一貫しています。
これは、強制終了されたすべてのセッションで発生するわけではありません。強制終了されたセッションの大部分は妥当な時間内にリストから削除されるため(多くの場合、1秒かかる)、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
では表示されなくなりました。
セッションを終了した後、次を使用できます。
alter system disconnect session 'SID,SERIAL#' immediate;
このようなコマンドを生成するには、次のスクリプトを使用します。
select 'alter system disconnect session ''' || SID || ',' || SERIAL# || ''' immediate;' from v$session where STATUS not in ('ACTIVE','INACTIVE');