Buenas! 🙂
Vendo inúmeras perguntas sobre o tema no grupo, e tendo uma atividade do tipo para executar, resolvi documentar passo-a-passo e transformar em um post.
Todo DBA já precisou replicar um banco. Seja ele um banco de PRD para atualizar ambiente de HLG, ou apenas duplicar um banco para executar um teste de aplicação de patch, enfim.
Irei compartilhar aqui minha forma favorita de executar essa tarefa! 🙂
– É necessário que o banco esteja em modo ARCHIVE.
1) Identificar a lista de datafiles do banco de origem:
2) Identificar no banco de origem os últimos archives gerados. Os archives gerados após o ‘begin backup’ são os necessários para aplicar no banco destino e será necessário a cópia dos mesmos. Tome nota da sequence a partir da qual será necessário enviar para o banco destino:
3) Execute o seguinte comando para colocar o banco em modo backup: (em bancos 9i é necessário realizar o comando por tablespace – “ALTER TABLESPACE nome BEGIN BACKUP;”)
4) Agora os datafiles podem ser copiados para o banco destino:
Duas horas depois… 😀
5) Após a cópia, execute o comando para geração de alguns archives no banco origem:
6) Execute novamente no banco origem o select do passo 2 para verificar a sequence de archives atual. Os archives gerados entre a sequence do passo 2 e a sequence atual devem ser copiados para o banco destino. Nesse exemplo entre a sequence 180735 e a sequence 180750 conforme exemplo abaixo:
7) Faça uma cópia do pfile/spfile do banco origem para um pfile no banco destino. Utilizaremos pfile pro caso de ser necessário efetuar alguma alteração, como por exemplo, parâmetros de memória, caminho dos diretórios *dump, o nome do DB, etc…
8) No banco origem criamos um backup do controlfile para um trace com o seguinte comando:
O arquivo será gerado no udump (geralmente o último arquivo gerado, verifique com um editor de texto).
Na seção ‘RESETLOGS’ altere a opção ‘REUSE’ para ‘SET’. Caso seja necessário altere o nome do banco, caminho dos redos, datafiles, o que for necessário. Salve esse arquivo como create_control.sql
9) No banco destino, sete o SID e execute um ‘STARTUP NOMOUNT;’
10) Execute o script create_controlfile.sql, criado no passo 8.
11) Agora podemos executar o recover do banco. Nesse momento o banco irá solicitar os archives gerados entre o passo 2 e 6.
(digite AUTO para aplicar todos os archives gerados)
Quinze minutos depois… 🙂
12) Agora o banco pode ser aberto com a opção RESETLOGS:
14) Caso necessário, altere o nome do banco:
Tudo isso ao som que segue:
É isso aí pessoal… cada um tem um jeito que acha melhor. Pessoalmente, acho esse o mais rápido, por não precisar fazer um restore via RMAN, apenas copiar de uma instance para a outra.
Devemos observar alguns detalhes como aumento do volume de geração de archives no período entre begin/end backup, assim como rotinas de backup de archives que possam limpar os mesmos.
Abraços!
Parabéns!
Simples, Objetivo e eficiente.
Abraço
Valeu Marcelo! 🙂
Esse era mesmo o objetivo do post, apresentar uma forma simples de clonar um DB! o/
Continue acompanhando o bloguis! 😀
Mandou bem Vitor 🙂
Show!
Abraço
Wagner Vinicius
Valeu Wagner! Continue nos acompanhando! o/
Abraço! 🙂
Boa Vitor!!
Continue assim.
Valeu Neto! Continue acompanhando o blog! 😀
Abraço!
Mestre Vitor, desculpe a minha ignorância. Tenho uma dúvida:
“11) Agora podemos executar o recover do banco. Nesse momento o banco irá solicitar os archives gerados entre o passo 2 e 6.
(digite AUTO para aplicar todos os archives gerados)”
Como ele irá aplicar os archives gerados no database destino(clone) se você não transferiu os archives depois do comando “end backup” ?
Bom dia Rafa! Ignorância nada, que isso… não existe o saber mais ou saber menos, existem os saberes diferentes! 😉
Então, eu não coloquei no post, mas achei que havia ficado sub-entendido que era necessário a cópia dos archives gerados para o outro servidor, pois a frase mesmo diz:
“Neste momento o banco irá solicitar os archives gerados entre o passo 2 e 6.”
Logo, foram gerados no servidor 1, precisam ser copiados para o servidor 2… ok doc?
Grande abraço e continue acompanhando o blog! 🙂
Att
Vitor Jr
Grande mestre Vitor.
Tenho uma outra dúvida besta…
Você fez o backup dos datafiles, pfile, controlfile e dos archives necessários. Quanto ao arquivo de redo log, como eles são criados no banco de dados de destino(database auxiliar) ?
Obrigado pelo tutorial Vitor. Porém tenho outra dúvida e gostaria de saber se tens como me ajudar:
Preciso fazer uma conexão a uma base Oracle Enterprise Edition 11gR2 remotamente. Tenho o SGBD instalado em um SO Oracle Enterprise Linux 6.4 e preciso acessá-la através de um cliente Windows XP. Porém nessa máquina cliente Windows não há nenhum client do Oracle instalado.
Pelo Oracle SQL Developer eu consigo me conectar com sucesso na base (Conexão: orcl-linux / Usuário: SYSTEM / Senha:*** / Tipo de conexão: Básico / Host: 192.168.56.150 / Porta: 1521 / SID: testdb).
Porém quando tento criar uma conexão via ODBC no Windows, escolhendo a opção “Adicionar > Microsoft ODBC for Oracle” dá o erro:
“Componentes cliente e de rede Oracle(tm) não encontrados. Estes componentes são fornecidos pela Oracle Corporation e fazem parte da instalação do software cliente Oracle versão 7.3 (ou posterior).”.
Caso tenha algum driver ODBC para Oracle me ajudaria bastante.
Grato.
Ola Renato, tudo certo?
Tu diz aqui: “Porém nessa máquina cliente Windows não há nenhum client do Oracle instalado.” E não pode instalar? Isso teoricamente já resolveria o problema.
Os drivers ODBC são disponibilizados pela própria Oracle no site deles, inclusive na modalidade do instant client que nem ao menos necessita instalação.
Mais informações:
Instant Client Downloads for Microsoft Windows (32-bit):
http://www.oracle.com/technetwork/topics/winsoft-085727.html
Acredito que terás que baixar esses dois ‘zips’:
Version 11.2.0.3.0
Instant Client Package – Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
*Instant Client Package – ODBC: Additional libraries for enabling ODBC applications
Att
Vitor Jr
Então Vitor, a idéia é não instalar o client nos clientes, e sim apenas o aplicativo daqui da empresa mesmo.
Vou testar o Instant Client Download depois do almoço e mais tarde volto aqui pra avaliar.
Obrigadão.
Show de bola seu artigo, mudar reuse por set, porque não verdade estamos criando do zero, reuse somente se estivemos em produção e por um motivo ou outro estaríamos recuperando a perda do control file correto?
–CREATE CONTROLFILE REUSE DATABASE “nomedb” NORESETLOGS ARCHIVELOG
CREATE CONTROLFILE SET DATABASE “nomedb” RESETLOGS ARCHIVELOG
Desde já agradeço!!!!