Eliminando colunas

8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Misc | PL / SQL | SQL | RAC | WebLogic | Linux

Home “Artigos” 8i “Aqui

O Oracle 8i introduziu a capacidade de eliminar uma coluna de uma tabela. Antes disso, era necessário eliminar a tabela inteira e reconstruí-lo. Agora você pode marcar uma coluna como não utilizada (exclusão lógica) ou excluí-la completamente (exclusão física).

  • Exclusão lógico
  • Exclusão física
  • Considerações

Exclusão Lógica

Em tabelas grandes, o processo de remoção física de uma coluna pode consumir muito tempo e recursos. Por esta razão, você pode decidir excluir logicamente .

alter table table_name set unused (column_name);alter table table_name set unused (column_name1, column_name2);

Uma vez feito isso, as colunas não serão mais visíveis para o usuário. Se em uma data posterior você tiver tempo para excluir fisicamente as colunas, isso pode ser feito usando o seguinte.

alter table table_name drop unused columns;

Em tabelas grandes, você pode reduzir a quantidade de logs de desfazer acumulados usando a opção CHECKPOINT que força um checkpointa após o número especificado de linhas foram processadas.

A visualização DBA_UNUSED_COL_TABS pode ser usada para visualizar o número de colunas não utilizadas por tabela.

Exclusão física

Para eliminar fisicamente uma coluna, você pode usar uma das seguintes sintaxes, dependendo se deseja eliminar uma coluna única ou várias colunas.

alter table table_name drop column column_name;alter table table_name drop (column_name1, column_name2);

Eliminar um coluna de uma tabela fará com que todas as colunas não utilizadas dessa tabela sejam eliminadas ao mesmo tempo.

Considerações

Eliminar uma coluna pode não resultar em espaço livre utilizável adicional no bloco. Se a coluna for pequena, você obterá apenas pequenos pedaços de espaço em cada bloco que podem não ser reutilizáveis. A única maneira de liberá-lo para reutilização é reconstruir / mover a mesa. É mais eficiente marcar a coluna como inutilizável e reconstruir a tabela. Por padrão, uma movimentação não é uma operação online.

alter table table_name set unused (column_name);alter table table_name move;

Em versões posteriores do banco de dados, a operação de movimentação pode ser feita online.

alter table table_name set unused (column_name);alter table table_name move online;

Espero que isso ajude. Atenciosamente, Tim …

Voltar ao topo.

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *