- This topic has 4 replies, 4 voices, and was last updated 9 years, 5 months ago by Fábio Prado.
-
AuthorPosts
-
19 de maio de 2015 at 4:26 pm #107514ericclauberParticipant
Bom dia a todos! Agradeço ajuda desde já.
Em um banco de dados Oracle 11g. Reparei que TS_SYSTEM, estava crescendo muito, com o datafile system01.dbf chegando a 17gb. Assim procurei que objetos estavam tomando tanto espaço, e vi que era a tabela de auditoria ‘AUD$’.
Neste caso também reparei que a era mais create session(com muita quebra de conexao que tem que ser resolvido… rs).
LIMPEI a tabela com ‘truncate table table_name drop storage’. A tabela foi limpa o datafile diminuiu de 17gb para 800m. Mas quando tento redimensionar a TABLESPACE, nao permite por causa dos dados fragmentados.
TENTEI REORGANIZAR —
alter table AUD$ disable row movement;
alter table AUD$ shrink space compact;
alter table AUD$ shrink space;
>>> SENDO QUE SO FUNCIONA COM TABLESPACE COM ASSM.Também tentei, ‘reorganizar tabela’uma opçao do ‘Enterprise Manager’, mas nao permite as tabela pertencente ao dícionário de dados.
ALGUMA SOLUÇÃO??? ESTOU COM 16GB DE ESPAÇO INUTILIZÁVEL E PRECISANDO.
GRATO!!!
19 de maio de 2015 at 5:39 pm #107515C-S-RParticipant@ericclauber,
Sempre que tenho problemas com redimensionamento de tbs eu movo os objetos para uma outra tbs, do o resize e volto os objetos. No seu caso como se trata da system não sei se vai funcionar.
O shrink geralmente eu uso para liberar espaço após delete de muitos registros. Mas nunca consegui ter muito ganho para o resize.
Espero ter ajudado.
19 de maio de 2015 at 8:05 pm #107518rmanParticipant@ericclauber
O TRUNCATE já baixa a marca d’agua da tabela desta forma os EXTENDS são desalocados liberando espaço, logo não é necessário utilizar o SHRINK.
Só um parênteses não é permitido realizar SHRINK em objetos da TABLESPACE SYSTEM, você teria que mover o objeto para outra TABLESPACE.
Voltando ao assunto, utilize ALTER TABLE … MOVE para trazer a TABLE para o inicio do TABLESPACE, desta forma será possível fazer o RESIZE. Identifique através do Enterprise Manager qual é o objeto que está o fim do TABLESPACE, veja o conteúdo do TABLESPACE, existe um mapa de blocos.
Para falar a verdade eu também estou nessa situação, a TABLE AUD$ cresceu bastante, mas ainda não fiz nada, estou estudando melhor o caso.
Me diz por que você utilizou a opção DROP STORAGE do TRUNCATE TABLE? O que ele faz em especifico?
19 de maio de 2015 at 10:14 pm #107519ericclauberParticipantJa tentei o alter table… move e nao deu certo. vou verificar a questao do Mapa de blocos.
o DROP STORAGE, é default, nao precisava ter usado, onde libera o espaço para outros objetos. Pois a clausula, REUSE STORAGE, permite somente o reuso do espaço pelo mesmo objeto(insert/update). http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_10007.htm#SQLRF01707
15 de junho de 2015 at 8:03 pm #107562Fábio PradoParticipant@EricClauber,
O ideal, além de fazer um limpeza periódica na tabela de auditoria, é movê-la para um tablespace novo, como no exemplo do script abaixo, que demonstro em meus treinamentos Database Performance Tuning:
-- CRIANDO tablespace AUDSYS
create tablespace AUDSYS datafile '/tmp/audsys.dbf' size 100M
AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED
extent management local -- Locally managed
segment space management auto -- ASSM
;-- movendo AUD$ para tablespace AUSYS
BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value => 'AUDSYS');
END;
/-- movendo FGA_LOG$ para tablespace AUSYS
BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
audit_trail_location_value => 'AUDSYS');
END;
/-- limpando registros de auditoria obsoletos (maximo de 41,6 dias = 999 horas)
BEGIN
DBMS_AUDIT_MGMT.init_cleanup(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval => 999 /* 0-999 horas */);
END;
/
[]s
-
AuthorPosts
- You must be logged in to reply to this topic.