Transferência de dados entre ambientes.

Exportação e Importação.Olá amigo! Bom dia, boa tarde, boa noite!!!
Aproveitando que o dólar ainda está meio alto hoje vamos falar da vantagem de se exportar… … … …

HAHAHAHAHA!!!! Achou mais uma vez que eu estou ficando louco né? Hehehe apenas pra descontrair um pouquinho…

Bem, vamos ao nosso assunto de hoje que ele pode ser bastante útil, afinal de contas o que iremos conversar está diretamente inserido no contexto do dia a dia de todo Administrador de banco de dados.

Muitas vezes, por questões de segurança, para promover algum tipo de teste, ou até mesmo para guardar dados é solicitado ao DBA o backup de determinada tabela, ou de um owner (schema) do banco de dados.
É claro que para uma situação pontual e simples, na maioria das vezes não se faz necessário um backup do banco de dados como um todo e sim de alguns objetos ou como disse, no máximo de alguns schemas(owners proprietários de objetos).

Nesta hora a maioria dos bancos de dados tem ferramentas que nos permitem armazenar eu um arquivo físico os dados necessários para retornar o dado caso alguma coisa saia errado.
Tá bom! Sei que você está pensando: ” Mas isso é backup!!!”
É, você não está errado. Embora seja uma forma mais simples, chamada inclusive por alguns de backup lógico, realmente é uma cópia de segurança.

Vamos lá então para uma dica bem interessante que irá te ajudar a criar o script de exportação(gerar cópia) e importação(retornar com os  dados). O mais legal que o script é gerado em tempo real bastando apenas rodar ele, pegar o resultado e executá-lo no sistema operacional.

A ferramenta Oracle é o DATAPUMP. Porém como este post não é para ensinar a usar a ferramenta e sim para facilitar o seu uso, não irei me ater a detalhes sobre ele. – Claro que caso queira, basta pedir que poderei fazer um post especial sobre o assunto, ou aguardar que será tratado no PROJETO DBA.

 Vamos ao script e logo abaixo vou tecer alguns comentários sobre sua funcionalidade.

SELECT ‘nohup expdp system/<senha> dumpfile=expdp_’
  ||username
  ||’_’ || to_char(SYSDATE,’DD’) || to_char(SYSDATE,’MM’) || to_char(SYSDATE,’YYYY’) || ‘.dmp schemas=’
  ||username
  ||’ directory=DIR_BKP logfile=expdp_’
  ||username
  ||’_’ || to_char(SYSDATE,’DD’) || to_char(SYSDATE,’MM’) || to_char(SYSDATE,’YYYY’) || ‘.log ‘
  || ‘FLASHBACK_TIME=\”TO_TIMESTAMP\(\” ‘ || to_char(SYSDATE,’DD/MM/YYYY HH24:MI:SS’) || ‘\”,\”DD/MM/YYYY HH24:MI:SS\”\)\”  &’
FROM dba_users
WHERE USERNAME IN (
‘SCHEMA01′,’SCHEMA02′,’SCHEMA03’)
UNION
SELECT ‘nohup impdp system/<senha> dumpfile=expdp_’
  ||username
  ||’_’ || to_char(SYSDATE,’DD’) || to_char(SYSDATE,’MM’) || to_char(SYSDATE,’YYYY’) || ‘.dmp schemas=’
  ||username
  ||’ directory=DIR_BKP logfile=expdp_’
  ||username
  ||’_’ || to_char(SYSDATE,’DD’) || to_char(SYSDATE,’MM’) || to_char(SYSDATE,’YYYY’) || ‘.log &’   
FROM dba_users
WHERE USERNAME IN (‘SCHEMA01′,’SCHEMA02′,’SCHEMA03’);

Ele irá gerar dois scripts por owner que deverá ser executado no sistema operacional para fazer o export primeiramente e caso necessário o import depois.
Eu acho este script muito interessante por que ele tem algumas peculiaridades:

nohup – Este carinha serve para uma coisa muito interessante e que salva a vida do DBA
Sabe quando você coloca uma exportação de dados pra fazer e ela é muuuito demorada e você acaba descobrindo que se desligar a máquina terá que começar tudo de novo?? Pois bem, este cara aí junto com o “&” que tem no final do comando serve para que ele rode no sistema operacional em background, ou seja, mesmo que eu execute ele via PUTTY do meu notebook, e depois desconecte, ainda assim permanecerá rodando no servidor.

FLASHBACK_TIME – Esse comando, embora não seja parte obrigatória do export é muito útil. Como o processo da exportação é feita enquanto o banco de dados trabalha normalmente ele garante que os dados exportados serão integros como eles estavam. A grosso modo, ele cria um “ponto de corte” garantido.

DIR_BKP Este  é o nome do Oracle Directory onde será gravado o arquivo que chamado de dump (extensão .dmp). Caso tenha dúvidas quais diretórios estão presentes no seu Banco de dados faça um select na dba_directories que ela te conta.

Assim, com tudo preenchido certinho, mais os nomes dos schemas que deseja exportar estará criado o seu script e poderá ser utilizado.

Era essa a dica de hoje! Espero que tenha curtido… Ahhhhhh Eu já ia esquecendo.
AMANHÃ não deixe de participar da transmissão online onde irei explicar como pretendo fazer o projeto DBA.

Lembre-se que a sua participação é muito importante! Na verdade, sem ela nada será possível!

Sobre raul andrade

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

2 respostas para Transferência de dados entre ambientes.

  1. Marco Aurelio Peres disse:

    Grande amigo e mestre em Banco de dados, Raul.

    Mais uma vez, compartilha um artigo relevante, de forma limpa.
    Gostaria de contribuir sobre o assunto.

    Expdp e impdp podem ser utilizados com paralelismo, isso torna o processo um pouco mais rápido, desde que se tenha processadores para usar a opção.

    Ah, nohup é um canivete suiço e tanto, principalmente quando a importação ou exportação está no fim.

    Parabéns Raul, mais uma vez. Demonstrar talento é contigo mesmo!!

Deixe uma resposta