www.devmedia.com.br
[versão para impressão]
Link original: http://www.devmedia.com.br/articles/viewcomp.asp?comp=4521

Novidades do Oracle 10g - Shrink segmentos em objetos

Veja novidades do Oracle 10g.

Novidades do Oracle 10g

Shrink segmentos em objetos

por Rodrigo Salviatto

Introdução

A nova versão do Oracle 10g disponibilizou um velho e conhecido comando para encolhermos os segmentos de dados alocados em alguns objetos,denominado SHRINK SPACE. Quando utilizado, conseguimos obter uma considerável melhora na performance de alguns comandos SQL e também reduzimos a fragmentação do banco de dados. Vejamos então, como utilizá-lo.

Pre-requisitos

Para utilizar a opção de SHRINK SPACE em alguns objetos, devemos configurar o parâmetro COMPATIBLE com valor igual ou superior a 10.0.0 no arquivo de parâmetros SPFILE. Vejamos exemplo na listagem 1.

 

SQL> ALTER SYSTEM SET COMPATIBLE=10.0.0 SCOPE=SPFILE;

 

Sistema Alterado.

Listagem 1. Configurando parâmetro COMPATIBLE no arquivo de parâmetros SPFILE. Este procedimento requer o reboot da instance.

O usuário que fará a execução do comando necessitará dos direitos de ALTER object.

A tablespace onde reside a tabela a ser encolhida, deve ser AUTO SEGMENT SPACE MANAGEMENT.

É possível executar a operação de SHRINK SPACE nos seguintes objetos:

Tabela

Indice

Lob

View Materializada

IOT

Como proceder

Para utilizarmos o SHRINK SPACE em uma determinada tabela, devemos inicialmente, executar o comando abaixo, para habilitar o SHRINK SPACE.

 

SQL> ALTER TABLE SCOTT.DEPT ENABLE ROW MOVEMENT;

 

Tabela alterada.

 

O Comando SHRINK SPACE possui as seguintes opções:

 

·         Sem opção – Encolhe os segmentos da tabela e a High Water Mark

 

SQL> ALTER TABLE SCOTT.DEPT SHRINK SPACE;

 

Tabela alterada.

 

·         COMPACT – Encolhe os segmentos mas não reduz a High Water Mark

 

SQL> ALTER TABLE SCOTT.DEPT SHRINK SPACE COMPACT;

 

Tabela alterada.

  

·         CASCADE – Encolhe os segmentos da tabela, a High Water Mark e todos os índices dependentes.

 

SQL> ALTER TABLE SCOTT.DEPT SHRINK SPACE CASCADE;

 

Tabela alterada.

 

Também é possível, encolher os segmentos não utilizados por índices, utilizando a sintaxe abaixo:

 

SQL> ALTER INDEX SCOTT.DEPT_IDX SHRINK SPACE;

 

Indice alterado.

 

Conclusão

Shrink Space pode ser utilizado de forma online, porém no momento de realocar os segmentos, será efetuado um lock exclusivo, podendo ocorrer erros em sua aplicação! Desta forma, programe esta tarefa, para executá-la fora do horário de grande utilização das tabelas.

Tenho certeza que esta importante funcionalidade irá trazer grandes benefícios para seu dia-a-dia. Faça um bom proveito e boa sorte!

Rodrigo Salviatto

Revista SQL Magazine lover