Migração entres SCHEMAS sem gerar arquivo de dump usando DATAPUMP.

Posted: 07/10/2012 in Datapump

Fala moçada tudo bem ?
Hoje a dica é sobre uma ferramenta “mao-na-roda” que nos ajuda muito quando precisamos migrar uma carga de dados de um schema para outro (tanto faz no mesmo banco ou outro banco de dados oracle) sem gerar um arquivo de dump.

Este é o caso do tradicional utilitario  IMP/EXP que muitos DBA utilizam no dia a dia para atulizar bases de testes e migrar dados. Nele, sempre apos o EXP teremos um arquivo de dump que sera usado na futura importacao. Agora imagine a seguinte situação: Voce esta migrando um banco de dados e o arquivo de dump gerado tera uma quantidade de GB que o sistema operacional não tem disponivel, e voce nao tem nenhum outro terminal para gerar este arrquivo, e agora hein?

Ai que entra nosso amigo DATAPUMP com a feature usando database link. A idéia aqui é realizar a exportacao e importacao dos dados sem gerar o arquivo de dump, aplicando diretamente no schema alvo. E como fazemos isso ? Mãos a obra

Entrada no TNSNAMES dentro do banco de dados alvo B apontando para o banco de dados de origem A:

bancoA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip_bancoA)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)

No banco de dados alvo B,  criar um diretorio que será usado pelo datapump:

CREATE DIRECTORY dump AS ‘/standby/dump/’;

GRANT read, write ON DIRECTORY dump TO PUBLIC;

OBS:o diretorio “/standy/dump” deverá ser trocado por um válido dentro do file system.

No banco de dados alvo B, vamos garantir que o novo usuario tenha o privilegio para criar um database link:

GRANT CREATE DATABASE LINK TO NEW_USER;

No banco de dados alvo B, logar pelo SQLPLUS no usuario NEW_USER, e criar database link:

CREATE DATABASE LINK migracao CONNECT TO teste IDENTIFIED BY teste USING ‘bancoA’;

Obs: bancoA é a entrada dentro do tnsnames

No servidor de banco de dados que recebe o import (banco de dados alvo B)

impdp NEW_USER/NEW_USER network_link=migracao directory=dump logfile=imp_NEW_USER.txt remap_schema=TESTE:NEW_USER

Pronto, neste momento os objetos do schema TESTE no banco de dados de origem A estao sendo copiados para o banco de dados alvo B dentro do schema NEW_USER sem gerar nenhum arquivo de dump dentro do file system. Com isso, ganhamos tempo nmigracao.

Uma caracteristica bem legal do datapump é que se voce fechar o Putty ou SSH o processo de importacao continuará em background.

Um otima leitura também é o artigo no meu amigo Bruno Murassaki, onde ele como sempre traz todos detalhes do datapump abordando de maneira muito didatica o processo de remapeamento de objetos e tablespaces usando datampump.

http://profissionaloracle.com.br/blogs/brunomurassaki/2009/04/06/datapump-remapeando-schemas/

Então é isso, espero que tenha ajudado com mais essa dica e que nas proximas migracoes voce economize tempo usando o datapump.

Um abraco.

Deixe um comentário