Erro ao mover a AUD$ usando a procedure DBMS_AUDIT_MGMT- (ORA-46267,ORA-06512 SYS.DBMS_AUDIT_MGMT)

Recentemente ao realizar um atividade cotidiana de organização, um simples processo de movimentação das tabelas AUD$ e $FGA_LOG. Movendo da tablespace SYSTEM para uma nova tablespace (AUDIT_TBS), usando a procedure DBMS_AUDIT_MGMT (disponibilizada a partir da versão 11gR2 mais informações sobre o processo de move da AUD$ e FGA_LOG), recebi um erro ORA-46267 que faz referencia a falta de espaço. O erro ocorreu mesmo a tablespace sendo criada com mais do que o dobro de espaço para armazenar as tabelas AUD$ e $FGA_LOG.
SQL> create tablespace audit_tbs force logging datafile '/u01/app/oracle/oradata/lamimtst/audit_tbs01.dbf' size 100m autoextend on next 100m maxsize 10G;

Tablespace created.

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> col segment_name for a60
select segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where segment_name in ('AUD$','FGA_LOG$');
SQL>

SEGMENT_NAME                                                 SIZE_IN_MEGABYTES
------------------------------------------------------------ -----------------
AUD$                                                                      2811
FGA_LOG$                                                                 ,0625 
SQL> 
SQL> BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,--this moves table AUD$
audit_trail_location_value => 'AUDIT_TBS');
END;
/   2    3    4    5    6

BEGIN
*
ERROR at line 1:
ORA-46267: Insufficient space in 'AUDIT_TBS' tablespace, cannot complete operation
ORA-06512: em "SYS.DBMS_AUDIT_MGMT", line 1659
ORA-06512: em line 2
Mais uma vez, vale destacar que a tabela AUD$ que estava sendo movida, tinha um tamanho de 2811M e a tablespace AUDIT_TBS foi criada com size inicial de 100M, autoextend de 100M e maxsize de 10G (conforme pode ser verificado acima). Desta forma, a tablespace criada tem espaço suficiente para acomodar a tabela e ainda assim tive um erro refrente a espaço insuficiente.
O erro ocorre devido a tablespace criada (independente de ter sido criada com extend on ou não) ter um size inicial menor do que o tamanho da AUD$. Neste caso, nossa AUD$ está com 2811M, enquanto o tamanho inicial da tablespace AUDIT_TBS. 
A solução para esse problema, foi alterar o tamanho inicial da tablespace AUDIT_TBS. No exemplo abaixo, alterei o tamanho inicial para 5G e posteriormente executei o processo de movimentação da AUD$ com sucesso.
16:24:34 SQL> 16:24:34 SQL>
16:43:18 SQL> alter database datafile '/u01/app/oracle/oradata/lamimtst/audit_tbs01.dbf' resize 5g;

Database altered.

16:46:53 SQL> BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,--this moves table AUD$
audit_trail_location_value => 'AUDIT_TBS');
END;
/16:46:58   2  16:46:58   3  16:46:58   4  16:46:58   5  16:46:58   6

PL/SQL procedure successfully completed.

16:48:51 SQL>
16:48:51 SQL> BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,--this moves table FGA_LOG$
audit_trail_location_value => 'AUDIT_TBS');
END;
/16:48:56   2  16:48:56   3  16:48:56   4  16:48:56   5  16:48:56   6

PL/SQL procedure successfully completed.

16:49:06 SQL> SELECT table_name, tablespace_name FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY table_name;16:50:44   2

TABLE_NAME                     TABLESPACE_NAME
------------------------------ ------------------------------
AUD$                           AUDIT_TBS
FGA_LOG$                       AUDIT_TBS

16:50:45 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
------------------------------------------------------------ -----------------
AUD$                                                                      8319
FGA_LOG$                                                                 ,0625

16:50:50 SQL>
Espero que este artigo possa ajuda-los. Um abraço e até o próximo artigo.

Comentários