Dando continuidade ao post anterior, sobre expdp, vou falar hoje sobre o impdp.

Assim como o expdp, o impdp é uma evolução do antigo imp. Alguns de seus recursos:

  • Tem a capacidade de fazer carga de dados para um banco de dados inteiro, um esquema específico, uma tablespace específica e até mesmo alguns objetos específicos (como tabelas e store procedures);
  • É utilizado ao transportar tablespaces para o banco de dados;
  • Suporta filtros de dados, permitindo assim selecionar os dados a serem carregados;
  • Suporta filtro de metadados, permitindo controlar os tipos de objetos a serem carregados;
  • Permite “pausar e continuar” trabalhos de importação – semelhante ao expdp;
  • Permite conectar/desconectar de um trabalho de importação em execução;
  • Permite reiniciar trabalhos que falharam a partir do ponto de falha;
  • Suporta paralelismo e permite atribuir um número de threads que será utilizado durante a importação;
  • Suporta operações de modo de rede, permitindo carregamento a partir de outro banco de dados diretamente;
  • Permite ter controle sobre a versão relacionada ao banco de dados do objeto que é importado, assegurando que seja compatível com uma versão de nível mais baixo de banco de dados.

UTILIZANDO O IMPDP

Na maioria dos casos, o user precisa ter apenas os mesmos privilégios que o user que criou o arquivo de dump, ou seja, o user que executou o expdp. Se a importação for feita utilizando o parâmetro full, o user deverá ter o privilégio IMP_FULL_DATABASE.

PARÂMETROS E EXEMPLOS

Importação completa de banco de dados:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”aW1wZHAgaHIvaHIgZHVtcGZpbGU9ZHVtcHNfZGlyOmFsbF9kYl8lVS5kYXQgbm9sb2dmaWxlPXkKam9iX25hbWU9aW1wX2Z1bGwgZnVsbD15″ hover_enabled=”0″]aW1wZHAgaHIvaHIgZHVtcGZpbGU9ZHVtcHNfZGlyOmFsbF9kYl8lVS5kYXQgbm9sb2dmaWxlPXkKam9iX25hbWU9aW1wX2Z1bGwgZnVsbD15[/et_pb_dmb_code_snippet]
  • full: importa todo o arquivo (dump) para o banco de dados
  • 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
  • nologfile: desativa o registro de log da operação
  • dumpfile formata o nome do arquivo, que será gravado no diretório pré-definido no objeto directory de nome DUMPS_DIR

Importação de tabespace:

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”aW1wZHAgaHIvaHIgZHVtcGZpbGU9ZHVtcHNfZGlyOnRic191c2Vyc18lVS5kYXQgbm9sb2dmaWxlPXkKam9iX25hbWU9aW1wX3Ric191c2VycyB0YWJsZXNwYWNlcz11c2VycyB0YWJsZV9leGlzdHNfYWN0aW9uPXRydW5jYXRl” hover_enabled=”0″]aW1wZHAgaHIvaHIgZHVtcGZpbGU9ZHVtcHNfZGlyOnRic191c2Vyc18lVS5kYXQgbm9sb2dmaWxlPXkKam9iX25hbWU9aW1wX3Ric191c2VycyB0YWJsZXNwYWNlcz11c2VycyB0YWJsZV9leGlzdHNfYWN0aW9uPXRydW5jYXRl[/et_pb_dmb_code_snippet]
  • tablespaces: especifica quais tablespaces serão importadas
  • table_exists_action: determina qual ação deve ser tomada quando a tabela a ser importada já existir na base de dados. As opções são:
    • table_exists_action=append – “adiciona” aos dados já existentes na tabela;
    • table_exists_action=replace – exclui a tabela, recria, e carrega os dados;
    • table_exists_action=skip – não carrega os dados e pula para o próximo objeto (DEFAULT);
    • table_exists_action=truncate – remove todas as linhas antes da carga.

Importação de dados específicos de uma tabela

[et_pb_dmb_code_snippet _builder_version=”4.0.6″ code=”aW1wZHAgaHIvaHIgZHVtcGZpbGU9ZHVtcHNfZGlyOnRhYmxlX2RhdGFfJVUuZGF0IGNvbnRlbnQ9ZGF0YV9vbmx5CmpvYl9uYW1lPWltcF9kYWRvcyBsb2dmaWxlPWR1bXBzX2RpcjppbXBfZGFkb3MubG9nIHRhYmxlcz1oci5lbXBsb3llZXM=” hover_enabled=”0″]aW1wZHAgaHIvaHIgZHVtcGZpbGU9ZHVtcHNfZGlyOnRhYmxlX2RhdGFfJVUuZGF0IGNvbnRlbnQ9ZGF0YV9vbmx5CmpvYl9uYW1lPWltcF9kYWRvcyBsb2dmaWxlPWR1bXBzX2RpcjppbXBfZGFkb3MubG9nIHRhYmxlcz1oci5lbXBsb3llZXM=[/et_pb_dmb_code_snippet]
  • tables: especifica quais tabelas serão importadas
  • content [ALL, DATA_ONLY, METADATA_ONLY] – define o conteúdo das importações: somente dados, somente metadados, ou ambos.

Importação de tipos de objetos específicos

Neste exemplo vou usar um arquivo de parâmetros. Considere um arquivo chamado parfile.txt com o conteúdo abaixo:

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

E agora executamos a importação fazendo uso do arquivo de parâmetros:

impdp hr/hr parfile=d:oracledumpsparfile.txt
  • include: define os tipos de objetos que serão importados, permitindo filtros.