Очистка журнала унифицированного аудита в Oracle

20.12.2018 0 комментариев

Журнал унифицированного можно удалить с помощью пакета DBMS_AUDIT_MGMT:

BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => FALSE);
END;
/

Также можно использовать last_arch_timestamp, если не хочется очистить все записи аудита и сохранить самые последние записи:

Узнать текущее значение можно с помощью запроса:

SELECT * FROM dba_audit_mgmt_last_arch_ts

А установить, к примеру:

BEGIN
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,last_archive_time => SYSTIMESTAMP — 31);
END;
/

После чего выполнить процедуру очистки:

BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
use_last_arch_timestamp => TRUE);
END;
/

Поскольку унифицированный аудит кеширует контрольный журнал в памяти для реализации функции «отложенной записи», которая способствует повышению производительности, некоторые записи, которые могут быть удалены, могут все еще оставаться в кеше. Для , чтобы также сначала очистить этот кеш, перед вызовом DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL добавить вызов: DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

Для создания задания очистки аудита по расписанию можно воспользоваться процедурой DBMS_AUDIT_MGMT.CREATE_PURGE_JOB

BEGIN
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
AUDIT_TRAIL_PURGE_INTERVAL => 24 /* hours */,
AUDIT_TRAIL_PURGE_NAME => ‘Daily_Audit_Purge_Job’,
USE_LAST_ARCH_TIMESTAMP => TRUE
);
END;
/