Aufgabe: Nach der Ausführung eines Statements soll die SQL_ID aufgezeichnet werden, optional inkl. Ausführungplan.
Ab Oracle 18c?
Als normaler User anmelden:
>SET feedback ON SQL_ID >SELECT * FROM dual; DUM --- X 1 ROW selected. SQL_ID: a5ks9fhw2v9s1
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.