Inutilizando uma coluna no Oracle (remoção rápida)

Categoria: Oracle
Publicado em 10 de Julho de 2013

Existem casos em que ao invés de remover uma coluna, é mais vantagem declará-la como inutilizada. Os efeitos serão os mesmos de um ALTER TABLE com DROP, com a vantagem de que inutilizar uma coluna é mais performático.

Por exemplo, ao inutilizar uma coluna, não será possível recuperá-la via ROLLBACK (já que é uma operação DDL e não DML), todas as constraints e índices associados também serão removidos e será possível criar ou renomear novos campos utilizando o mesmo nome da coluna inutilizada. Porém, inutilizar uma coluna é mais rápido do que removê-la.

Portanto, em um ambiente de produção pesado, pode-se optar por inutilizar uma coluna:

1
2
3
4
5
6
7
ALTER TABLE TABELA_CLIENTES
SET UNUSED COLUMN DESCRICAO
;
 
ALTER TABLE TABELA_CLIENTES
SET UNUSED(ENDERECO)
;

A sintaxe da primeira alteração utiliza a palavra "COLUMN", onde apenas um campo pode ser especificado.

A sintaxe da segunda alteração não utiliza a palavra "COLUMN", sendo assim, parênteses precisam ser usados e mais de um campo pode ser especificado separados por vírgula.

No momento mais adequado, onde há baixa carga de servidor, as colunas inutilizadas podem ser removidas:

1
2
3
ALTER TABLE TABELA_CLIENTES 
DROP UNUSED COLUMNS
;

Para visualizar as colunas inutilizadas que ainda não foram removidas:

1
2
SELECT * FROM USER_UNUSED_COL_TABS
;



 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados