Fichier de Contrôle : AdministrationDate de publication : le 04 Avril 2005
Par
Bouyao Les fichiers de contrôle 8/8i/9i/10g 1. Description du fichier de contrôle 2. Multiplexage des fichiers de contrôle 2.1. Multiplexage des fichiers de contrôle en utilisant le pfile 2.2. Multiplexage des fichiers de contrôle en utilisant le spfile 3. Sauvegarde du fichier de contrôle 4. Informations sur les fichiers de contrôle 4.1. La vue V$CONTROLFILE 4.2. La vue V$CONTROLFILE_RECORD_SECTION 5. Création d'un fichier de contrôle 6. Déplacement d'un fichier de contrôle 7. Suppression d'un fichier de contrôle 8. Restauration d'un fichier de contrôle corrompu à partir d'un autre fichier valide 1. Description du fichier de contrôle
Le fichier de contrôle est un fichier binaire ; il contient des informations sur la structure physique de la base. Il est créé pendant la création de la base et il est modifié en permanence.
Ce fichier doit être toujours disponible car il est consulté; et modifié fréquemment par le serveur oracle. Et il est indispensable pour la restauration de la base.
Le fichier de contrôle contient les informations suivantes :
On peut utiliser un seul fichier de contrôle mais Oracle en préconise au minimum deux sur des disques différents. Perdre tous les fichiers de contrôle rend difficile la restauration de la base.
La taille du fichier de contrôle dépend en principe de la valeur des paramètres MAXDATAFILES, MAXLOGFILES, MAXLOGMEMBERS, MAXLOGHISTORY, et MAXINSTANCES définis pendant la création de la base.
2. Multiplexage des fichiers de contrôle
Pour afficher les noms des fichiers de contrôle on utilise :
ou
2.1. Multiplexage des fichiers de contrôle en utilisant le pfile
Pour multiplexer les fichiers de contrôle, il suffit de copier un des fichiers dans un autre emplacement et de l'indiquer dans le paramètre CONTROL_FILES du fichier d'initialisation initSID.ora
Supposons qu'on a deux fichiers de contrôle /disk1/oradata/ctrlBASE01.ctl et /disk2/oradata/ctrlBASE02.ctl et qu'on veut ajouter un troisième fichier /disk3/oradata/ctrlBASE03.ctl
Sous Unix
Oracle met à jours les fichiers de contrôle en même temps, mais seul le premier fichier cité dans le paramètre CONTROL_FILES est consulté.
En oracle9i vous pouvez multiplexer jusqu'à 8 copies de fichiers de contrôle.
2.2. Multiplexage des fichiers de contrôle en utilisant le spfile
Sous unix
3. Sauvegarde du fichier de contrôle
Il y a deux façons de sauvegarder le fichier de contrôle :
Cette commande sauvegarde le fichier de contrôle en un fichier binaire.
L'autre façon est :
Cette commande crée un fichier en format texte dans le répertoire USER_DUMP_DEST, qu'on peut modifier pour reconstruire un nouveau fichier de contrôle.
Oracle recommande de sauvegarder le fichier de contrôle à chaque modification de la structure de la base comme le fait d'ajouter, renommer ou supprimer un fichier de données ou un fichier journal.
4. Informations sur les fichiers de contrôle
Les vues suivantes affichent des informations sur les fichiers de contrôle :
4.1. La vue V$CONTROLFILELa vue V$CONTROLFILE affiche tous les noms des fichiers de contrôle et leur statut qui peut être NULL ou INVALID.
On peut visualiser ces informations avec la commande
4.2. La vue V$CONTROLFILE_RECORD_SECTION
La vue V$CONTROLFILE_RECORD_SECTION contient plusieurs informations sur le fichier de contrôle.
On'a
C'est dans cette vue qu'on trouve les valeurs de MAXLOGFILES, MAXDATAFILES, MAXINSTANCES, MAXINSTANCES et MAXLOGHISTORY
Pour afficher la valeur de MAXLOGMEMBERS on utilise la vue X$KCCDI :
Il existe des vues qui lisent directement dans le fichier de contrôle au lieu de lire dans le dictionnaire de données comme :
V$ARCHIVED_LOG, V$BACKUP, V$BACKUP_DATAFILE, V$BACKUP_PIECE, V$BACKUP_REDOLOG, V$BACKUP_SET, V$DATABASE, V$DATAFILE, V$DATAFILE_COPY, V$DATAFILE_HEADER, V$LOG, V$LOGFILE, V$THREAD
On peut vérifier les accès au fichier de contrôle de ces vues par :
5. Création d'un fichier de contrôle
Il est nécessaire de créer les fichiers de contrôle:
Le fichier de contrôle initial est créé pendant la création de la base. Son nom est spécifié dans le paramètre d'initialisation CONTROL_FILES et voici un exemple :
Si vous utilisez OMF vous n'avez pas besoin de spécifier le fichier de contrôle dans le fichier d'initialisation. Oracle prend en compte l'emplacement du fichier de contrôle suivant ces paramètres dans l'ordre : DB_CREATE_ONLINE_LOG_DEST_n, DB_CREATE_FILE_DEST et DB_RECOVERY_FILE_DEST
Même si le paramètre CONTROL_FILES n'est pas spécifié dans le fichier d'initialisation, oracle le crée automatiquement dans le répertoire par défaut de l' OS. Le fichier crée n'est pas un OMF.
Il faut avoir le privilège sysdba pour créer un fichier de contrôle.
Si le paramètre REMOTE_LOGIN_PASSWORDFILE =EXCLUSIVE, oracle signale une erreur. Il faut donc affecter à ce paramètre la valeur SHARED ou créer un nouveau fichier de mot de passe.
Si le fichier de contrôle existe déjà, il faut utiliser CONTROLFILE REUSE au lieu de CONTROLFILE SET dans la clause CREATE DATABASE, et si la taille de l'ancien fichier est différente du nouveau on ne peut pas utiliser l'option REUSE.
On peut créer un nouveau fichier de contrôle en utilisant CREATE CONTROLFILE et voici un exemple :
Il faut faire très attention pendant la création du fichier de contrôle car il peut endommager les fichiers de données et les fichiers journaux. Et le fait d'oublier de mentionner un fichier de données pendant la création du fichier de contrôle peut causer la perte de ce fichier et même la perte de la base entière. Il faut encore faire attention si vous utilisez le mode FORCE LOGGING.
Les étapes à suivre pour créer un nouveau fichier de contrôle :
Soit en utilisant le fichier trace lancé par la commande :
Sinon vous pouvez utiliser les vues suivantes :
Si vous n'avez pas ces informations vous ne pouvez pas ouvrir la base.
Si vous avez perdu l'un des groupes de fichiers journaux ou si vous avez renommé la base, utilisez l'option RESETLOGS, sinon utilisez l'option NORESETLOGS.
Quand on utilise l'option NORESETLOGS, oracle compare le numéro de groupe spécifié dans CREATE CONTROLFILE et l'entête du fichier journal. Si la comparaison échoue on aura le message suivant :
Ce qui veut dire que le fichier journal :
Si le nouveau fichier de contrôle est créé avec l'option NORESETLOGS vous pouvez restaurer la base complètement, et s'il est crée avec l'option RESETLOGS vous devez utiliser USING BACKUP CONTROL FILE et ouvrir la base avec ALTER DATABASE OPEN RESETLOGS;
6. Déplacement d'un fichier de contrôle
Supposons qu'on'a trois fichiers de contrôle :
u01/oracle/mabase/control01.ctl,
u02/oracle/mabase/control02.ctl,
u03/oracle/mabase/control03.ctl
et on veut déplacer le fichier control03.ctl dans u04/oracle/mabase/control03.ctl.
7. Suppression d'un fichier de contrôle
Supposons qu'on'a trois fichiers de contrôle :
u01/oracle/mabase/control01.ctl,
u02/oracle/mabase/control02.ctl,
u03/oracle/mabase/control03.ctl
et on veut supprimer control03.ctl.
8. Restauration d'un fichier de contrôle corrompu à partir d'un autre fichier valide
Supposons qu'on'a trois fichiers de contrôle :
u01/oracle/mabase/control01.ctl,
u02/oracle/mabase/control02.ctl,
u03/oracle/mabase/control03.ctl
et que le fichier control03.ctl est corrompu.
|