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!