Oracle

5dez

Exportanto tabelas vazias no Oracle 11 através do exp

No Oracle 11 tem um parâmetro (deferred_segment_creation) que indica ao SGBD para não alocar segmentos no banco de dados enquanto uma tabela está vazia. A configuração padrão de instalação é ativo (TRUE).
Desta forma, quem utiliza o utilitário “exp” para exportar as informações do banco de dados, observa que todas as tabelas vazias não são geradas no arquivo de exportação, e em alguns casos isto é um problema.
Para resolver esta situação existem algumas procedimentos que podem ser feitos. O primeiro é trocar a exportação do “exp” pelo utilitário “expdp”.
Outra forma é desativar esta opção através dos comandos ALTER SESSION e ALTER SYSTEM, deixando este parâmetro com o valor FALSE.

1
ALTER SYSTEM SET deferred_segment_creation=FALSE;

Entretanto, esta segunda opção somente irá valer para as tabelas criadas após a execução do comando.
Para resolver esta situação nas tabelas já criadas e vazias podemos utilizar a seguinte instrução:

1
ALTER TABLE nome_da_tabela ALLOCATE EXTENT;

A minha dica vai para o caso de você querer realizar o ALTER TABLE em todas as tabelas do seu OWNER. Para isso, basta executar o select abaixo, copiar o resultado completo e executar:

1
2
3
4
SELECT 'ALTER TABLE ' || TABLE_NAME || ' ALLOCATE EXTENT;'
  FROM DBA_TABLES
 WHERE UPPER(OWNER) = 'SEU_OWNER'
 ORDER BY TABLE_NAME

O resultado deverá ser algo deste tipo:

© Copyright 2018, Todos os direitos reservados.