Páginas

7 de jan. de 2016

Diferenças entre os originais Export/Import e o DataPump

  
ATUALIZADO EM 08/11/2016

Olá pessoal,

    Como tenho visto recentemente dúvidas frequentes em fóruns e grupos de discussão sobre as diferenças entre os originais (termo utilizado pela Oracle para diferenciá-los) utilitários Export/Import e o Data Pump, vou comentar sobre eles neste artigo.

     Os originais (também conhecidos como antigos ou convencionais) utilitários Export/Import e o DataPump, são as ferramentas principais para exportação e importação de dados no Oracle Database. Neste artigo não vou ensinar a usar estes utilitários nem apresentar detalhes sobre eles, vou apenas comentar sobre as vantagens e desvantagens de cada um, e quando utilizá-los.

     Os famosos e antigos utilitários Export/Import (utilitários de linha de comando "exp" e "imp"), utilizados no Oracle Database "possivelmente" desde a versão 5, tornaram-se obsoletos a partir da versão 10G, portanto, eles não sofrem mais atualizações e a Oracle não dá mais suporte a eles, ou seja, não há garantia de que novos recursos e novos tipos de dados sejam suportados. Atualmente a Oracle recomenda utilizá-los somente nas seguintes situações:
          - Se você precisar importar arquivos (dump) que foram criados utilizando o original Export;
          - Se você precisar exportar arquivos que serão posteriormente importados em versões do Oracle inferiores à versão 10G.
  
        Em certos tipos de recuperações de backups (até a versão 11G) você também poderá precisar deles. Tive uma vez que restaurar dados de uma tabela de um sistema, com o banco principal no ar e sem afetar nada nele. A saída neste caso, foi criar um banco auxiliar, restaurar a tabela nele, e depois exportar via Export tradicional, os dados dessa tabela para o BD principal (veja mais informações no artigo Restauração de tabelas com o RMAN até o Oracle 11G). 
        
     Na versão 10G, a Oracle lançou um novo utilitário, chamado Data Pump (ver Imagem 01), muito parecido com os antigos utilitários Export/Import, porém com novos e consideráveis recursos! O DataPump pode ser executado a partir de linha de comando (utilitários "export" e "import") ou através de blocos PL/SQL (chamando o pacote DBMS_DATAPUMP), e ele possuiu uma grande diferença que permite implementar maior segurança: os dumps só podem ser lidos ou gravados em objetos DIRECTORY. As suas principais vantagens é que ele oferece maior velocidade e mais flexibilidade. Como ele consegue ser mais rápido? Por causa de 3 motivos principais:
               1- Ele pode realizar direct path no acesso aos dados;
               2- Diferentemente dos antigos utilitários, o processamento é realizado diretamente no servidor, não havendo transferência de dados entre uma ferramenta cliente e o servidor;
               3- Foi projetado para trabalhar com hardware e sistemas operacionais mais modernos.


Imagem 01 - Arquitetura do Data Pump

     Entre diversos novos recursos (que não existem nos originais Export/Import), o Data Pump permite:
         - Mover dados para Bancos de Dados com versões diferentes;
         - Suspender/reativar um export;
         - Fazer export/import assíncronos;
         - Gerar dumps somente de metadados;
         - Executar processos paralelos para otimizar o tempo de execução;
         - Estimar tamanho dos dumps;
         - Usar database links para mover dados;
         - Compactar ou criptografar os dumps;
         - Gerar dumps com amostragem de dados.

Obs.: Apresento mais detalhes sobre o DataPump no treinamento em videoaulas Administrando Bancos de Dados Oracle.
   

Bom pessoal, por hoje é só! Espero que o artigo lhe seja útil! 
Se você gostou ou tiver qualquer dúvida, é só deixar um comentário que eu responderei o mais breve possível!
[]s

  
Referências:
   - Import Export FAQ
   - Oracle DataPump Quick Start (Doc ID 413965.1), My Oracle Support 

2 comentários:

  1. Excelente artigo Fabio!
    Dúvida, porque o export datapump consome tablespace temp?

    ResponderExcluir
    Respostas
    1. Obrigado pelo comentário.
      O tablespace temp é utilizado armazenar objetos temporários. O DataPump cria objetos temporários durante o processo de exportação de dados, ok?

      Excluir