Oracle DB: Аудит

Материал из sysadm
Перейти к навигации Перейти к поиску

Обслуживание аудита

Ссылки по теме:

Типы аудита

  • AUDIT_TRAIL_ALL, все типы аудита
  • AUDIT_TRAIL_AUD_STD, стандартная таблица аудита, AUD$
  • AUDIT_TRAIL_FGA_STD, Fine-grained, таблица FGA_LOG$
  • AUDIT_TRAIL_UNIFIED
  • AUDIT_TRAIL_XML
  • AUDIT_TRAIL_OS

Ручная чистка стандартного аудита

-- определение размера таблиц
SELECT segment_name, round(bytes/1024/1024/1024,1) as sz_gb FROM DBA_SEGMENTS WHERE SEGMENT_NAME IN ('AUD$', 'FGA_LOG$');

-- определение диапазона дат и количества записей
col t1 format a30;
col t2 format a30;
SELECT min(ntimestamp#) t1, max(ntimestamp#) t2, count(*) count FROM SYS.AUD$;
SELECT min(ntimestamp#) t1, max(ntimestamp#) t2, count(*) count FROM SYS.FGA_LOG$;

-- проверка параметров автоматической чистки
SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS;

PARAMETER_NAME                 PARAMETER_VALUE      AUDIT_TRAIL
------------------------------ -------------------- ------------------------------------------------------------------------------------
DEFAULT CLEAN UP INTERVAL      24                   STANDARD AUDIT TRAIL
DEFAULT CLEAN UP INTERVAL      24                   FGA AUDIT TRAIL

-- если присутствуют данные параметры, то необходимо переинициализировать автоматическую чистку
-- если параметры отсутствуют, то необходимо инициализировать автоматическую чистку
-- переинициализация автоматической чистки
BEGIN
  DBMS_AUDIT_MGMT.DEINIT_CLEANUP(
    AUDIT_TRAIL_TYPE  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD
  );
DBMS_AUDIT_MGMT.INIT_CLEANUP(
  AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    DEFAULT_CLEANUP_INTERVAL => 24*7           // интервал задается в часах, допустимый диапазон [1-999] 
  );
END;

-- чистка до заданной даты
-- необходимо учитывать, что чистка может привести к переполнению каталога с архив-логами
-- необходимо определить диапазон данных аудита и выбирать дату так, чтобы в одну итерацию чистки не попадало слишком много данных
BEGIN
  SYS.DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP (
    AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    LAST_ARCHIVE_TIME => SYSTIMESTAMP - <retention_days>
  );
  SYS.DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (
    AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
    USE_LAST_ARCH_TIMESTAMP => TRUE
  );
  commit;
END;
/