quarta-feira, 23 de setembro de 2009

Oracle Audit

Como muitos DBA's, também gosto de guardar meus LOG's de auditoria dentro do banco de dados.

Para isso, o primeiro passo é criar uma tablespace que irá manter os logs (Isto server apenas para não inflar a tablespace System).

CREATE TABLESPACE TBSDAT_AUDITORIA DATAFILE SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 8192M
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;


select TABLESPACE_NAME from dba_segments where SEGMENT_NAME='AUD$'
Para alterar a tablespace, podemos proceder de 2 formas, dependendo da versão do banco de dados.

Utilizar a package DBMS_AUDIT_MGMT ou o script que está no DOC ID: 1019377.6

BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,AUDIT_TRAIL_LOCATION_VALUE => 'TBSDAT_AUDITORIA');
END;


select TABLESPACE_NAME from dba_segments where SEGMENT_NAME='AUD$'

Metalink - DOC ID: 804624.1
The associated LOB and LOB INDEX segments for AUD$ are not moved from the SYSTEM tablespace when the AUD$ table is moved to another tablespace using the DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION procedure.


select owner,table_name,segment_name,tablespace_name from dba_lobs where table_name='AUD$'
select owner, table_name,index_name,index_type,tablespace_name from dba_indexes where table_name='AUD$'

alter table aud$ move lob (sqlbind) store as (tablespace TBSDAT_AUDITORIA);
alter table aud$ move lob (sqltext) store as (tablespace TBSDAT_AUDITORIA);

Finalmente alterar o parâmetro de inicialização:

alter system set audit_trail=db scope=spfile;

0 comentários: