← Sessions & Locks
Oracle · Sessions & Locks

How to disconnect a session in Oracle

Disconnect an Oracle session cleanly with ALTER SYSTEM DISCONNECT SESSION POST_TRANSACTION or IMMEDIATE.

Tested on11g12c18c19c21c23ai26ai

DISCONNECT SESSION kills the dedicated server process behind the session. POST_TRANSACTION waits for the open transaction to finish; IMMEDIATE cuts it off and rolls back.

This ends the session and its server process. POST_TRANSACTION is safer for OLTP — it lets the current transaction commit or roll back first. Use IMMEDIATE only when you have to.

-- Find the session first
SELECT sid, serial#, username, machine, program, status, last_call_et
FROM   v$session
WHERE  username = UPPER('&&target_user')
ORDER BY last_call_et;

-- Wait for the current transaction, then disconnect
ALTER SYSTEM DISCONNECT SESSION '&&sid,&&serial' POST_TRANSACTION;

-- Or force it immediately (rolls back)
-- ALTER SYSTEM DISCONNECT SESSION '&sid,&serial' IMMEDIATE;

-- Verify (read-only)
SELECT sid, serial#, username, status
FROM   v$session
WHERE  sid = &sid AND serial# = &serial;
sessionsdisconnectalter system