ORACLE DATAPUMP : Remapeando de Tablespaces e Schemas
Olá Pessoal,
O assunto que iremos abordar hoje é uma tecnologia muito interessante que a Oracle disponibilizou a partir do Oracle 10g, chamado Oracle Data Pump.
Oracle DataPump é uma tecnologia avançada do utilitário tradicional EXP e IMP o qual conhecemos de releases anteriores. Vejamos algumas diferenças entre DataPump e Utilitário Exp/Imp:
DATA PUMP: Utiliza Server-Side
Utilitário EXP/IMP: Utiliza Client-Side.
Vantagens do Oracle DATAPUMP:
• Seleção de Dados e Objetos de granulidades Fina.
• Especificação Explicita da Versão do Banco de Dados.
• Execução em Paralelo.
• Avaliação do espaço de consumo do export Job.
• Modo de Rede em um Ambiente Distribuído.
• Capacidade de Remapeamento durante importação(import).
• Amostra de Dados e Compressão de Metadados.
Sabe quando necessitamos migrar um schema que está na Tablespace teste0 e gostaria que este schema fosse migrado para um outro Banco de Dados na Tablespace teste2. Pois é, ai que tá, como podemos fazer isso?
Uma das Soluções seria a utilização do Oracle Datapump Utilizando Remapeamento de Tablespaces e Schemas.
Faremos um exemplo simples utilizando Oracle Datapump Remapeamento Tablespaces e Schemas, migrando Dados de um Schema para outro com DATAPUMP.
Deve se conectar com usuário ORACLE ou usuario que Instalou o Oracle10g caso seja Windows.
1- Primeiro passo precisamos definir o diretório onde iremos utilizar o Oracle Data Pump. No nosso caso definimos o Diretório (/oracle/dump) o qual o aliás será dump.
Com isso iremos criar o Diretório logicamente no qual irá se chamar ‘dump’.
Conectar com usuário ORACLE no SQLPLUS com Usuário SYS.
- CREATE DIRECTORY dump AS '/oracle/dump/';
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;
3- Iremos conceder o Privilégio IMP_FULL_DATABASE para o usuário teste que irá Importar:
- GRANT IMP_FULL_DATABASE to teste;
,4- Após isso basta exportar e depois importar
5- Exportando com usuario teste com Oracle Data Pump:
- Expdp teste/teste directory=dump dumpfile=teste.dmp logfile=teste.log
6- Importando com usuario TESTE no Oracle Data Pump, 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
Abraço