Estou tendo um problema para arquivar e excluir partes da fga_log$
tabela.
Aqui está o que um script basicamente faz
insert into fga_log_archive
select
...
from
sys.fga_log$;
begin
sys.dbms_audit_mgmt.set_last_archive_timestamp(
audit_trail_type => sys.dbms_audit_mgmt.audit_trail_fga_std,
last_archive_time => systimestamp
);
sys.dbms_audit_mgmt.clean_audit_trail(
audit_trail_type => sys.dbms_audit_mgmt.audit_trail_fga_std,
use_last_arch_timestamp => true
);
end;
/
A documentação para dbms_audit_mgmt.clean_audit_trail diz:
Este procedimento exclui os registros da trilha de auditoria. O
CLEAN_AUDIT_TRAIL
procedimento geralmente é chamado depois que oSET_LAST_ARCHIVE_TIMESTAMP
procedimento foi usado para definir o último registro de data e hora arquivado para os registros de auditoria.
Portanto, esperava que os registros que foram arquivados com a instrução insert fossem excluídos da fga_log$
tabela pela clean_audit_trail
chamada. Esse não é o caso, no entanto. Estou esquecendo de algo?
Editar
Os parâmetros de configuração de auditoria selecionados com
select
substrb(parameter_name ,1,25) name,
substrb(parameter_value,1,20) value,
substrb(audit_trail ,1,20) trail
from
dba_audit_mgmt_config_params
;
é
NAME VALUE TRAIL
------------------------- -------------------- --------------------
DB AUDIT TABLESPACE SYSAUX STANDARD AUDIT TRAIL
DB AUDIT TABLESPACE AUDIT_LOG_TABLESPACE 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 999 FGA AUDIT TRAIL
Editar II
select * from v$version
retorna
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
Como Mat apontou, encontrei o Bug 9164488 (
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL does not delete sys.aud$ and sys.fga_log$ tables [ID 9164488.8]
) que deve ser corrigido na versão 11.2.0.2.Enquanto isso , rodando em 11.2.0.1, consegui contornar o bug com um trabalho de limpeza para fazer o trabalho. Assim que eu corri
clean_audit_trail
faria o trabalho, como esperado anteriormente.