17.11.2020 20:43
Occul
 
Многие включают аудит и обращают внимание, что таблицы AUD$ и FGA_LOG$ начинают расти (они располагаются в табличном пространстве SYSAUX). Необходимо отслеживать их рост и ежедневно контролировать их размеры.

Количество строк
SQL код:
SELECT COUNT(*) FROM AUD$; 
Размер таблицы
SQL код:
SELECT SUM(BYTESFROM DBA_SEGMENTS WHERE SEGMENT_NAME='AUD$'
Самая старая запись
SQL код:
SELECT MIN(NTIMESTAMP#) FROM AUD$; 
В каких табличных пространствах находятся
SQL код:
SELECT table_nametablespace_name
FROM   dba_tables
WHERE  table_name IN 
('AUD$''FGA_LOG$')
ORDER BY table_name
Пример вывода
Код:
TABLE_NAME TABLESPACE_NAME
---------- ---------------
AUD$       SYSAUX
FGA_LOG$   SYSAUX
Если вам необходимо переместить журнал, например, в другое табличное пространство, можете сделать это с помощью процедуры
SQL код:
BEGIN
DBMS_AUDIT_MGMT
.SET_AUDIT_TRAIL_LOCATION(
   
audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
   
audit_trail_location_value  => '<tablespace_name>') ;
END;

Можно использовать следующие типы записей аудита
AUDIT_TRAIL_AUD_STD
AUDIT_TRAIL_FGA_STD
AUDIT_TRAIL_OS
AUDIT_TRAIL_XML
Либо, для всех из них: AUDIT_TRAIL_ALL

Прежде, чем что-либо менять, убедитесь, что автоочистка журнала не включена

SQL код:
set pagesize 150
set linesize 200
column parameter_name format a30
column parameter_value format a20
SELECT 
FROM DBA_AUDIT_MGMT_CONFIG_PARAMS
Код:
PARAMETER_NAME            PARAMETER_ AUDIT_TRAIL
------------------------- ---------- --------------------
DB AUDIT TABLESPACE       SYSAUX     STANDARD AUDIT TRAIL
DB AUDIT TABLESPACE       SYSAUX     FGA AUDIT TRAIL
AUDIT FILE MAX SIZE       10000      OS AUDIT TRAIL
AUDIT FILE MAX SIZE       10000      XML AUDIT TRAIL
AUDIT FILE MAX AGE        5          OS AUDIT TRAIL
AUDIT FILE MAX AGE        5          XML AUDIT TRAIL
DB AUDIT CLEAN BATCH SIZE 10000      STANDARD AUDIT TRAIL
DB AUDIT CLEAN BATCH SIZE 10000      FGA AUDIT TRAIL
OS FILE CLEAN BATCH SIZE  1000       OS AUDIT TRAIL
OS FILE CLEAN BATCH SIZE  1000       XML AUDIT TRAIL
в этом выводе не должно быть параметра DEFAULT CLEAN UP INTERVAL, если он есть, то лучше его сначала отключить.
SQL код:
BEGIN
DBMS_AUDIT_MGMT
.DEINIT_CLEANUP(
  
AUDIT_TRAIL_TYPE  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL);
END
и инициализируем очистку раз в 14 дней
SQL код:
BEGIN
 DBMS_AUDIT_MGMT
.INIT_CLEANUP(
    
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
    
DEFAULT_CLEANUP_INTERVAL => 24*14 
    
);
END;

ну и процедура полной очистки журналов аудита
SQL код:
CREATE OR REPLACE PROCEDURE SP_PURGE_AUDIT_TRAIL
AS
BEGIN 

  DBMS_AUDIT_MGMT
.CLEAR_LAST_ARCHIVE_TIMESTAMP(
    
AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL);

   
SYS.DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (
   
AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
   
USE_LAST_ARCH_TIMESTAMP => TRUE);
END;

или частичной, за 14 дней
SQL код:
CREATE OR REPLACE PROCEDURE SP_PURGE_AUDIT_TRAIL
AS
  
retention NUMBER;
BEGIN
  retention 
:= 14;
 
   
SYS.DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP (
   
AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
   
LAST_ARCHIVE_TIME => SYSTIMESTAMP retention
   
);

   
SYS.DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (
   
AUDIT_TRAIL_TYPE => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
   
USE_LAST_ARCH_TIMESTAMP => TRUE);
END;

которые можно запихнуть в задание
SQL код:
BEGIN
  SYS
.DBMS_SCHEDULER.CREATE_JOB (
        
job_name => 'JOB_PURGE_AUDIT_TRAIL',
        
schedule_name => 'SYS.MAINTENANCE_WINDOW_GROUP',
        
job_class => 'DEFAULT_JOB_CLASS',
        
job_type => 'PLSQL_BLOCK',
        
job_action => 'BEGIN SP_PURGE_AUDIT_TRAIL(); END;',
        
comments => 'Job to purge all audit trails'
    
);
   
    
SYS.DBMS_SCHEDULER.ENABLE(name => 'JOB_PURGE_AUDIT_TRAILS');
   
END;

Ну и неплохо зарегистрировать наш джоб в DBMS_AUDIT_MGMT
SQL код:
BEGIN
DBMS_AUDIT_MGMT
.SET_PURGE_JOB_STATUS(
  
audit_trail_purge_name      => 'JOB_PURGE_AUDIT_TRAIL',
  
audit_trail_status_value    => DBMS_AUDIT_MGMT.PURGE_JOB_ENABLE);
END;

Соответственно, проверить события очистки можно будет запросом
SQL код:
SELECT FROM DBA_AUDIT_MGMT_CLEAN_EVENTS
Часовой пояс GMT +3, время: 06:31.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.