← Sessions & Locks
Oracle · Sessions & Locks

How to check what SQL a session is running in Oracle

Show the current and previous SQL for a given Oracle session with the full SQL text from V$SQL.

Tested on11g12c18c19c21c23ai26ai

Give a SID; get the SQL_ID it is running now, the previous SQL_ID, and the full SQL text for both — handy when troubleshooting a single misbehaving session.

SET LONG 200000 PAGES 100 LINES 200
COL sql_text FORMAT A120

ACCEPT p_sid NUMBER PROMPT 'Enter SID: '

SELECT s.sid, s.serial#, s.username, s.status, s.machine, s.program,
       s.sql_id, s.prev_sql_id
FROM   v$session s
WHERE  s.sid = &&p_sid;

SELECT 'CURRENT'  AS which, sql_id, sql_fulltext AS sql_text
FROM   v$sql
WHERE  sql_id = (SELECT sql_id      FROM v$session WHERE sid = &p_sid)
UNION ALL
SELECT 'PREVIOUS', sql_id, sql_fulltext
FROM   v$sql
WHERE  sql_id = (SELECT prev_sql_id FROM v$session WHERE sid = &p_sid);
sessionsv$sqlsql_id