入力値より長い無動作時間のセッションを削除するSQL文を作成する

Pocket

【概要】
V$SESSIONにより、入力値より長い無動作時間のセッションを抽出し、SQL文を作成する。
【SQL文】
/*
|| ■入力値より長い無動作時間のセッションを削除するSQL文を作成する
||
|| 【項目の説明】
|| SQL_CMD :作成するSQL文
|| SQL_CNT :対象とするSQL文の数
*/
clear col

accept LAST_CALL_ET number prompt ‘何秒以上動作していないセッションを対象としますか? > ‘
set lines 120
set pages 1000
set trimspool on
set head off
set feed off
set veri off

col SQL_CMD for a120
col SQL_CNT for 999 new_value V_SQL_CNT noprint

define V_SQL_CNT = 0
set echo off

SELECT COUNT(*) SQL_CNT
FROM v$session
WHERE last_call_et > &LAST_CALL_ET
AND status <> ‘KILLED’
AND username not in
(‘SYS’,’SYSTEM’,’CTXSYS’,’MDSYS’,’ORDSYS’,’AURORA$JIS$UTILITY$’,’OUTLN’,’OSE$HTTP$ADMIN’)
;

spool kill_ses.sql
SELECT ‘alter system kill session ”’||TO_CHAR(SID) ||DECODE(SID, NULL, NULL, ‘,’) ||
TO_CHAR(SERIAL#) ||”’;’ SQL_CMD
FROM v$session
WHERE last_call_et > &LAST_CALL_ET
AND status <> ‘KILLED’
AND username not in
(‘SYS’,’SYSTEM’,’CTXSYS’,’MDSYS’,’ORDSYS’,’AURORA$JIS$UTILITY$’,’OUTLN’,’OSE$HTTP$ADMIN’)
;
spool off
prompt **************************************************************************
prompt &LAST_CALL_ET 秒以上動作していないセッションが &V_SQL_CNT 個見つかりました.
prompt SQLスクリプト「kill_ses.sql」をDBA権限を持つユーザで実行することで、該当
prompt するセッションをKILLすることができます。
prompt **************************************************************************

clear col
undef LAST_CALL_ET
undef SQL_CNT
set line 80

以上です (^^♪