Les fichiers de contrôles d’une instance de base de données sont primordiaux : une instance ne peut pas démarrer sans eux et une sauvegarde base ouverte ne sera probablement pas exploitable sans eux.
Si vous perdez les fichiers de contrôles, vous perdez votre base de données, d’où l’intéret de les sauvegarder plustot deux fois qu’une !
L’emplacement du (ou des) fichier(s) de controle(s) sont donnés dans le fichier d’init de l’instance, ceux-ci sont généralement multipléxés sur des emplacements disques différents dans le cas de disques locaux et sur des filesystems différents pour les bases sur baie de disque.
1 – Contenu des fichiers de contrôles :
Les fichiers de controles sont des fichiers binaires non éditables, leur contenu est mis à jour par Oracle par appels systèmes.
Les fichiers de controle d’une instance comportent des éléments vitaux tels que :
a) nom de la database
b) nom et emplacement des fichiers de données
c) emplacement des fichiers de journaux et de leurs éventuelles archives
d) numéro de séquence actuelle de l’instance (SCN ou System Change Number)
e) informations sur les points de reprises (checkpoint)
On se doute bien que, de par le point c), il sera impossible de pratiquer un recovery sur une base de données sans savoir où se trouvent les journaux archivés ainsi que les journaux de la database … Il sera d’autant plus difficile d’ouvrir une base de données si on ne sait pas (ou plus) où se trouve les fichiers de données (b), … BREF : Un DBA n’a pas le droit de perdre un fichier de controle.
Remarque: Lorsqu’une instance est en mode NOMOUNT, les fichiers de controles ne sont pas pris en compte, c’est à ce niveau là que s’éffectueront les opérations de maintenance de ces objets (sauvegarde, restauration, creation, …)
2 – Création d’un fichier de contrôle :
L’instance doit être en mode « nomount », après cela, voici la syntaxe de création d’un fichie de contrôle :
create controlfile
reuse
database "madatabase"
noresetlogs
archivelog
maxlogfiles 24
maxlogmembers 2
maxdatafiles 1024
maxinstances 8
maxloghistory 454
logfile
group 1 '/data/madatabase/redos/redo01.log' size 100M ,
group 2 '/data/madatabase/redos/redo02.log' size 100M,
group 3 '/data/madatabase/redos/redo03.log' size 100M
datafile
'/data/madatabase/tablespaces/datas/tsdatas01.dbf',
'/data/madatabase/tablespaces/datas/tsundo01.dbf',
'/data/madatabase/tablespaces/datas/tssystem01.dbf',
'/data/madatabase/tablespaces/datas/tssysaux01.dbf',
'/data/madatabase/tablespaces/datas/tstemp01.dbf'
character set WE8MSWIN1252;
Explications :
REUSE: indique que si un fichier CTL existe au même emplacement voulu que celui à créer, celui-ci sera écrasé et remplacé
NORESETLOGS:les fichiers journaux ne doivent pas être initialisés (contenu éffacé) car nécessaires au démarrage de l’instance
ARCHIVELOG:indique que les journaux doivent être périodiquement archivés
MAXLOGFILE:nombre max de fichier journaux pouvant être créés
MAXLOGMEMBERS:nombre max de fichiers journaux identiques (multiplexage)
MAXDATAFILES:nombre maximal de fichiers de données pour la database
MAXINSTANCES:nombre max d’instances pouvant utiliser cette base de données
MAXLOGHISTORY: nbre max de fichiers journaux archivés pour une récupération automatique dans le cadre d’un cluster RAC (Real Application Cluster)
3 – Multiplexage des fichiers de controles
Il suffit pour cela d’avoir au moins un fichier de controle ctl01.ctl, d’indiquer à Oracle qu’il dispose d’une deuxième version multiplexée de son premier fichier puis, base fermée, de copier le fichier initial pour obtenir sa version multipléxée.
sql> alter system set control_files='/data/madatabase/ctl/ctl01.dbf',
'/data/madatabase/ctl/ctl02.dbf'
scope=SPFILE;
sql>shutdown immediate;
sql> host copy /data/madatabase/ctl/ctl01.dbf
/data/madatabase/ctl/ctl02.dbf
sql> startup;
Attention: A la création d’un fichier de contrôle, ou de la restauration d’une sauvegarde après crash, les SCN sont perdus, les informations sur les checkpoints aussi (on parle de NOUVELLE INCARNATION de la database), les sauvegardes antérieures à cette restauration seront INEXPLOITABLES. C’est pour cela qu’une sauvegarde immédiate doit être éffectuée après la restauration d’un fichier de controle.
4- Manipulation d’un fichier de controle :
Un fichier de controle est un élément binaire, il est donc hors de question de le manipuler avec un éditeur de fichier, cependant, il existe une possibilité de générer une version SQL de ce fichier dans un but de modification et de re-création ultérieure.
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘/data/madatabase/ctl/bck/ctl01.sql’;
Une copie physique peut cependant être éffectuée avec :
ALTER DATABASE BACKUP CONTROLFILE TO ‘/data/madatabase/ctl/bck/ctl01.ctl’;
