quinta-feira, 15 de março de 2012

Clonar banco de dados via RMAN


Senhores(as), boa tarde,
Hoje, vamos aprender um pouco sobre como clonar um banco de dados via RMAN.

== Pré-requisitos ==

Para que o clone database seja bem sucedido, certifique-se que todos os pré-requisitos sejam contemplados:


Senhores(as), boa tarde,
Hoje, vamos aprender um pouco sobre como clonar um banco de dados via RMAN.

== Pré-requisitos ==

Para que o clone database seja bem sucedido, certifique-se que todos os pré-requisitos sejam contemplados:
1) O banco de dados destino não deve estar montado(nomount);
2) Utilizando o RMAN execute um backup completo do database, mais os archived redo logs:
       a. rman> backup database plus archivelog;
3) Todos os arquivos gerados por este backup devem ser copiados para mesma pasta no servidor de destino;
4) Verifique o SCN do backup gerado acima:
       a. rman> list backup of database;
             BS Key  Type LV Size       Device Type Elapsed Time Completion Time
             ------- ---- -- ---------- ----------- ------------ -------------------
             7593    Full    431.14M    DISK        00:01:41     05/06/2009 12:21:00
                    BP Key: 7597   Status: AVAILABLE  Compressed: NO  Tag: TAG20090605T121919
                    Piece Name: /u01/app/oracle/product/11.1.0/db_1/dbs/3fkgqke7_1_1
               List of Datafiles in backup set 7593
               File LV Type Ckp SCN    Ckp Time            Name
               ---- -- ---- ---------- ------------------- ----
                1       Full 393996     05/06/2009 12:19:19 /u01/oradata/oltp/system01.dbf
               2       Full 393996     05/06/2009 12:19:19 /u01/oradata/oltp/sysaux01.dbf
               3       Full 393996     05/06/2009 12:19:19 /u01/oradata/oltp/undotbs01.dbf
               4       Full 393996     05/06/2009 12:19:19 /u01/oradata/oltp/users01.dbf
               5       Full 393996     05/06/2009 12:19:19 /u01/oradata/oltp/rman_d01.dbf
               6       Full 393996     05/06/2009 12:19:19 /u01/oradata/oltp/dta01.dbf
       b. Verifique a coluna 'CKP SCN', para descobrir qual SCN deve ser utilizado na clausula "UNTIL SCN XXX". No caso acima o SCN é 393996.
5) Caso a estrutura de pastas de ambos os servidores sejam identicas, não é necessário setar novos nomes para os datafiles (SET NEWNAME FOR DATAFILE X).
6) Modifique o scritp abaixo, de acordo com o ambiente que o mesmo estiver sendo executado.

==== Execução =======
rman TARGET / CATALOG RMAN/RMAN AUXILIARY sys/senha@clone
ou
rman TARGET / NOCATALOG AUXILIARY SYS/SENHADOSYS@NOMEDOBANCO

RUN{
       allocate auxiliary channel c1 DEVICE TYPE disk ;
       SET NEWNAME FOR DATAFILE 1 to '/u01/app/oracle/oradata/oltp/system01.dbf' ;
       SET NEWNAME FOR DATAFILE 2 to '/u01/app/oracle/oradata/oltp/undotbs01.dbf' ;
       SET NEWNAME FOR DATAFILE 3 to'/u01/app/oracle/oradata/oltp/sysaux01.dbf' ;
       SET NEWNAME FOR DATAFILE 4 to '/u01/app/oracle/oradata/oltp/users01.dbf' ;
       SET NEWNAME FOR DATAFILE 5 to '/u01/app/oracle/oradata/oltp/dta01.dbf ' ;
       SET NEWNAME FOR DATAFILE 6 to '/u01/app/oracle/oradata/oltp/dados01.dbf' ;
       SET NEWNAME FOR TEMPFILE 1 to '/u01/app/oracle/oradata/smlmv/temp01.dbf';
        DUPLICATE TARGET DATABASE TO "CLONE" UNTIL SCN 389781 NOFILENAMECHECK
        LOGFILE
          GROUP  1 ( '/u01/app/oracle/oradata/oltp/redo01.log' ) SIZE 50 M  REUSE,
          GROUP  2 ( '/u01/app/oracle/oradata/oltp/redo02.log' ) SIZE 50 M  REUSE,
          GROUP  3 ( '/u01/app/oracle/oradata/oltp/redo03.log' ) SIZE 50 M  REUSE;
}


=== Adicionando tempfile==

alter tablespace temp add tempfile '/u01/oradata/clone/temp02.dbf' size 32m autoextend on next 32m maxsize 1024m;
alter tablespace temp drop tempfile '/u01/oradata/clone/temp01.dbf';
rm -rfv /u01/oradata/clone/temp01.dbf
alter tablespace temp add tempfile '/u01/oradata/clone/temp01.dbf' size 32m autoextend on next 32m maxsize 1024m;
alter tablespace temp drop tempfile '/u01/oradata/clone/temp02.dbf';

select * from dba_temp_files;

== Setando novo nome ao banco de dados( se necessário)
 nid TARGET=SYS/<senha do usuário SYS> DBNAME=nome do banco de dados, neste caso, o comando ficaria dessa forma.
 nid TARGET=SYS/****** DBNAME=OLTP

OBS: (Atenção, certifique-se que todos os pré-requisitos sejam contemplados, conforme descrito no inicio do procedimento, caso contrário o procedimento não será efetuado com sucesso.)



Qualquer dúvida, deixe seu comentário.

Abraço.

Nenhum comentário:

Postar um comentário