# 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