Wenn man in seiner Oracle Datenbank Trigger zu Audit-Zwecken verwendet, ist man erstaunt, das als Apex Benutzer nicht der Anmeldebenutzer sondern ANONYMOUS oder APEX_PUBLIC_USER erscheint.Das Problem kann man natürlich mit ein paar PL/SQL Objekten lösen.:-)
Etwas unbekannt ist das Oracle Objekt Context, mit dem die Funktion sys_context erweitert werden kann.Die Funktion sys_context besteht aus zwei Parametern:Parameter 1: userenvParameter 2: ca 60 Stück u.a. OS_OSER, SESSION_USER, ...Wir können die Funktionen nun erweitern, indem wir den ersten Parameter ändern auf apex_env
Die Context Funktion benötigt zum Auffruf immer ein Package, das wir hiermit anlegen:
Führen wir einen Testcase durch und setzen den Context manuell:
Nun können wir den Context wieder auslesen:
Jetzt erstellen wir uns eine Audit-Tabelle, in der stehen soll, welcher APEX Benutzer auf welcher Seite, in welcher APP mit welcher Session IDdie Änderung durchgeführt hat.
und der passende Trigger dazu:
Jetzt brauchen wir nur noch den kleinen Testblock in unsere APEX-App einbauen:Gehen Sie dazu auf: Edit Application Properties / Security und dort auf Database Session.Im Bereich "Initialization PL/SQL Code" geben Sie dort ein:
Weitere Tipps und Tricks erfahren Sie in einem unserer APEX oder PL/SQL Kurse (auch als Video-Streaming)