Multiplexer le fichier de contrôle (Control File) sous Oracle

Le fichier de contrôle est un élément crucial de la base de donnée Oracle. Il contient de nombreuses informations importantes à propos de votre base : son nom, le chemin vers les fichiers de données, le chemin vers les RedoLogs, etc…

La problématique

Avec un fichier de contrôle corrompu ou inexistant, il vous sera impossible de démarrer complétement votre base. Il est en effet nécessaire pour passer de l’étape NOMOUNT à MOUNT, afin qu’Oracle sache localiser les fichiers de données et les RedoLogs.

La solution pour pallier à toute éventualité (erreur humaine, crash disque, etc…) : multiplexer le fichier de contrôle (control file). Oracle recommande d’avoir au moins deux fichiers de contrôle, chacun sur un disque différent.

Il existe deux méthodes pour mettre en place le multiplexage du Control File. Le choix de l’une des méthodes va dépendre du fait que vous utilisez un fichier de paramètre serveur (SPFILE) ou non (PFILE). Dans les deux cas, un redémarrage de la base est nécessaire.

Méthode n°1 : Avec un SPFILE

Première étape, modifier le paramètre CONTROL_FILE de notre SPFILE. On va y indiquer les différents emplacements de notre actuel et futur fichier de contrôle :

sqlplus> ALTER SYSTEM SET CONTROL_FILES =
       > '/u01/oradata/control01.ctl',
       > '/u02/oradata/control02.ctl'
       > SCOPE = SPFILE;

On arrête ensuite la base (pas de SHUTDOWN ABORT, il vous faut un fichier de contrôle cohérent) :

sqlplus> SHUTDOWN IMMEDIATE

On va maintenant effectuer une simple copie au niveau du système.

$ cp /u01/oradata/control01.ctl /u02/oradata/control02.ctl

On redémarre la base :

sqlplus> STARTUP

Et c’est fini !

Méthode n°2 : Sans SPFILE

On commence par arrêter la base (pas de SHUTDOWN ABORT, il vous faut un fichier de contrôle cohérent) :

sqlplus> SHUTDOWN IMMEDIATE

Ensuite on va modifier le fichier de paramètre (PFILE), et y ajouter le paramètre CONTROL_FILE en y indiquant les différents emplacements de notre actuel et futur fichier de contrôle :

CONTROL_FILE = ('/u01/oradata/control01.ctl',
                '/u02/oradata/control02.ctl')

On va maintenant effectuer une simple copie au niveau du système.

$ cp /u01/oradata/control01.ctl /u02/oradata/control02.ctl

On redémarre la base :

sqlplus> STARTUP

Et c’est fini !

Conclusion

Pour vérifier que vos changements ont bien été pris en compte, vous pouvez interroger la vue dynamique v$controlfile :

sqlplus> SELECT name FROM v$controlfile;
NAME
--------------------------------------------------------------
/u01/oradata/control01.ctl
/u02/oradata/control02.ctl

Et voilà, le multiplexage de votre fichier de contrôle est en place. Si jamais l’un de vos Control File disparait ou devient corrompu, il vous suffit à présent de le remplacer par l’un des autres en faisant une simple copie.

Laisser un commentaire