- Este tópico contém 3 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 1 mês atrás por
Anônimo.
-
AutorPosts
-
21 de janeiro de 2010 às 8:22 pm #92237
silverwal
ParticipantePessoal,
Estou com um cliente que tem uma base de 350Gb e fez milhões de deleções, agora ele quer um reorg, mas antes disso ele quer saber qto o reorg pode liberar de espaço para ele.
Alguem tem algum script que verifica quanto de espaço liberou na tabela após deletes?
Valeu!
21 de janeiro de 2010 às 8:59 pm #92238VitorLeandro
ParticipanteBoa tarde amigo,
Se o seu Oracle for 10G ou superior, você pode utilizar o “Segment Advisor” que verifica toda a sua base e aponta o quanto de espaço cada objeto está utilizando e o quanto está sendo desperdiçado…
Mas, se você já sabe qual tabela, você pode fazer um shrik ou recriar a tabela na mão e depois renomear.
Shrink:
ALTER TABLE OWNER.TABELA SHRINK SPACE COMPACT;O código acima, reagrupa os dados do objeto mas não libera o espaço reaproveitado. Porem não loca a tabela durante o procedimento o que pode ser feito sem parada programada, apenas provocando um acrescimo de consumo de I/O e CPU.
Se você puder fazer isso em um horário programado sem usuários acessando esta tabela, utilize o comando acima sem o COMPACT, que alem de compactar, irá liberar o espaço.
ALTER TABLE OWNER.TABELA SHRINK SPACE;Uma estratégia mais ousada, porem mais rápida em alguns casos é fazer o rebuild da tabela na mão, utilizando o CREATE TABLE AS SELECT * FROM… Em seguida efetuar o rename das tabelas e recompilar objetos dependentes.
Após qualquer uma das ações, faça uma coleta de estatística do objeto.
Se a tabela também contiver indexes, faça um shrink ou rebuild dos indexes também.
Se o índex não for muito grande, eu prefiro o rebuild
ALTER INDEX OWNER.INDEX_NAME REBUILD COMPUTE STATISTICS;2 de fevereiro de 2010 às 4:30 pm #92403David Siqueira
ParticipanteSilver, use a visão DBA_SEGMENTS para saber quantos blocos estão sendo utilizados e depois multiplique pelo valor do seu tamanho de bloco, a saida será em bytes, converta pra MB ou GB e veja quanto realmente esta usando.
Pel_Dist_Cd.System> desc dba_segments
Nome Nulo? Tipo
OWNER VARCHAR2(30)
SEGMENT_NAME VARCHAR2(81)
PARTITION_NAME VARCHAR2(30)
SEGMENT_TYPE VARCHAR2(18)
TABLESPACE_NAME VARCHAR2(30)
HEADER_FILE NUMBER
HEADER_BLOCK NUMBER
BYTES NUMBER
BLOCKS NUMBER
EXTENTS NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
FREELISTS NUMBER
FREELIST_GROUPS NUMBER
RELATIVE_FNO NUMBER
BUFFER_POOL VARCHAR2(7)Pel_Dist_Cd.System>
Espero ter ajudado.
3 de fevereiro de 2010 às 2:32 pm #92440Anônimo
Olá silverwal,
Eu já postei algo semelhante a seu problema de uma olhada neste link e me diz se isso resolve.
https://www.profissionaloracle.com.br/mo … pic&t=3872
-
AutorPosts
- Você deve fazer login para responder a este tópico.