Tags:

Oracle

Oracle Data Pump

Uma das áreas onde o Oracle necessitava urgentemente de melhorias em termos de performance era no seu ferramental destinado a movimentar grandes volumes de dados entre suas tabelas e flat files (arquivos estáticos). As ferramentas até então disponíveis para a realização dessa função tem sido o export (exp) e o import (imp). Nas versões anteriores à 10g, melhorias na performance foram obtidas através do uso de processamento paralelo e pela implementação do método direct path.

A partir da versão 10g, a Oracle introduziu uma arquitetura completamente nova com o Oracle Data Pump. O Data Pump está disponível nas edições Enterprise, Standard e Personal, mas a capacidade de processamento paralelo está presente somente na Enterprise.

O Data Pump substitui as antigas ferramentas exp/imp, porém é bem mais completo e extenso do que elas. Sua arquitetura foi desenhada para permitir melhoras significativas de performance em relação ao exp/imp tradicionais. Usando o método direct path e processamento em paralelo, o Data Pump carrega e extrai dados muitas vezes mais rápido do que seus predecessores. Ele também suporta o reinício de jobs a partir do ponto de falhas e nos dá a possibilidade de monitorarmos o progresso dos nossos jobs de exportação e importação.

No Data Pump, todo o trabalho é realizado pelo Banco de Dados. Essa é uma das principais mudanças em relação às ferramentas anteriores, que rodavam como clients e faziam a maior parte do trabalho. Em função dessa mudança de arquitetura, os dump files utilizados/gerados pelo Data Pump sempre são armazenados no servidor.

O package DBMS_DATAPUMP é a API PL/SQL disponibilizada para acessar o engine do Data Pump. Jobs do Data Pump podem ser criados e monitorados através do uso dessa API. Além disso, o package DBMS_METADATA permite que se desenvolvam códigos customizado que poderão interfacear com o Data Pump driver. Isso abre a possibilidade de se escreverem programas que poderão exportar/importar usando o Data Pump, suspender, reiniciar ou monitorar jobs do Data Pump e executar outras atividades a ele relacionadas.

expdp e o impdp são os novos utilitários client que possuem o mesmo “look and feel” das antigas ferramentas exp e imp. Porém, expdpimpdp trazem novas features e são muito mais eficientes que seus predecessores. Por exemplo, essas novas ferramentas possuem a habilidade de:

  • Suspender um export e reiniciá-lo a partir do ponto onde foi parado;
  • Fazer attach/detach à jobs de export/import em andamento – a partir do momento em que um job é iniciado, não precisamos estar conectados para acompanhá-lo, podemos fazer o attach a qualquer momento que quisermos para verificar o progresso do mesmo;
  • Reiniciar jobs que falharam a partir do ponto do erro;
  • Usar várias threads, e controlar o número delas durante a operação de export;
  • Realizar imports diretamente, de uma base à outra, sem a geração de dumps nos servidores, através de um database link. Essa feature se chama NETWORK MODE;
  • Controlar a versão do objeto que está sendo exportado, para garantir a compatibilidade dos objetos com uma versão mais antiga do Oracle (válido apenas para versões acima da 10g);
  • Extrair metadados (definições de objetos) separadamente dos dados. Você pode extrair apenas metadados (por exemplo, comandos para criação de tabelas e índices), apenas dados, ou ambos;
  • Estimar o tamanho dos arquivos que serão gerados pelo expdp, antes que a geração seja efetuada. Além disso, através das cláusulas EXCLUDE/INCLUDE, o expdp permite uma seleção muito flexível dos tipos de objeto para exportação. Por exemplo, podemos exportar apenas procedures e functions em um dump; em outro, apenas apenas tabelas e índices, sem nenhum código – e assim por diante …

No entanto, nem tudo são flores. Na versão 10g, não há substituto para a técnica de compressão do dumpfile on the fly,  através de uso de pipes (ambiente Unix/Linux). Ou seja, dumps não poderão ser comprimidos durante o processo de exportação, o que talvez inviabilize o uso do expdp como ferramenta de backup lógico para bases de dados com grandes volumes, pelo menos nessa versão. No Oracle 11g já existe um parâmetro de compressão no expdp, que promete substituir o uso da técnica de compressão on the fly com pipes.

Realmente o novo ferramental traz muitas novidades e melhorias, que podem e devem ser exploradas para facilitar o trabalho de movimentação de dados, um dos mais frequentes no cotidiano de quem trabalha com bases de dados Oracle, seja desenvolvendo ou administrando.

Por MÁRCIO NUNES JARDIM

Postado em: 24 de setembro de 2010

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário