A implementação e utilização dos recursos de auditoria é uma necessidade crescente nas organizações atuais, independentemente do setor de atuação.
Devido a esta necessidade nos deparamos cada vez mais com ambiente Oracle com grande quantidade de registros de auditoria que geralmente são armazenados diretamente no banco de dados, em uma tabela do owner SYS, conhecida como AUD$ (para maiores informações de detalhes sobre auditória).
Temos 2 fatores principais que devemos levar em consideração ao administrar os dados de auditoria, que são a retenção (tempo e tamanho) dos arquivos de auditoria e o local de armazenamento (por padrão localizado na tablespace SYSTEM).
Afim de melhorar o gerenciamento da AUD$, é recomendada a criação de uma tablespace específica de auditoria com gerenciamento automático de segmentos (automatic segment space management), reduzindo assim os eventos de espera relacionados a mesma. Além de simplificar a realização de processos de shrink e/ou move, também evita a fragmentação da tablespace SYSTEM.
Neste artigo estarei abordando o processo de criação de uma tablespace para auditoria e a movimentação da AUD$ e FGA_LOG$ para esta tablespace.
Primeiramente, estarei verificando a tablespace onde estão localizadas as tablelas AUD$ e a FGA_LOG$ e posteriormente o seu respectivo tamanho.
SQL> col table_name for a30 SQL> set lines 210 SQL> SELECT table_name, tablespace_name FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name; 2 TABLE_NAME TABLESPACE_NAME ------------------------------ ------------------------------ AUD$ SYSTEM FGA_LOG$ SYSTEM SQL> select segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where segment_name in ('AUD$','FGA_LOG$'); SEGMENT_NAME SIZE_IN_MEGABYTES ------------------------------ ----------------- FGA_LOG$ .0625 AUD$ .0625 SQL>
Podemos ver acima que as tabelas de auditoria estão localizadas na tablespace SYSTEM o que não é recomendado e que possuem 0625Mb. Por se tratar de um ambiente de testes recem criado o tamanho das mesmas é bem pequeno. Porém em ambientes produtivos teremos cenários em que estas tabelas podem representar muitos GB.
O proximo passo após esta confirmação, é realizar a crição da tablespace que será usada para armazenar as tabelas de auditoria. Em meu exemplo, estarei criando a tablespace AUDIT_TBS com um tamanho inicial de 100Mb, autoextend on e tamanho máximo de 2Gb.
SQL> create tablespace AUDIT_TBS datafile '/orabin/app/oracle/oradata/LAMIMCDB/datafile/audit_tbs01.dbf' size 100m autoextend on next 10M maxsize 2G; Tablespace created. SQL>
Realizada a criação da nova tablespace que será utilizada para auditoria, vamos a etapa de movimentação das tabelas AUD$ e FGA_LOG$. Para este processo, estarei usando a procedure DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION, disponível a partir da versão 11gR2, para alterar a localização das tabelas de auditoria.
SQL> BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,--MOVE A TABELA AUD$ audit_trail_location_value => 'AUDIT_TBS'); END; / 2 3 4 5 6 PL/SQL procedure successfully completed. SQL> BEGIN DBMS_AUDIT_MGMT.set_audit_trail_location( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,--MOVE A TABELA FGA_LOG$ audit_trail_location_value => 'AUDIT_TBS'); END; / 2 3 4 5 6 PL/SQL procedure successfully completed. SQL> SQL>
Concluída a movimentação, podemos validar que as tabelas estarão localizadas na tablespace AUDIT_TBS e não mais na SYSTEM.
SQL> SELECT table_name, tablespace_name FROM dba_tables WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name; 2 TABLE_NAME TABLESPACE_NAME ------------------------------ ------------------------------ AUD$ AUDIT_TBS FGA_LOG$ AUDIT_TBS
Em breve, estarei criando um artigo para gerenciamento da retenção da auditoria.
Fonte:
How to Reorganize SYS.AUD$ Table (Doc ID 166301.1)
How To Move The DB Audit Trails To A New Tablespace Using DBMS_AUDIT_MGMT? (Doc ID 1328239.1)
Otimo post ! 👏
ResponderExcluir