O Oracle Data Pump substituiu os atigos utilitários imp e exp a partir da versão 10g. Vamos falar sobre o Data Pump Export e sobre o Data Pump Import.

ORACLE DATA PUMP EXPORT

Vamos chamá-lo de expdp – que é o nome do arquivo executável deste utilitário. O expdp funciona de modo muito semelhante ao antigo exp, que ainda está disponível, porém obsoleto. Vou listar alguns recursos do expdp abaixo:

  • Permite estimar o tamanho dos arquivos resultantes de uma exportação sem a necessidade de efetivamente gerar os arquivos;
  • Permite “pausar e continuar” uma exportação de dados, e anexar livremente um job a partir de uma exportação em execução;
  • Permite reiniciar execuções que falharam a partir do ponto de falha;
  • Permite uma seleção refinada dos objetos a serem exportados. Exemplo: exportar somente packages e sequences;
  • Oferece processamento paralelo e permite controlar o número de threads utilizados durante a exportação.

O expdp tem dois métodos de acesso a dados disponíveis. Ele pode utilizar tabelas externas ou o acesso direto (direct path). O método utilizado é selecionado automaticamente durante o processo de exportação.  O expdp fornece também suporte a operações de modo de rede, o que permite carregamento a partir de um banco de dados, por meio de um link de banco de dados, diretamente.

O expdp permite controlar a versão do objeto que é exportado. Isso permite exportar dados de uma versão do banco de dados Oracle e assegurar que ela seja compatível com uma versão de nível mais baixo do banco de dados. Por exemplo: exportar dados de uma base 11gR2 já informando que ela deve ser compatível com a versão 10gR2 – para que um banco de dados com esta versão possa fazer a importação dos dados.

O expdp oferece 3 métodos de extração:

  1. extrair somente metadados (exemplo: exportar apenas instruções create table);
  2. extrair somente os dados de uma base;
  3. extrair ao mesmo tempo metadados e dados de um banco de dados.

UTILIZANDO O EXPDP

Antes de utilizar o expdp, é necessário criar um objeto directory no banco de dados – ou seja, definir o diretório do servidor onde serão gravados os arquivos. Exemplo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”Y3JlYXRlIGRpcmVjdG9yeSBEQVRBX1BVTVBfRElSIGFzICdkOm9yYWNsZWR1bXBzJzsKZ3JhbnQgcmVhZCBvbiBkaXJlY3RvcnkgREFUQV9QVU1QX0RJUiB0byBIUjs=” hover_enabled=”0″]Y3JlYXRlIGRpcmVjdG9yeSBEQVRBX1BVTVBfRElSIGFzICdkOm9yYWNsZWR1bXBzJzsKZ3JhbnQgcmVhZCBvbiBkaXJlY3RvcnkgREFUQV9QVU1QX0RJUiB0byBIUjs=[/et_pb_dmb_code_snippet]

Caso queira fazer exportação de dados de um schema cujo owner seja diferente o user que esteja logado, é necessário o privilégio EXP_FULL_DATABASE.

Durante uma operação, pressionar Ctrl+C faz com que o Oracle mova a operação expdp para o segundo plano. O Oracle coloca o expdp em modo interativo, permitindo administrar o trabalho enquanto ele executa em segundo plano, ou que você desconecte completamente o trabalho enquanto ele continua a executar. Cada “trabalho” do data pump recebe um nome, permitindo assim o monitoramento individual de cada trabalho – sendo possível inclusive reconectar a estes trabalhos.

PARÂMETROS E EXEMPLOS

Exportação de um banco completo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZXhwZHAgaHIvaHJAb3JjbCBkdW1wZmlsZT1EQVRBX1BVTVBfRElSOm1pbHRvbl8lVS5kbXAgZmlsZXNpemU9MTAwbQpub2xvZ2ZpbGU9eSBqb2JfbmFtZT10cmFiMDAxIGZ1bGw9eSBlc3RpbWF0ZV9vbmx5″ hover_enabled=”0″]ZXhwZHAgaHIvaHJAb3JjbCBkdW1wZmlsZT1EQVRBX1BVTVBfRElSOm1pbHRvbl8lVS5kbXAgZmlsZXNpemU9MTAwbQpub2xvZ2ZpbGU9eSBqb2JfbmFtZT10cmFiMDAxIGZ1bGw9eSBlc3RpbWF0ZV9vbmx5[/et_pb_dmb_code_snippet]
  • full define que esta exportação será do banco de dados completo;
  • filesize limita o tamanho dos arquivos. Se for necessário, vários arquivos são criados, sempre com o limite de tamanho definido por este parâmetro;
  • dumpfile formata o nome do arquivo, que será gravado no diretório pré-definido no objeto directory de nome DATA_PUMP_DIR. Neste exemplo, os arquivos começarão sempre com “milton_”, seguido de um número único de sequência (para isso utilizei o %U), e com extensão .dmp – pode ser definida outra extensão, sem problemas, desde que saiba que o arquivo seja um dump gerado pelo data pump.
  • job_name define o “nome de trabalho”. Com isso é possível se desconectar do trabalho para entrar em modo interativo, e se reconectar ao trabalho com o parâmetro attach.
  • nologfile desativa o registro de log da operação;
  • estimate_only – o expdp retorna o tamanho estimado dos arquivos deste trabalho, sem efetuar a exportação.

Exportação de dados de um usuário:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZXhwZHAgc3lzdGVtL3NlbmhhIGR1bXBmaWxlPURBVEFfUFVNUF9ESVI6aHJfJVUuZG1wIHNjaGVtYXM9aHIKbm9sb2dmaWxlPXkgam9iX25hbWU9ZHVtcF9ocg==” hover_enabled=”0″]ZXhwZHAgc3lzdGVtL3NlbmhhIGR1bXBmaWxlPURBVEFfUFVNUF9ESVI6aHJfJVUuZG1wIHNjaGVtYXM9aHIKbm9sb2dmaWxlPXkgam9iX25hbWU9ZHVtcF9ocg==[/et_pb_dmb_code_snippet]
  • schemas – define os schemas que serão exportados.

Exportação de tabelas específicas:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZXhwZHAgc3lzdGVtL3NlbmhhIGR1bXBmaWxlPURBVEFfUFVNUF9ESVI6aHJfdGFibGVzXyVVLmRhdAp0YWJsZXM9aHIuZGVwYXJ0bWVudHMsIGhyLmVtcGxveWVlcyBub2xvZ2ZpbGU9eSBqb2JfbmFtZT1ocl90YWJsZXNsc2Rr” hover_enabled=”0″]ZXhwZHAgc3lzdGVtL3NlbmhhIGR1bXBmaWxlPURBVEFfUFVNUF9ESVI6aHJfdGFibGVzXyVVLmRhdAp0YWJsZXM9aHIuZGVwYXJ0bWVudHMsIGhyLmVtcGxveWVlcyBub2xvZ2ZpbGU9eSBqb2JfbmFtZT1ocl90YWJsZXNsc2Rr[/et_pb_dmb_code_snippet]
  • tables – especifica quais tabelas serão exportadas.

Exportação de dados de uma tablespace:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZXhwZHAgc3lzdGVtL3NlbmhhIGR1bXBmaWxlPURBVEFfUFVNUF9ESVI6dGJzX2RhZG9zMDFfJVUuZGF0CnRhYmxlc3BhY2U9ZGFkb3MwMSBub2xvZ2ZpbGU9eSBqb2JfbmFtZT1leHBkcF9kYWRvczAx” hover_enabled=”0″]ZXhwZHAgc3lzdGVtL3NlbmhhIGR1bXBmaWxlPURBVEFfUFVNUF9ESVI6dGJzX2RhZG9zMDFfJVUuZGF0CnRhYmxlc3BhY2U9ZGFkb3MwMSBub2xvZ2ZpbGU9eSBqb2JfbmFtZT1leHBkcF9kYWRvczAx[/et_pb_dmb_code_snippet]
  • tablespaces – especifica quais tablespaces serão exportadas

Outros parâmetros

  • content [ALL, DATA_ONLY, METADATA_ONLY] – define o conteúdo das exportações: somente dados, somente metadados, ou ambos.
  • parfile – solicita a leitura de um arquivo de parâmetros, cujo conteúdo pode ser todos os outros parâmetros definidos para a exportação. Exemplo:
[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”ZXhwZHAgaHIvaHIg” hover_enabled=”0″]ZXhwZHAgaHIvaHIg[/et_pb_dmb_code_snippet]

Um exemplo de arquivo de parâmetros teria o conteúdo abaixo:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”aW5jbHVkZT1GVU5DVElPTgppbmNsdWRlPVBST0NFRFVSRQppbmNsdWRlPVRBQkxFOiJMSUtFICdFTVAlJyIKZHVtcGZpbGU9REFUQV9QVU1QX0RJUjp0ZXN0ZV8lVS5kbXAKbG9nZmlsZT1EQVRBX1BVTVBfRElSOmxvZ18lVS5sb2cKam9iX25hbWU9bm9uZWRvdHJhYmFsaG8Kc2NoZW1hcz1IUg==” hover_enabled=”0″]aW5jbHVkZT1GVU5DVElPTgppbmNsdWRlPVBST0NFRFVSRQppbmNsdWRlPVRBQkxFOiJMSUtFICdFTVAlJyIKZHVtcGZpbGU9REFUQV9QVU1QX0RJUjp0ZXN0ZV8lVS5kbXAKbG9nZmlsZT1EQVRBX1BVTVBfRElSOmxvZ18lVS5sb2cKam9iX25hbWU9bm9uZWRvdHJhYmFsaG8Kc2NoZW1hcz1IUg==[/et_pb_dmb_code_snippet]
  • estimate – informa ao expdp o método de cálculo do tamanho resultante do arquivo de dump. Suas opções:
  • estimate=blocks – calcula o tamanho do dump com base no número de blocos de dados vezes o tamanho do bloco do banco de dados. Este é o padrão caso o parâmetro estimate não seja especificado;
  • estimate=sampling – calcula o tamanho do dump com base em uma amostra do número de linhas por tabela;
  • estimate=statistics – baseia o tamanho do dump nas estatísticas do objeto atual.