Inhaltsverzeichnis

Die SQL_ID meines lezten SQL Statements ermitteln und mit schreiben

Aufgabe: Nach der Ausführung eines Statements soll die SQL_ID aufgezeichnet werden, optional inkl. Ausführungplan.

In SQL Plus mit "set feedback on SQL_ID"

Ab Oracle 18c?

Als normaler User anmelden:

>SET feedback ON SQL_ID
>SELECT * FROM dual;
 
DUM
---
X
 
1 ROW selected.
 
SQL_ID: a5ks9fhw2v9s1
Wird in SQLCl / SQLDeveloper leider NICHT unterstützt!

Aus dem Cache der Datenbank

Falls Zugriff auf die v$SQL Tabellen besteht:

 SELECT   sql_fulltext
   FROM   v$sql sq   
  INNER JOIN   v$session se
     ON  (   sq.sql_id = se.prev_sql_id
         AND se.prev_child_number = sq.child_number
         AND sid = SYS_CONTEXT('USERENV', 'SID')
  )

Funktioniert aber dann so gut, das jetzt wirklich nur das letzte SQL gezeigt wird, ist das z.b. vom SQL*Plus intern erzeugt, ist der Informationsgewinn recht niedrig.

SQL_FULLTEXT
-------------------------------------------------------
BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;

D.h. über SQL*Plus funktioniert das so gar nicht, da ja immer irgendwas internes dazwischen kommt.


Quellen