Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
30 janvier 2009 5 30 /01 /janvier /2009 11:21
Bonjour,

Dans un post précédent (le premier en fait)  http://www.lao-dba.com/categorie-10596128.html
j'avais expliqué comment dupliquer une base qui était en mode Archivelog sur la même machine.
Pour répondre à une des questions sur ce post, je vais aujourd'hui effectuer la même opération (le clonage) mais avec deux différences:
  • La base à cloner n'est pas en mode Archivelog.
  • La base de destination se trouver sur une machine distante.

Pour effectuer ces manipulations, j'utilise deux machines virtuelles (XP PRO).
La base à cloner est la base que nous avons créer dans le dernier post (
http://www.lao-dba.com/article-27313199.html).

Cependant, nous allons ajouter deux lignes au fichier ini.ora pour indiquer l'emplacement de la sauvegarde, et la taille maximum reservé a cet emplacement (à modifier en fonction de votre environnement).



DB_RECOVERY_FILE_DEST_SIZE=10G
DB_RECOVERY_FILE_DEST="e:\oracle\product\10.2.0\backup"



Il faut également créer un listener sur la machine virtuelle afin de pouvoir s'y connecter par la suite depuis le serveur distant.

Nous allons maintenant effectuer une sauvegarde (en utilisant RMAN) de notre base, qui je rappelle n'est pas en mode archivelog. Ce qui signigie que la sauvegarde s'effectue base fermée, et plus précisemment en mode MOUNT.



SET ORACLE_SID=DB1

SQLPLUS /nolog
CONNECT / as sysdba
SHUTDOWN IMMEDIATE; 

RMAN target /
STARTUP MOUNT pfile='e:\oracle\product\10.2.0\admin\db1\pfile\init.ora';
BACKUP FULL DATABASE;
ALTER DATABASE OPEN;
QUIT;



La sauvegarde est maintenant terminée.

Nous pouvons passer sur le serveur distant qui pour le moment ne contient que le noyau Oracle (10.2.0.3) 

Il faut (comme pour une création de base manuelle) créer les répertoire nécessaires.
Je décide que la base de destination (ainsi que l'instance ) se nommera DB2 (Oracle, DB2==> humour !)


MKDIR E:\oracle\product\10.2.0\admin
MKDIR E:\oracle\product\
10.2.0\oradata 

MKDIR E:\oracle\product\10.2.0\admin\DB2
MKDIR E:\oracle\product\
10.2.0\oradata\DB2 

MKDIR E:\oracle\product\10.2.0\admin\DB2\bdump
MKDIR E:\oracle\product\
10.2.0\admin\DB2\cdump
MKDIR E:\oracle\product\
10.2.0\admin\DB2\pfile
MKDIR E:\oracle\product\
10.2.0\admin\DB2\udump 


Il faut maintenant copier le fichier init.ora depuis le serveur d'origine sur le serveur de destination à l'emplacement prévu(E:\Oracle\product\10.2.0\admin\db2\pfile)

En plus de modifier le init.ora pour remplacer tous les DB1 par DB2, nous allons également ajouter les deux lignes suivantes à la fin du fichier. 


DB_FILE_NAME_CONVERT=('DB1','DB2')
INSTANCE_NAME='DB2


 

Crééons maintenant l'instance: (Etape propre à windows)



oradim -new -sid DB2

 

Avant de pouvoir commencer l'étape de clonage proprement dite, il faut récuperer le fichier de sauvegarde de DB1 et le copier sur mon serveur distant en prenant soit de conserver l'arboresence et les noms de fichiers.Il suffit donc de copier tout ce qui se trouve dans E:\oracle\product\backup (sur mon serveur d'origine)  vers E:\oracle\product\backup (sur mon serveur distant).

Remarque : Si je dispose d'un espace de stockage commun accessible par les deux serveurs, alors cette opération n'est pas nécessaire. 
 
Il ne reste plus qu'a ajouter les lignes suivantes dans le tnsnames.ora du serveur distant



DB1_SRV1 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ORA10-SRV1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DB1)
    )
  )


 
Clonage de la base:


SET ORACLE_SID=DB2
SQLPLUS / nolog
CONNECT / as sysdba
STARTUP NOMOUNT pfile='e:\oracle\product\10.2.0\admin\db2\pfile\init.ora';
DISCONNECT;
QUIT

RMAN target sys/*****@DB1_SRV1 auxiliary /
DUPLICATE TARGET DATABASE TO DB2
pfile='e:\oracle\product\10.2.0\admin\db2\pfile\init.ora'
logfile 
'e:\oracle\product\
10.2.0\oradata\DB2\redo01.dbf' size 50m,
'e:\oracle\product\
10.2.0\oradata\DB2\redo02.dbf' size 50m,
'e:\oracle\product\
10.2.0\oradata\DB2\redo03.dbf' size 50m;  


Et normalement, vous disposez maintenant d'une copie de la base DB1...

Remarque : Pour simplifier, j'ai conservé les mêmes noms et emplacement sur le machine de destination, mais la commande DUPLICATE permet de renommer les fichiers et d'indiquer un nouvel emplacement. On en reparlera un jour si ca interesse quelqu'un...

LAO. 

 

Partager cet article
Repost0

commentaires

L
<br /> Pouvez vous me faire parvenir un exemple de DUPLICATE avec renommage des datafile et de tout les noms de référence à la primaire<br />
Répondre
L
<br /> <br /> Bonjour,<br /> <br /> <br /> Dans l'article http://www.lao-dba.com/article-23407812.html, j'effectue un clonage il y a donc un exempler d'utilisation du paramètre DB_FILE_NAME_CONVERT=('ORADB','DUP') surtout utile pour la modification du chemin.<br /> <br /> <br /> <br />
V
Oui, on a aussi l'homme qui tombe à pic (ou presque) en interne :D<br /> Le pauvre est un peu le sauveur de tous, il n'est donc pas toujours très disponible. J'espère qu'il résistera bien à tous nos défauts ;)
Répondre
V
Justement, j'avais besoin d'une copie d'une base... Tu arrives à pic !
Répondre
L
<br /> Mon surnom est "Colt Sivers"... Je suis l'homme qui tombe à pic... Plus sérieusement, ne confonds pas clonage d'une base, avec un export / import d'un schema. Mais tu as l'homme qu'il te faut en<br /> interne...<br /> <br /> LAO.<br /> <br /> <br />