Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
4 octobre 2008 6 04 /10 /octobre /2008 15:07
Bonjour à tous,


REMARQUE: Cet Article est un des premiers de mon blog et cependant d'après les statistiques, il s'agit d'un des articles les plus "lu" ou du moins accèdé. Il serait interessant pour moi que vous preniez le temps d'y laisser un petit commentaire pour m'indiquer si il vous a été utile ou ce qui a manqué pour vous aider. Merci par avance.



Voici donc mon premier thème. On ne peut pas dire que je commence par le plus simple. En effet nous allons "cloner" une base. Pour cela nous allons utiliser RMAN, outil fourni gracieusement par ORACLE et dont l'objet premier est de s'occuper des sauvegardes.
Pour beaucoup, effectuer une sauvegarde consiste à faire des exports ...
Nous essaierons de montrer dans un prochaine article que cela n'est :
  • Pas performant.
  • Pas suffisant.


A part pour ceux qui font partie du monde de la production ou de l'exploitation, RMAN n'est peut être pas familier.
Je pense notamment aux editeurs de logiciel qui s'appuient sur une base comme ORACLE.
Or pour avoir travaillé preque 8 ans chez des editeurs, je sais que l'on est souvent confrontés à des problèmes de duplication d'environnement (Dev vers test, test vers pre-prod...)

Alors on peut faire des exports, des imports, mais lorsqu'il s'agit de de repeter ces opérations sur des bases volumineurses, nous sommes vite confrontés à des problèmes de "temps" !

Pour commencer avec quelque chose de simple, nous allons dupliquer une base dans un environnement WINDOWS sur la même machine.

Envrionnement :
ORACLE 10.2.0.1 (Personnal Edition)  avec un OS classique : WINDOWS XP PRO.

Une base à dupliquer qui a pour SID ORADB.

Etape 1: Passer notre base en mode "ARCHIVELOG"

Demarrer > Executer > cmd.exe

 lancer l'utilitaire SQL+ en tapant sqlplus / nolog


 SQL> Connect / as sysdba  (attention, il faut etre en local pour executer cette commande)
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;



Etape 2: Effectuer une sauvegarde complète de la base.

Demarrer > Executer > cmd.exe

Dans le cas, ou nous avons plusieurs bases sur notre machine, nous positionnons la variable d'environnement sur la base à dupliquer.

SET ORACLE_SID=ORADB

Nous pouvons maintenant appeler l'utilitaire rman en tapant tout simplement dans l'invite de commande RMAN

Remarques: Par défaut les fichiers de sauvegardes, et les fichier d'archives sont placés dans la FRA (Flash Recovery Area).  A l'installaltion d'ORACLE, cette zone a une valeur maximal de  2 G. Si vous disposez d'une base volumineuse, il convient d'augmenter cette taille.

Se connecter en System:


SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE= 10 G;


Nous pouvons également modifier l'emplacement de la FRA (par défaut /ORACLE_HOME/flash_recovery_area/)

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=C:\My_FRA_Dest;

RMAN> CONNECT TARGET /
RMAN> BAKCUP FULL DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;



Etape 3: Créer l'arborescence pour acceuillir la base clonée.

ex: C:\ORACLE\PRODUCT\10.2.0\admin\ORADB pour les répertoires pfile,udump,bdump,...
 et C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORADB pour les fichiers de données, redo, ....

Si nous voulons que la nouvelle base s'appelle DUP, il faut alors créer une arborescence du type
C:\ORACLE\PRODUCT\10.2.0\admin\DUP et créer les différents répertoires comme pour ORADB
et également créer C:\ORACLE\PRODUCT\10.2.0\ORADATA\DUP  à vide.

Etape 4: Créer un fichier init.ora pour la base DUP.

Pour cela, nous allons tout simplement compier le ini.ora (qui peut avoir un autre nom) qui se trouve dans C:\ORACLE\PRODUCT\10.2.0\admin\ORADB\pfile dans C:\ORACLE\PRODUCT\10.2.0\admin\DUP\pfile

Pour simplifier, si ce n'est pas le cas, renommez le init.ora
 
Il va maintenant falloir editer ce fichier init.ora pour remplacer ORADB par DUP partout dans le fichier (emplacement de fichier, nom de base), utiliser la fonction "rechercher & remplacer" de votre editeur pour etre sur de ne pas en oublier. 
 
Cela n'est cependant pas suffisant, nous allons ajouter à la fin de notre fichier init.ora fraichement modifié les deux lignes suivantes:

DB_FILE_NAME_CONVERT=('ORADB','DUP')
INSTANCE_NAME='DUP'

ATTENTION : Modifier également le cas échéant les paramètres relatifs à la mémoire (SGA & PGA) afin de ne pas utiliser la totalité de la RAM disponible sur votre PC.

Etape 5 : Créer une nouvelle instance.

Demarrer > Executer > cmd.exe puis tapez la commande suivante
ORADIM -new -sid DUP

Etape 6: Démarrer l'instance créer.

Nous allons démarrer l'instance DUP en mode no mount et indiquer le fichier ora à utiliser pour lancer l'intance.
Demarrer > Executer > cmd.exe



SET ORACLE_SID=DUP
sqlplus / nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP NOMOUNT pfile='c:\ORACLE\PRODUCT\10.2.0\admin\pfile\init.ora';
SQL> DISCONNECT;
SQL> QUIT



 Etape 7: Clonage de la base ORADB

Demarrer > Executer > cmd.exe puis :



SET ORACLE_SID=DUP
rman target sys/oracle@ORADB auxiliary /
RMAN> DUPLICATE TARGET DATABASE TO DUP
pfile=C:\ORACLE\PRODUCT\10.2.0\admin\pfile\init.ora
logfile
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\redo01.dbf' size 50m,
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\redo02.dbf' size 50m,
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\redo01.dbf' size 50m;



Il suffit d'attendre un peu, et finalement la duplication se termine, connectez vous alors à DUP et verifiez que vos users, schemas sont bien présents.

Conclusion: Bon nombre de personnes pensent que la duplication de base ou l'utilisation de RMAN sont des choses complexes. Je ne remettrai pas en cause le fait que la problématique des sauvegardes n'est pas aisée, mais finalement si vous prenez le temps d'effectuer les 7 étapes ci-dessus, vous vous rendrez compte qu'en moins de trente minutes vous aurrez effectué un clonage de base en utilisant RMAN !

Si vous avez passé votre base en ARCHIVELOG pour effectuer ces opérations, je vous conseille de la repasser en mode NOARCHIVELOG. Pour cela rien de plus simple.

Demarrer > Executer > cmd.exe

 lancer l'utilitaire SQL+ en tapant sqlplus / nolog


SQL> Connect / as sysdba  (attention, il faut etre en local pour executer cette commande)
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE NOARCHIVELOG;
SQL> ALTER DATABASE OPEN;



Liens utiles:

Clonage d'une base en mode no archivelog sur un serveur distant
Clonage d'une base en mode archivelog sur un serveur distant

LAO.
 
Partager cet article
Repost0

commentaires

P
Bonjour, le fichier mot de passe PWDsid.ORA n'est pas concerné par la duplication ?<br /> <br /> Merci
Répondre
L
Bonjour,<br /> <br /> Non il faut copier à la main avant le duplicate !<br /> <br /> bonne journée
N
un tuto clair et très compréhensible!!! merci
Répondre
A
J'ai lu un livre sur cette question; Mais ici c'est vraiment bien schématiser en procédure pratique, clair et compréhensible.<br /> <br /> Adrunondra
Répondre
L
Grand merci pour votre commentaire ! Ca fait toujours plaisir !<br /> <br /> LAO
A
Merci pour ce beau tutoriel, il m'a été d'une grande utilité
Répondre
D
<br /> Bonjour,<br /> <br /> <br />  <br /> <br /> <br /> J'utilise SQL + pour me conencter à ma base, avec la commande select instance_name from v$instance; je me trouve bien sur ma base d'origine orcl) mais lorsque je fais un select * sur une table<br /> qui avait des données SQLplus me répond "aucune ligne sélectionnée"<br /> <br /> <br /> Pourtant je me suis bien assuré d'ajouter des données à cette table avant le clonage pour justement pouvoir comparer le clone et l'original.<br />
Répondre