Skip to Main Content

Breadcrumb

DML und Query Monitoring

Grunsätzliche Möglichkeiten für DML und Query Monitoring

Es gibt wie so oft mehrere Wege zum Ziel, die wir alle kurz vorstellen wollen.

Wir wollen in diesem Artikel nur den Weg mittels Unified Auditing zeigen. Der Grund dafür ist, dass es für alle Oracle Editions funktioniert und sowohl für DML als auch Query funktioniert. Das "alte" Standard Audit ist deutlich inflexibler und auch langsamer und sollte durch Unified Auditing abgelöst werden.

Unified Auditing konfigurieren

Um Unified Auditing zu nutzen, muss man es einschalten und "initialisieren". Mehr dazu finden Sie in unserem Artikel "Unified Auditing Konfigurieren".

Da Unified Auditing in einer Memory Struktur zwischenspeichert, muss man sicherheitshalber die Inhalte immer zuerst auf die Disk flushen.

EXEC SYS.DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

Abfragen der Informationen aus dem Unified Audit Trail:

select SESSIONID, ENTRY_ID, DBUSERNAME, CURRENT_USER, OBJECT_SCHEMA, OBJECT_NAME, UNIFIED_AUDIT_POLICIES,
       ACTION_NAME, SYSTEM_PRIVILEGE_USED, EVENT_TIMESTAMP, STATEMENT_ID, SQL_TEXT, SQL_BINDS
  from unified_audit_trail
 where UNIFIED_AUDIT_POLICIES like '%DBM_AUDIT%' /* es koennte ja auch noch eine weitere Policy anschlagen */
 order by sessionid, entry_id;

Alle Zugriffe auf ein bestimmtes Objekt - egal von wem!

Aufgabenstellung

Das ist der Klassiker: Wir wollen alle Zugriff auf ein bestimmtes Objekt auditieren.

 

Wir nehmen an, dass wir alle Zugriffe (DML und Query) auf die Tabelle DBM_TAB sehen wollen.

Umsetzung

noaudit policy DBM_AUDIT;
drop audit policy DBM_AUDIT;

create audit policy DBM_AUDIT
       ACTIONS select on scott.DBM_tab,
               insert on scott.DBM_tab,
               update on scott.DBM_tab,
               delete on scott.DBM_tab;

audit policy DBM_AUDIT;

Alles was ein DB User an DML und Query macht?

Aufgabenstellung

Wenn man herausfinden muss, welche DML und Query Statements ein bestimmter Datenbank Benutzer in der Datenbank absetzt, dann geht das natürlich auch.

In diesem Beispiel wollen wir wissen, welche Statements der Datenbankbenutzer SCOTT in der Datenbank absetzt.

Umsetzung

noaudit policy DBM_AUDIT;
drop audit policy DBM_AUDIT;

create audit policy DBM_AUDIT
       ACTIONS SELECT, INSERT, UPDATE, DELETE
       WHEN 'SYS_CONTEXT(''USERENV'', ''SESSION_USER'') = ''SCOTT'''
       EVALUATE PER STATEMENT;

audit policy DBM_AUDIT;

Alle DML und Query Statements, die von einem bestimmten Client aus durchgeführt werden.

Grundsätzlich kann man sehr einfach auf alles einschränken, was man via SYS_CONTEXT angeben kann.

Aufgabenstellung

Wir wollen wissen, welche DML und Query Statements vom Client "myhostname" aus gemacht werden, egal unter welchem Datenbankbenutzer und in welchem Schema.

Umsetzung

noaudit policy DBM_AUDIT;
drop audit policy DBM_AUDIT;

create audit policy DBM_AUDIT
       ACTIONS SELECT, INSERT, UPDATE, DELETE
       WHEN 'SYS_CONTEXT(''USERENV'', ''HOST'') = ''myhostname'''
       EVALUATE PER STATEMENT;

audit policy DBM_AUDIT;

Was eine PLSQL Procedure an SQL Statements ausführt

Das haben wir schon einmal in einem Artikel behandelt (SQL IN PLSQL TRACEN) und deswegen nur in Kurzversion.

Aufgabenstellung

Bei komplexen PLSQL Codes ist es oft nicht so einfach festzustellen, welche Zugriffe auf anderen Objekte (Tabellen, Views,...) bei einer Verarbeitung letztendlich erfolgen.

Zuerst muss man eine Policy anlegen, die die Zugriffe auf die Objekte (Tabellen, Views,...) sowie die Ausführung des PLSQL Codes auditiert.

Wir nehmen an, dass dies die Tabelle DBM_DUAL sowie die PLSQL Funktion DBM_TEST sind.

Umsetzung

noaudit policy DBM_AUDIT;
drop audit policy DBM_AUDIT;

create audit policy DBM_AUDIT
       ACTIONS select on scott.DBM_dual,
               insert on scott.DBM_dual,
               update on scott.DBM_dual,
               delete on scott.DBM_dual,
               execute on scott.DBM_test;

audit policy DBM_AUDIT;

Hinweis

Wenn man Datenbank Auditing nutzt, muss man sich um das Management des/der Audit Trails kümmern. Weiterführende Informationen zu diesem Thema finden Sie in unseren Artikeln zu Unified Audit auf unserer Homepage.