Oracle: Exp ou Expdp não faz export de todas as tabelas
- Siltech Consult
- 8 de out. de 2019
- 1 min de leitura
Esta problema é interessante e até onde testei, ocorre apenas em versões 11.2.
Quando fazemos um exp (tanto faz usar o exp tradicional ou o datapump/expdp) nem todas as tabelas são exportadas, portanto, quem faz uso de dump como estratégia de backup deve se preocupar bastante.
Basicamente, são as tabelas que nunca possuíram registros não são exportadas.
Isso ocorre porque na versão 11g, existe uma nova feature comandada por um novo parametro chamado ‘deferred_segment_creation’ e o default deste parametro é true.
Quando este parametro está true, toda vez que uma tabela nova é criada, embora ela seja registrada no dicionário de dados, o oracle não cria nenhum segmento/extent para a mesma. A vantagem é que com isso, existe uma grande economia de espaço em disco uma vez que o extent somente será criado após o primeiro insert que a tabela sofrer. O que esqueceram é avisar isso para o Exp e para o data_pump.
Então em bancos com este parametro no modo default, quando é utilizado o datapump ou o exp como estas tabelas não possuem extents elas não são exportadas causando assim uma grande falha em casos onde o dump é o meio usado para transferência destas informações ou mesmo backup desta base.
Existem duas formas de se contornar esta situação:
1) ANTES de CRIAR estas tabelas, deixar este banco com este parametro em false, forçando assim o mesmo a se comportar tal qual uma base 10g neste sentido;
2) Executando para cada tabela com rows=no o seguinte comando: alter table <nomedatabela> allocate extent, pois assim será gerado um extent para esta tabela então no próximo dump ela será exportada.
Dúvidas? silverio@siltechconsult.com.br
Commentaires