=====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 ====
* https://tonyhasler.wordpress.com/2010/01/17/identifying-the-sql_id-of-static-sql-in-plsql-blocks/