nunca foram utilizados.A marca dagua HWM e o limite do numero de blocos que uma tabela pode estar utilizando.Quando realizamos uma leitura completa da tabela (full table scan, FTS), o Oracle sempre ira ler todos os blocos utilizados ate a marca dagua. Se existir muitos blocos livres que ja foram utilizados ate a marca dagua, estes espacos livres (blocos) tambem serao lidos , isto gerar I/O extra e seu ambiente ira ter perda de perfomance durante operacoes de FTS.Vamos identificar a marca dagua na tabela e nos iremos saber se a tabela e candidata a reorganizacao.Encontraremos 2 tipos de blocos que devemos nos preocupar:Unused Space/empty_blocks Que nunca foram utilizado.Free Space/Blocks Blocos sofreram update e deleteSQL> create table teste_sparano as select * from dba_objects;Table created.SQL> analyze table teste_sparano compute statistics;Table analyzed.SQL> select blocks "Usados", 2 empty_blocks "Nunca Utilizado", 3 num_rows "Total de Linhas" 4 from user_tables 5 where table_name='TESTE_SPARANO'; Usados Nunca Utilizado Total de Linhas---------- --------------- --------------- 1016 7 69072 SQL> delete from teste_hwm 2 where owner ='SYS';30219 rows deleted.SQL> commit;Commit complete.Percebe que nao houve diferenca nos blocos utilizado.SQL> select blocks "Usados", 2 empty_blocks "Nunca Utilizado", 3 num_rows "Total de Linhas" 4 from user_tables 5 where table_name='TESTE_SPARANO'; Usados Nunca Utilizado Total de Linhas---------- --------------- --------------- 1016 7 38853Se voce tem um ambiente que possui tabelas que sofrem muitas modificacoes (update/delete), periodicamente voce ira precisar desfragementar suas tabelas.Verifique a necessidade de ReorganizacaoBaixo tempo de resposta (por tabela)Alto numero de linhas encadeadas (na verdade migrada)Tabela esta crescendo e espaco antigo nao esta sendo liberadoNota: As consultas que utilizam indices nao ira ter muito beneficio comparadas com as consultas que utilizam leitura completa (FTS).Vamos reorganizarNas versoes anteriores ao Oracle 10g , tinhamos 3 maneiras de reorganizar as tabelas.Export, Import e DropUsar o recurso Online Object RedefinitionUsar o comando Alter table move (para outra tablespace ou na mesma)Ja no Oracle 10g conseguimos uma outra maneira de reorganizar os dados.O comando Shrink: Este comando e aplicado somente em tabelas armazenado em Tablespace com AUTO SEGMENT SPACE MANAGEMENT.Antes de usar o SHRINK deve ser habilitado a opcao ROW MOVEMENT na tabela.SQL> alter table teste_sparano enable row movement; Table altered.Existe 2 maneiras de executar o SHRINK.1 Executar em Duas etapas Se estiver preocupado com disponibilidade da tabela2 Executar em Uma etapa Se nao estiver preocupado com disponibilidade da tabelaEu sempre utilizo este comando em duas etapas.Primeira etapa iremos realizar a reorganizacao das linhas da tabelas.Durante esta etapa todas DMLs continuam ocorrendo. Esta etapa e a mais demorada.Dependendo do tamanho da sua tabela este processo pode demorar horas.SQL> alter table teste_sparano shrink space compact; Table altered.Elapsed: 00:00:02.89Segunda etapa iremos resetar a marca dagua (HWM).Nesta etapa a tabela nao pode sofrer DML, porem esta etapa e muito rapida.SQL> alter table teste_sparano shrink space; Table altered.Elapsed: 00:00:00.27Ou Podemos executar este processo em uma etapa. O Oracle ira realizar a reorganizacao das linhas (rows ) e ira resetar o HWM.SQL> alter table teste_sparano shrink space; Table altered.Agora vamos ver a marca dagua:SQL> analyze table teste_sparano compute statistics;Table analyzed.SQL> select blocks "Usados", 2 empty_blocks "Nunca Utilizado", 3 num_rows "Total de Linhas" 4 from user_tables 5