¿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