← Sessions & Locks
Oracle · Sessions & Locks

How to generate KILL SESSION statements in Oracle

Generate ALTER SYSTEM KILL SESSION statements for Oracle sessions matching common filters: by SQL_ID, by username, INACTIVE, SNIPED, or blocking chains.

Tested on11g12c18c19c21c23ai26ai

Five recipes for generating KILL SESSION statements you can review before running. Each one prints the ALTER SYSTEM KILL SESSION statements — nothing is killed until you copy and execute them.

Preview the generated statements before running. IMMEDIATE terminates sessions and rolls back their open transactions. A broad filter (e.g. all INACTIVE) may include useful sessions — inspect the list first.

-- 1) By SQL_ID (RAC-aware — includes the instance number)
SELECT 'ALTER SYSTEM KILL SESSION ''' || sid || ',' || serial# || ',@' || inst_id || ''' IMMEDIATE;'
FROM   gv$session
WHERE  sql_id = '&&sql_id';

-- 2) By username
SELECT 'ALTER SYSTEM KILL SESSION ''' || sid || ',' || serial# || ''' IMMEDIATE;'
FROM   v$session
WHERE  username = UPPER('&&username');

-- 3) All INACTIVE sessions
SELECT 'ALTER SYSTEM KILL SESSION ''' || sid || ',' || serial# || ''' IMMEDIATE;'
FROM   v$session
WHERE  status = 'INACTIVE';

-- 4) All SNIPED sessions
SELECT 'ALTER SYSTEM KILL SESSION ''' || sid || ',' || serial# || ''' IMMEDIATE;'
FROM   v$session
WHERE  status = 'SNIPED';

-- 5) Blocking chain: kill the blockers and everything they block
SET PAGESIZE 15000
SELECT 'ALTER SYSTEM KILL SESSION ''' || sid || ',' || serial# || ''' IMMEDIATE;'
FROM   v$session
WHERE  blocking_session_status = 'VALID'
   OR  sid IN (SELECT blocking_session
               FROM   v$session
               WHERE  blocking_session_status = 'VALID');
sessionskillv$sessionstate-changing