Comment pouvez-vous afficher le SQL qui s'exécute actuellement sur une base de données Oracle?
Des informations supplémentaires qui pourraient être utiles incluent l'utilisateur, l'identifiant de session, etc.
La plupart des informations sont disponibles dans v $ session ... et le texte SQL peut être récupéré à partir de v $ sql ou v $ sqltext_with_newlines ...
Voici une requête que j'utilise souvent qui formate le SQL en vol, la plus longue en haut.
-- 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;
Bonne réponse trouvée ici .
Exécutez le sql suivant:
Si la sortie est illisible, changez le LINESIZE (prenez d' ici ):
Si le SQL ci-dessus ne fonctionne pas, vous devrez peut-être vous connecter en tant que sysdba:
la source