Dupliquer une base Oracle avec RMAN

Pour répondre à différents besoins tels qu’une demande de création d’une base de test, vous serez peut-être amené à effectuer une duplication de la base de production par RMAN via l’utilisation de la commande DUPLICATE DATABASE.
Seulement, selon vos contraintes techniques (espace disque, débit réseau, etc …), vous devrez trancher entre plusieurs méthodes de duplication.

 
 
 
 
 
Active Duplication Database :
RMAN n’a pas besoin d’un backup préalable pour effectuer la duplication de la base de production.
Oracle effectue une copie des fichiers de la base (mode ARCHIVELOG) afin de les copier vers le serveur cible.
Les inconvénients de cette méthode sont :

  1. Consommation de ressources sur le serveur de production liée à la copie des fichiers
  2. Performance de la duplication dépendante de la qualité du réseau
  3. La clause SET UNTIL non supportée

Processus de duplication de la base :

  • Configuration des alias TNS pour la base de production et la base de test sur le serveur de test
DBPROD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server_source)(PORT = 1521)))
    (CONNECT_DATA =
      (SERVICE_NAME = DBPROD))
DBTEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server_cible)(PORT = 1521)))
    (CONNECT_DATA =
      (SERVICE_NAME = DBTEST))
  • Configuration du service statique sur le listener du serveur de test puis reload du listener
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = DBTEST)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = DBTEST)
    )
  )
  • Copie du fichier de mot de passe de la production vers le serveur de test
  • Création du fichier d’initialisation (pfile) de la base de test
DB_NAME = DBTEST
  • Démarrage de l’instance de test
SQL> STARTUP NOMOUNT
  • Commande DUPLICATE DATABASE
RMAN> connect target sys/password@DBPROD
RMAN> connect auxiliary sys/password@DBTEST
RUN {
allocate channel ch1 type disk;
allocate channel ch2 type disk;
allocate auxiliary channel ch3 type disk;
allocate auxiliary channel ch4 type disk;
DUPLICATE TARGET DATABASE TO dbtest
FROM ACTIVE DATABASE
SPFILE
NOFILENAMECHECK;
}

 
Backup-Based Duplication :
La duplication s’effectue forcément à partir d’un backup RMAN de la base de production.
Contrairement à la méthode Active Duplication Database, il n’est pas nécessaire de se connecter à la base de production.
L’inconvénient majeur de cette méthode est l’espace disque pris par le backup RMAN indispensable à la duplication.
Les fichiers de backup de la base de production doivent être impérativement accessibles par le serveur de test.
Processus de duplication de la base :

    1. (FACULTATIF)Configuration des alias TNS pour la base de production et la catalogue RMAN (si présent) sur le serveur de test
    2. Copie du fichier de mot de passe de la production vers le serveur de test
    3. Création du fichier d’initialisation (pfile) de la base de test
DB_NAME = DBTEST
  • Démarrage de l’instance de test
SQL> STARTUP NOMOUNT
  • Commande DUPLICATE DATABASE avec connexion sur la base de production
RMAN> connect target sys/password@DBPROD
RMAN> connect auxiliary /
RUN {
allocate channel ch1 type disk;
allocate channel ch2 type disk;
allocate auxiliary channel ch3 type disk;
allocate auxiliary channel ch4 type disk;
DUPLICATE TARGET DATABASE TO dbtest
SPFILE
NOFILENAMECHECK
UNTIL TIME 'SYSDATE-1‘;
}

Les informations des backups RMAN utiles à la duplication se trouvent dans le controlfile de la base de production restauré sur le serveur de test.

  • Commande DUPLICATE DATABASE avec connexion sur le catalogue RMAN
RMAN> connect catalog rman/rman@catdb;
RMAN> connect auxiliary /
RUN {
allocate auxiliary channel ch1 type disk;
allocate auxiliary channel ch2 type disk;
DUPLICATE DATABASE dbprod DBID 8675309 TO dbtest
SPFILE
NOFILENAMECHECK
UNTIL TIME 'SYSDATE-1‘;
}

Les informations des backups RMAN utiles à la duplication se trouvent dans le catalogue RMAN.
La base de production est identifiée via le DBID saisi.

  • Commande DUPLICATE DATABASE avec connexion uniquement sur l’instance de test
RMAN> connect auxiliary /
RUN {
allocate auxiliary channel ch1 type disk;
allocate auxiliary channel ch2 type disk;
DUPLICATE DATABASE TO dbtest
UNTIL TIME 'SYSDATE-1‘
SPFILE
BACKUP LOCATION '/prod_backups'
NOFILENAMECHECK;
}

Les informations des backups RMAN utiles à la duplication sont définies dans la clause « BACKUP LOCATION ».

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *