# O utilitário de importação DPIMP

# Importar uma tabela

O comando para importar de um arquivo DUMP, "arquivo.dmp", armazenado no diretório "nome_do_diretorio", do Oracle, a tabela "nome_tabela" é:

impdp usuario/senha@banco DIRECTORY=nome_do_diretorio TABLES=nome_esquema.nome_tabela DUMPFILE=arquivo.dmp

Exemplo: Para um arquivo de dados BKP_DIARIO_20191016.DMP gravado no diretório DADOS_DIR, teremos:

impdp adm_banco@meu_banco DIRECTORY='DADOS_DIR' TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp

    impdp adm_banco@meu_banco DIRECTORY='DADOS_DIR' TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp
      
    /* Saída:
    Conectado a: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, Automatic Storage Management, OLAP, Data Mining
    and Real Application Testing options
    Tabela-mestre "ADM_BANCO"."SYS_IMPORT_TABLE_01" carregada/descarregada com sucesso
    Iniciando "ADM_BANCO"."SYS_IMPORT_TABLE_01":  adm_banco/********@meu_banco DIRECTORY='DADOS_DIR' TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp
    Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE
    Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE_DATA
    . . importou "ADM_BANCO"."PAIS"                          8.562 KB      27 linhas
    O job "ADM_BANCO"."SYS_IMPORT_TABLE_01" foi concluÝdo com sucesso em Qui Out 17 17:46:18 2019 elapsed 0 00:00:01
    */

Atenção

Esta sintaxe é para as situações onde a tabela não existe no esquema destino.

# Importar somente dados ou a estrutura da tabela

Para criar a tabela sem carregar os dados use o parâmetro CONTENT=METADATA_ONLY

O parâmetro CONTENT é utilizado tanto por expdp e impdp, para carregar/descarregar somente os dados, somente a estrutura da tabela (metadata) ou ambos. Ou seja:

CONTENT RESULTADO
ALL Dados e Estrutura serão carregados/descarregados
DATA_ONLY Somente os Dados serão carregados/descarregados
METADATA_ONLY Somente a Estrutura será carregada/descarregada

O valor padrão é CONTENT=ALL.

Somente Estrutura:

impdp usuario/senha@banco DIRECTORY=nome_do_diretorio CONTENT=METADATA_ONLY TABLES=nome_esquema.nome_tabela DUMPFILE=arquivo.dmp

Somente Dados:

impdp usuario/senha@banco DIRECTORY=nome_do_diretorio CONTENT=DATA_ONLY TABLES=nome_esquema.nome_tabela DUMPFILE=arquivo.dmp

Exemplo: Para carregar somente a estrutura da tabela PAIS no esquema destino ADM_BANCO, teremos:

impdp adm_banco@meu_banco DIRECTORY='DADOS_DIR' CONTENT=METADATA_ONLY TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp

    impdp adm_banco@meu_banco DIRECTORY='DADOS_DIR' CONTENT=METADATA_ONLY TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp
    /* Saída
    Conectado a: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    With the Partitioning, Automatic Storage Management, OLAP, Data Mining
    and Real Application Testing options
    Tabela-mestre "ADM_BANCO"."SYS_IMPORT_TABLE_01" carregada/descarregada com sucesso
    Iniciando "ADM_BANCO"."SYS_IMPORT_TABLE_01":  adm_banco/********@meu_banco DIRECTORY='DADOS_DIR' CONTENT=METADATA_ONLY TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp
    Processando o tipo de objeto SCHEMA_EXPORT/TABLE/TABLE
    O job "ADM_BANCO"."SYS_IMPORT_TABLE_01" foi concluÝdo com sucesso em Qui Out 17 18:06:07 2019 elapsed 0 00:00:01
    */

# Carregando dados em uma tabela

Ao importar dados para uma tabela existente, deve-se definir qual a ação será tomada para os dados que já estão carregados na tabela. Os dados existentes podem ser apagados ou podem ser mantidos. O parametro TABLE_EXISTS_ACTION é utilizado para esta definição e pode ser um dos seguintes valores:

TABLE_EXISTS_ACTION RESULTADO
SKIP Não faz qualquer alteração na tabela. Se CONTENT=DATA_ONLY este parâmetro não tem efeito
APPEND Carrega as linhas da origem e deixa as linhas existentes inalteradas
TRUNCATE Exclui TODAS as linhas existentes e carrega as linhas da origem
REPLACE Apaga a tabela atual, cria uma nova e carrega os dados. Se CONTENT=DATA_ONLY este parâmetro não tem efeito

Leve em consideração:

  • Quando usar TRUNCATE ou REPLACE, certifique-se de tabelas destino não use chave referencial

  • Ao usar SKIP, APPEND, ou TRUNCATE os objetos dependentes da tabela, como índices, "triggers", "grants" e "constraints" não são modificados. Paa o REPLACE estes objetos são recriados com base na tabela de origem.

  • Se a tabela destino tiver constraints, a carga poderá forçada usando o parâmetro DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS no comando de importação.

  • Outra alternativa é desabilitar as constraints, carrega os dados e excluir as linhas com problemas, habilitando as constraints no final.

  • Quando se usa APPEND, os registros são carregados em novos blocos no banco mesmo que exista espaço disponivel. Pode-se fazer manutenção na tabela para recuperar os espaços não utilizados.

# Importando uma tabela para outro esquema

Para carregar uma tabela em um esquema diferente, use o parâmetro REMAP_SCHEMA:

impdp usuario/senha@banco DIRECTORY=nome_do_diretorio REMAP_SCHEMA=esquema_origem:esquema_destino LOGFILE=nome-arquivo.log DUMPFILE=nome-arquivo.dmp

Exemplo: Carregando as tabelas contidas no arquivo bkp_diario_20191016.dmp do esquema _adm_banco_para o meu_esquema.

impdp adm_banco@meu_banco DIRECTORY='DADOS_DIR' TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp REMAP_SCHEMA=adm_banco:meu_esquema

impdp adm_banco@meu_banco DIRECTORY='DADOS_DIR' TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp REMAP_SCHEMA=adm_banco:meu_esquema
Conectado a: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
Tabela-mestre "ADM_BANCO"."SYS_IMPORT_TABLE_01" carregada/descarregada com sucesso
Iniciando "ADM_BANCO"."SYS_IMPORT_TABLE_01":  adm_banco/********@meu_banco DIRECTORY='DADOS_DIR' TABLES=adm_banco.pais DUMPFILE=bkp_diario_20191016.dmp REMAP_SCHEMA=adm_banco:meu_esquema
. . importou "MEU_ESQUEMA"."PAIS"                        8.562 KB      27 linhas
O job "ADM_BANCO"."SYS_IMPORT_TABLE_01" foi concluÝdo com sucesso em Sex Out 25 17:34:05 2019 elapsed 0 00:00:02