Trabalhando com EXPDP/IMPDP

Para a equipe do Dia a Dia Ltda.Olá pessoal, DBA, integrantes da equipe Dia a Dia Ltda, demais leitores.
O assunto hoje é export e import com Oracle Datapump.

Apresentarei dicas bem simples de utilização desta ferramenta que serve para criação de backups lógicos, transporte de dados entre outros.

Muitas vezes precisamos fazer cópias de schemas (owners) quer seja para guardar como uma cópia de segurança quer seja para retorná-lo em outro schema para alguma tarefa de comparação, sei lá. O fato é que a Oracle a partir da versão 10g tem uma ferramenta muito legal para isso. Na verdade ela veio substituir com louvor algo que já existia antes o EXP/IMP. Porém agora com algumas (várias) novidades a mais.

O exemplo de hoje é algo bem simples, vamos fazer uma cópia de um owner HR (padrão de exemplos do banco de dados) e restaurar os objetos em outro owner.

1- Primeiramente trabalhar com o DATAPUMP requer um Oracle Directory, onde serão gravados os arquivos de DUMP, ou seja, arquivo que contém a cópia (backup lógico).

CREATE DIRECTORY dump AS ‘/oracle/dump/’;
Neste comando o filesystem deverá obrigatoriamente existir e o usuário de sistema operacional proprietário do banco de dados (normalmente o usuário oracle) deverá ter privilégio nela.

2- Após criar o Diretório precisamos conceder os privilégios de leitura e gravação. Em nosso exemplo iremos disponibilizar este diretório para todos os usuários do Banco de Dados concedendo o privilégio para o schema PUBLIC;

GRANT read, write ON DIRECTORY dump TO PUBLIC;
Observação: Não façam isso “em casa” evitem dar privilégios para PUBLIC. Tudo que der a este é como se estivesse dando a todos os outros usuários.

3- O usuário que irá conectar para proceder a importação posteriormente deverá ter privilégios específico para isso.
Iremos conceder o Privilégio IMP_FULL_DATABASE para o usuário teste que irá Importar:

GRANT IMP_FULL_DATABASE to teste;

5- Após isso basta exportar e depois importar

5.1- Exportando com usuario teste com Oracle Data Pump:

expdp teste/senha_teste directory=dump dumpfile=teste.dmp schema=HR logfile=teste.log

Poderia utilizar:
tables=owner.tabela1, owner.tabela2
full=y
Diversas outras opções ainda existem para serem utilizadas, maiores informações nas documentações do Oracle:
https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL200

5.2- Importando com usuario TESTE no Oracle DataPump, remapeando por schemas(schema TESTE para o TESTE2) e remapeando por Tablespaces (Tablespace TESTE para o TESTE2):

impdp teste/teste directory=dump dumpfile=teste.dmp logfile=testeimp.log remap_schema=teste:teste2 remap_tablespace=teste:teste2

( Obs: Caso queira remapear mais de uma tablespace, utilizem o seguinte parâmetro setado abaixo:

REMAP_TABLESPACE = teste0:teste2, teste1:teste2.

Aqui no exemplo eu comentei a conexão feita através do owner teste, mas normalmente utilizamos conectar com system ou sys. Para este último a conexão deve ser feita assim:

expdp ” ‘/ as sysdba’ ” directory=dump…  Similarmente podendo ser utilizado para importar.

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle. Adicione o link permanente aos seus favoritos.

Deixe uma resposta