Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie zeige ich laufende Prozesse in Oracle DB an?

Ich vermute, Sie möchten nur ein paar Spalten von V$SESSION und die SQL-Anweisung von V$SQL abrufen. Angenommen, Sie möchten die Hintergrundprozesse ausschließen, die Oracle selbst ausführt

SELECT sess.process, sess.status, sess.username, sess.schemaname, sql.sql_text
  FROM v$session sess,
       v$sql     sql
 WHERE sql.sql_id(+) = sess.sql_id
   AND sess.type     = 'USER'

Der äußere Join dient dazu, die Sitzungen zu behandeln, die derzeit nicht aktiv sind, vorausgesetzt, Sie möchten diese. Sie könnten auch die sql_fulltext-Spalte von V$SQL erhalten, die die vollständige SQL-Anweisung anstelle der ersten 1000 Zeichen enthält, aber das ist ein CLOB und daher wahrscheinlich etwas komplizierter zu handhaben.

Realistischerweise möchten Sie sich wahrscheinlich alles ansehen, was in V$SESSION verfügbar ist, da Sie wahrscheinlich viel mehr Informationen erhalten können, als SP_WHO bereitstellt.