¿Cómo puede mostrar el SQL que se está ejecutando actualmente en una base de datos Oracle?
La información adicional que sería útil incluiría usuario, ID de sesión, etc.
La mayor parte de la información está disponible en v $ session ... y el texto SQL se puede obtener de v $ sql o v $ sqltext_with_newlines ...
Aquí hay una consulta que uso a menudo en formatos SQL en vuelo, el más largo en la parte superior.
-- In Flight SQL
SELECT nvl(ses.username,'ORACLE PROC')||' ('||ses.sid||')' USERNAME,
SID,
MACHINE,
REPLACE(SQL.SQL_TEXT,CHR(10),'') STMT,
ltrim(to_char(floor(SES.LAST_CALL_ET/3600), '09')) || ':'
|| ltrim(to_char(floor(mod(SES.LAST_CALL_ET, 3600)/60), '09')) || ':'
|| ltrim(to_char(mod(SES.LAST_CALL_ET, 60), '09')) RUNT
FROM V$SESSION SES,
V$SQLtext_with_newlines SQL
where SES.STATUS = 'ACTIVE'
and SES.USERNAME is not null
and SES.SQL_ADDRESS = SQL.ADDRESS
and SES.SQL_HASH_VALUE = SQL.HASH_VALUE
and Ses.AUDSID <> userenv('SESSIONID')
order by runt desc, 1,sql.piece;
Buena respuesta encontrada aquí .
Ejecute el siguiente sql:
Si la salida no se puede leer, cambie LINESIZE (tome desde aquí ):
Si el sql anterior no funciona, es posible que deba iniciar sesión como sysdba:
fuente