Hoje
vou falar sobre algo que é bastante frequente na vida de um DBA: efetuar DUMP,
ou seja, importar e exportar dados.
Segundo
a Oracle, export e import é um caminho simples para se transferir objetos de
dados entre banco de dados Oracle, mesmo quando as bases residem em plataformas
com diferentes hardwares e softwares.
Antes
de executar um Export e import, é necessário atentar para algumas questões:
- é necessário ter executado o
script catexp.sql o catalog.sql;
- verificar se existe espaço
suficiente em disco para a criação do arquivo de exportação, e na importação
verificar se existe espaço suficiente em disco para receber os dados;
- atentar se seu privilégio permite
realizar tal execução.
Bom.
Para
começar, vou falar do exp e imp.
O
exp é o comando utilizado para se exportar objetos de uma base de dados. A
estrutura do comando (em sua forma básica) é a seguinte:
-
Exportando objetos do esquema (usuário) workspace:
exp workspace/Senha@ORCL file=d:\EXPORT\workspace.dmp
log=d:\EXPORT\exp_workspace.log feedback=1000
file: é o arquivo de dump gerado
log: é o arquivo de acompanhamento
do que foi realizado pelo export
feedback: é o retorno que será dado
para o log em termos de registros. Ex.: a cada 1000 registros, será marcado um
ponto (.) no arquivo de log
-
Exportando algumas tabelas do esquema (usuário) workspace:
exp workspace/Senha@ORCL file=d:\EXPORT\workspace_tables.dmp
log=d:\EXPORT\exp_workspace_tables.log feedback=1000 tables=(tabela1, tabela2,
tabela3)
tables: contém o(s) nome(s) da(s) tabels(s)
O
imp é o comando utilizado para se importar objetos de um arquivo de dump. A
estrutura do comando (também em sua forma básica) é a seguinte:
-
Importando objetos do esquema (usuário) workspace para um esquema
workspace_new:
imp userid=system file=d:\EXPORT\workspace.dmp log=
d:\EXPORT\imp_workspace.log fromuser=workspace touser=workspace_new
feedback=1000
-
Importando algumas tabelas do esquema (usuário) workspace para um esquema
workspace_new:
imp userid=system file=d:\EXPORT\workspace.dmp log=
d:\EXPORT\imp_workspace.log fromuser=workspace touser=workspace_new
feedback=1000 tables=(tabela1, tabela2, tabela3)
Com
o avanço da tecnologia Oracle Database e com suas novas versões, a forma de se
importar e exportar evoluiu, e os comandos exp e imp foram substituídos pelos
comandos expdp e impdp (os comandos substituídos ainda são suportados nas
versões mais recentes, pelo menos até a versão 11G). Esses “novos” utilitários
usam as procedures contidas no pacote DBMS_DATAPUMP para executar as tarefas a
que se destinam.
Quanto
à compatibilidade, os novos utilitários expdp e impdp, embora parecidos com os
anteriores (exp e imp), são completamente distintos, e os arquivos gerados e
utilizados pelas novas versões não são compatíveis.
Os
dump files gerados pelas novas versões não podem ser lidos pelos antigos
programas e vice-versa. Seguem diferenças entre os utilitários Data Pump e os
antigos programas exp e imp.
- os programas do Data Pump operam um grupo de arquivos chamado dump file set em vez de um arquivo sequencial;
- os programas Data Pump acessam arquivos no servidor e não no cliente para melhorar a performance
- os novos utilitários usam execução paralela para melhorar a performance;
- o Data Pump usa documento XML para representar metadados no arquivo de dump e não comandos DDL (Data Definition Language) como nas antigas versões;
- os programas do Data Pump possuem ajustes automáticos e não utilizam parâmetros de ajustes que eram utilizados nas versões anteriores;
- mídias sequenciais como fitas não são suportadas;
- se durante uma importação de dados para usando os comandos APPEND ou TRUNCATE ocorrer alguma violação de constraint por alguma linha, o carregamento será terminado e nenhum dado será carregado. Na versão antiga, era carregamento era feito um registro de log das linhas com violação e o carregamento continuava.
Data
Pump Export
O
expdp extrai a definição do objeto e seu conteúdo, transformando-os em um
conjunto de arquivos do sistema operacional chamados dump file set. Esses
arquivos podem ser usados pelo utilitário impdp, que pode convertê-lo e inserir
seus dados em outro banco Oracle. O conjunto de arquivos de dump é composto por
um ou mais arquivos que contém dados, metadados do banco de dados e informações
de controle.
O
expdp extrai todos os objetos do banco juntamente com os objetos relacionados
ou dependentes, por exemplo uma tabela é extraída com índices comentários e
permissões.
O
Export possui alguns modos de exportação, a saber:
-
Full export mode: exporta todos os objetos do banco:
expdp system DIRECTORY=DIR_DPUMP DUMPFILE=workspace.dmp FULL=y
LOGFILE=expfull.log
- Schema mode:
exporta as tables, views materialized views, clusters, dblinks, sequences,
synonyms functions, triggers e stored procedures de um schema especificado:
expdp system DIRECTORY=DIR_DPUMP DUMPFILE=workspace_schema.dmp
SCHEMAS=hr
-
Table mode: permite a exportação de tabelas específicas do esquema. Permite
também a exportação das linhas, permissões, definições, restrições e triggers
das tabelas:
expdp system
tables=hr.employees directory=DIR_DPUMP dumpfile=workspace_tabela.dmp
logfile=FUNCIONARIO.log
-
Tablespace mode: nesse modo, apenas as tabelas contidas em uma tablespace, ou
grupo de tablespaces especificados, serão exportadas:
expdp system
DIRECTORY=funcionarios DUMPFILE=funcionarios_TB.dmp TABLESPACES=USERS
Data Pump Import
O
impdp é o complemento do expdp. Ele restaura os objetos de schema exportados
previamente pelo programa EXP para um conjunto de arquivos de dump. O
Import permite ao usuário visualizar
todos os comandos SQL DDL que serão executados sem a sua efetiva execução,
permitindo assim uma análise de seu funcionamento.
A
sintaxe do impdp é a seguinte:
-
Importando o banco de dados inteiro:
impdp system DIRECTORY=DIR_DPUMP DUMPFILE=workspace.dmp FULL=y
-
Importando um schema, remapeando com um novo usuario (schema), chamado amanda:
impdp system
DIRECTORY=DIR_DPUMP DUMPFILE=workspace_schema.dmp remap_schema=hr:hr_new remap_tablespace=USERS:tbs_dados
-
Importando uma tabela:
impdp system
DIRECTORY=DIR_DPUMP DUMPFILE=funcionario_tabela.dmp TABLES=hr.funcionarios
- Importando uma tablespace:
impdp system
DIRECTORY=DIR_DPUMP DUMPFILE=funcionarios_TB.dmp TABLESPACES=tbs_dados
É
importante lembrar que para o uso do expdp e impdp é necessário a criação de um
DIRECTORY e permissões de uso, como exemplo:
CREATE OR REPLACE DIRECTORY DIR_DPUMP AS ‘/u01/dumps/’;
Bom pessoal!
Por
hoje é só!
Espero
ter conseguido explicar o assunto de forma fácil de entender.
Até
a próxima!
Referências:
Ramalho,
José Antônio (2005) – Oracle 10g – Ideal para quem deseja iniciar o aprendizado
do Oracle. Editora: Thomson Learning.
Oracle Corporation – Export -/import. Disponível
em: http://docs.oracle.com/cd/B19306_01/server.102/b14215/exp_imp.htm.
Acessado em: 07/03/2013.
Oracle
Base – Oracle Data Pump. Disponível em: http://www.oracle-base.com/articles/10g/oracle-data-pump-10g.php.
Acessado em 07/03/2013.
Aprender
Oracle - Backup: Utilizando Data Pump (EXPDP E IMPDP). Disponível em:
http://aprenderoracle.com/2011/07/backup-utilizando-data-pump-expdp-e-impdp/.
Acessado em 08/03/2013.
os comandos expdp e impdp funcionam na versão do oracle XE 11g(Express) ?
ResponderExcluirOlá Aislan!
ExcluirNão costumo usar as versões Express da Oracle, e quando precisei usar não realizei exportação nem importação de dados, porém, segundo a documentação da Oracle, os comandos EXPDP e IMPDP funcionam da mesma forma. Confere na documentação oficial disponível em: http://docs.oracle.com/cd/E17781_01/server.112/e18804/impexp.htm#ADMQS274
Espero ter ajudado!
Pois é, não funcionou. Para as pessoas que querem montar um ambiente de testes você recomenda qual versão do Oracle?
ResponderExcluirOlá,
ResponderExcluirSou novata como DBA e estou com uma dúvida, após realizar o import posso apagar o arquivo .dmp do caminho informado na hora do import??
Preciso apagar esse arquivo pois é muito grande para ficar armazenado do servidor.
Grata.
Maiara Gradim
Olá, Maiara.
ExcluirGeralmente apago o Dump manualmente após um import, mesmo porque é importante antes de apagar o dump verificar o log para saber se ocorreram erros durante a importação.
Estou com um export (expdp) da versão 10g Enterprise, estou tentando importar na versão 11g Express (windows) e está dando erro:
ResponderExcluir1-UDI-00013: Message 13 not found; No message file for product=RDBMS, facility=UDI
2-UDI-00019: You may need to set ORACLE_HOME to your Oracle software directory
ORACLE_HOME=C:\oracle11Exp\app\oracle\product\11.2.0\server\bin
Está OSSO, essa importação!