Ab 11g kann das viel einfacher über DB Packages getan werden.
Grund: - Damit der System Tablespace nicht voll läuft - Ein trigger auf der aud$ wird dann möglich, um manipulationen zu überwachen
create table system.aud$ tablespace TOOLS as select * from aud$; create index system.i_aud1 on system.aud$(sessionid, ses$tid) tablespace TOOLS ; rename aud$ to aud$_temp; create view aud$ as select * from system.aud$;
Folgende Tabelle schlägt Alexander Kornbrust von Red Database Securtiy vor zu überwachen.
AUDIT CREATE SESSION WHENEVER NOT SUCCESSFUL; AUDIT CREATE USER; AUDIT ALTER USER; AUDIT DROP USER; AUDIT ALTER SYSTEM; AUDIT SELECT ON DBA_USERS; AUDIT DELETE ON SYS.AUD$; AUDIT UPDATE ON SYS.AUD$;
Falls wir ganz paranoid sind, können wir die Log Info auch über einen Trigger mit dem Aufruf einer Seite eines Webserver tracen lassen.
CREATE OR REPLACE TRIGGER audit_trigger after UPDATE ON system.aud$ FOR each ROW WHEN (NEW.action# = 101 OR NEW.action# = 102) DECLARE v_rc VARCHAR2(4096); BEGIN BEGIN v_rc:=UTL_HTTP.request('http://10.0.0.11/user='||:NEW.userid); EXCEPTION WHEN UTL_HTTP.REQUEST_FAILED THEN NULL; END; END;