===== Database Auditing ===== ==== Disabling Create Session Auditing ==== By default, from 11gR1, when a database is created using DBCA, the database auditing parameter will be turned on. SQL> show parameter audit_trail NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ audit_trail string DB This means whenever a connection is made to the database, an entry is logged in the Audit Trail.\\ Therefore the table sys.aud$ can grow very quickly and on web applications will affect performance You can turn this off by entering the following as SYS user ... SYS> NOAUDIT CREATE SESSION WHENEVER SUCCESSFUL; Noaudit succeeded. This still means that failed logins are audited. ==== Viewing Audit Trail ==== SQL below will show everything that has been audited today alter session set nls_date_format = 'DD-MON-YYYY HH24:MI'; set linesize 160 col os_username format a15 col userhost format a45 select os_username, username, returncode, userhost, timestamp from dba_audit_trail where timestamp > trunc(sysdate) order by timestamp; ==== Purging Audit Trail ==== Copy sys.aud$ table to the SYSAUX tablespace BEGIN DBMS_AUDIT_MGMT.INIT_CLEANUP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, DEFAULT_CLEANUP_INTERVAL => 24 ); END; / Create a job to set the Archive Timestamp. In this case it will be over 30 days BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'DAILY_AUDIT_ARCHIVE_TIMESTAMP', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,LAST_ARCHIVE_TIME => sysdate-30); END;', start_date => sysdate, repeat_interval => 'FREQ=HOURLY;INTERVAL=24', enabled => TRUE, comments => 'Create an archive timestamp' ); END; / Create a purge job which will delete all audit entries older than the Archive Timestamp. BEGIN DBMS_AUDIT_MGMT.CREATE_PURGE_JOB( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, AUDIT_TRAIL_PURGE_INTERVAL => 24 /* hours */, AUDIT_TRAIL_PURGE_NAME => 'Daily_Audit_Purge_Job', USE_LAST_ARCH_TIMESTAMP => TRUE ); END; /