Come si mostra l'esecuzione di SQL su un database Oracle?


26

Come si può mostrare l'SQL attualmente in esecuzione su un orb db?

Informazioni aggiuntive che potrebbero essere utili includono l'utente, l'ID sessione ecc.

Risposte:


35

La maggior parte delle informazioni è disponibile in v $ session ... e il testo SQL può essere acquisito da v $ sql o v $ sqltext_with_newlines ...

Ecco una query che uso spesso in formato SQL in volo, la più lunga in esecuzione al top.

-- 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;

qual è il significato di In Flight SQL?
toha

In volo = attualmente in esecuzione su un database Oracle, o in questo caso attualmente disponibile in v $ session e status = 'ACTIVE'
David Mann

9

Buona risposta trovata qui .

Eseguire il seguente sql:

select x.sid
      ,x.serial#
      ,x.username
      ,x.sql_id
      ,x.sql_child_number
      ,optimizer_mode
      ,hash_value
      ,address
      ,sql_text
from   v$sqlarea sqlarea
      ,v$session x
where  x.sql_hash_value = sqlarea.hash_value
and    x.sql_address    = sqlarea.address
and    x.username       is not null;

Se l'output è illeggibile, cambia LINESIZE (prendi da qui ):

SET LINESIZE 20000

Se il sql sopra non funziona, potrebbe essere necessario accedere come sysdba:

sqlplus '/as sysdba'

Il tuo link alla Buona risposta è morto
Gerrat,

@Gerrat Ho aggiornato il collegamento a un archivio memorizzato nella cache.
Clarkey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.