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:

  • 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:

  • 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

  • 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:

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.