Se você procurou por esse procedimento, provavelmente já sabe que não podemos redimensionar a tablespace SYSTEM.
Nessa tablespace podemos adicionar novos datafiles, porém, a mesma irá crescer e não será possível reduzir esse espaço que alocado.
Mas o foco desse post é falarmos sobre a tabela AUD$ que fica na tablespace SYSTEM. Quando configuramos a auditoria de alguma tabela do banco de dados, as informações são "populadas" na tabela AUD$ e para que a tabela não cresça muito e ocupe o espaço da tablespace SYSTEM, faremos o move da tabela AUD$ para outra tablespace, para isso, siga o procedimento abaixo:
1 - Verificar tablespace da tabela AUD$.
SQL> SELECT table_name, tablespace_name FROM dba_tables WHERE table_name ='AUD$';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ SYSTEM
2 - Criar uma nova tablespace de auditoria para mover a tabela AUD$.
SQL> create tablespace auditoria datafile '+DGDATAFILES' SIZE 128M autoextend on next 128M maxsize 25600m
extent management LOCAL autoallocate segment space management AUTO
LOGGING;
Tablespace criado.
3 - Verificar tamanho da tabela AUD$.
SQL> select segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where segment_name ='AUD$';
SEGMENT_NAME SIZE_IN_MEGABYTES
--------------------------------------------------------------------------------- -----------------
AUD$ 20080
Obs.: Nesse caso temos uma "pegadinha" do Oracle. Como podemos observar a tabela possui 20GB e como criei a tablespace com SIZE 128M e autoextend de 128M até crescimento total de 25G, será exibido o seguinte erro:
ORA-46267: Espaco insuficiente no tablespace 'AUDITORIA', n?o e possivel concluir a operac?o
Pois, o Oracle não consegue copiar toda a tabela de uma só vez com o size 128M, para corrigir o problema, você precisa fazer um resize do datafile da seguinte forma:
alter database datafile '+DGDATAFILES/oracleteste/datafile/auditoria.335.946922105' resize 25g;
4 - Mover a tabela AUD$ para tablespace AUDITORIA:
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => 'AUDITORIA');
END;
/
Obs.: No meu caso, demorou 32 minutos devido o tamanho da tabela AUD$.
5 - Verificar se a tabela foi movida.
Obs.: No meu caso, demorou 32 minutos devido o tamanho da tabela AUD$.
5 - Verificar se a tabela foi movida.
SQL> SELECT table_name, tablespace_name FROM dba_tables WHERE table_name ='AUD$';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
AUD$ AUDITORIA
6 - Verificar tamanho da tabela movida.
6 - Verificar tamanho da tabela movida.
SQL> select segment_name,bytes/1024/1024 size_in_megabytes from dba_segments where segment_name ='AUD$';
SEGMENT_NAME SIZE_IN_MEGABYTES
------------------------------ -----------------
AUD$ 20280
Espero ter ajudado, qualquer dúvida, deixe o seu comentário.
Um abraço.
Nenhum comentário:
Postar um comentário