Sie sind auf Seite 1von 10

Fichier de Contrle : Administration

Les fichiers de contrle 8/8i/9i/10g

1. Description du fichier de contrle 2. Multiplexage des fichiers de contrle 2.1. Multiplexage des fichiers de contrle en utilisant le pfile 2.2. Multiplexage des fichiers de contrle en utilisant le spfile 3. Sauvegarde du fichier de contrle 4. Informations sur les fichiers de contrle 4.1. La vue V$CONTROLFILE 4.2. La vue V$CONTROLFILE_RECORD_SECTION 5. Cration d'un fichier de contrle 6. Dplacement d'un fichier de contrle 7. Suppression d'un fichier de contrle 8. Restauration d'un fichier de contrle corrompu partir d'un autre fichier valide

1. Description du fichier de contrle


Le fichier de contrle est un fichier binaire ; il contient des informations sur la structure physique de la base. Il est cr pendant la cration de la base et il est modifi en permanence. Ce fichier doit tre toujours disponible car il est consult; et modifi frquemment par le serveur oracle. Et il est indispensable pour la restauration de la base. Le fichier de contrle contient les informations suivantes :

y y y y y y y y y y y y

Informations sur la base Historique des fichiers de journalisation archivs Informations sur les tablespaces et les fichiers de donnes (nom de fichier, checkpoints du fichier de donnes, statut lecture/criture, en ligne ou non) Les journaux en ligne Date et heure de cration de la base Le nom de la base Le mode d'archivage actuel Les numros de squence (de chaque journal) Informations sur RMAN Information Flashback (10g) Informations sur les blocs corrompus L'ID de la base

On peut utiliser un seul fichier de contrle mais Oracle en prconise au minimum deux sur des disques diffrents. Perdre tous les fichiers de contrle rend difficile la restauration de la base.

La taille du fichier de contrle dpend en principe de la valeur des paramtres MAXDATAFILES, MAXLOGFILES, MAXLOGMEMBERS, MAXLOGHISTORY, et MAXINSTANCES dfinis pendant la cration de la base.

2. Multiplexage des fichiers de contrle


Pour afficher les noms des fichiers de contrle on utilise : SHOW PARAMETER CONTROL_FILES ou SELECT VALUE FROM V$PARAMETER WHERE NAME='control_files';

2.1. Multiplexage des fichiers de contrle en utilisant le pfile


Pour multiplexer les fichiers de contrle, il suffit de copier un des fichiers dans un autre emplacement et de l'indiquer dans le paramtre CONTROL_FILES du fichier d'initialisation initSID.ora Supposons qu'on a deux fichiers de contrle /disk1/ora data/ctrlBASE01.ctl et /disk2/oradata/ctrlBASE02.ctl et qu'on veut ajouter un troisime fichier /disk3/oradata/ctrlBASE03.ctl

Visualiser les fichiers de contrle existants SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';

Arrter la base SHUTDOWN IMMEDIATE

Modifier le paramtre CONTROL_FILES dans le fichier initSID.ora CONTROL_FILES = ('/disk1/oradata/BASE/ctrlBASE01.ctl','/disk2/oradata/ BASE /ctrlBASE2.ctl', '/disk3/oradata/ BASE /ctrlBASE03.ctl')

Copier le fichier de contrle en utilisant les commandes OS

Sous Unix cp /disk1/oradata/BASE/ctrlBASE01.ctl /disk3/oradata/BASE/ctrlBASE03.ctl y Dmarrer la base STARTUP

Oracle met jours les fichiers de contrle en mme temps, mais seul le premier fichier cit dans le paramtre CONTROL_FILES est consult. En oracle9i vous pouvez multiplexer jusqu' 8 copies de fichiers de contrle.

2.2. Multiplexage des fichiers de contrle en utilisant le spfile


y 1. Ajouter le nouveau fichier de contrle /disk3/oradata/BASE/ctrlBASE03.ctl dans le paramtre CONTROL_FILES en utilisant ALTER SYSTEM SET CONTROL_FILES = ('/disk1/oradata/BASE/ctrlBASE01.ctl','/disk2/oradata/ BASE /ctrlBASE2.ctl', '/disk3/oradata/ BASE /ctrlBASE03.ctl') SCOPE=SPFILE; y 2. Arrter la base SHUTDOWN IMMEDIATE y 3. Copier le fichier de contrle en utilisant les commandes OS.

Sous unix cp /disk1/oradata/BASE/ctrlBASE01.ctl /disk3/oradata/BASE/ctrlBASE03.ctl y 4. Dmarrer la base STARTUP

3. Sauvegarde du fichier de contrle


Il y a deux faons de sauvegarder le fichier de contrle : ALTER DATABASE BACKUP CONTROLFILE TO nom_du_fichier Cette commande sauvegarde le fichier de contrle en un fichier binaire. L'autre faon est : ALTER DATABASE BACKUP CONTROLFILE TO TRACE; Cette commande cre un fichier en format texte dans le rpertoire USER_DUMP_DEST, qu'on peut modifier pour reconstruire un nouveau fichier de contrle. Oracle recommande de sauvegarder le fichier de contrle chaque modification de la structure de la base comme le fait d'ajouter, renommer ou supprimer un fichier de donnes ou un fichier journal.

4. Informations sur les fichiers de contrle


Les vues suivantes affichent des informations sur les fichiers de contrle :

y y y y

V$DATABASE V$CONTROLFILE V$CONTROLFILE_RECORD_SECTION V$PARAMETER

4.1. La vue V$CONTROLFILE


La vue V$CONTROLFILE affiche tous les noms des fichiers de contrle et leur statut qui peut tre NULL ou INVALID. SELECT * FROM V$CONTROLFILE ; STATUS NAME ------ -------------------- -----------------/ora01/oradata/MYDB/ctrlMYDB01.ctl /ora02/oradata/MYDB/ctrlMYDB02.ctl /ora03/oradata/MYDB/ctrlMYDB03.ctl 3 rows selected. On peut visualiser ces informations avec la commande show parameter control_files NAME TYPE VALUE ------------------------ -----------------------------control_files string H:\Oracle9i\oradata\or90\CONTROL01.CTL, H:\Oracle9i\oradata\or90\CONTROL02.CTL, H:\Oracle9i\oradata\or90\CONTROL03.CTL

4.2. La vue V$CONTROLFILE_RECORD_SECTION


La vue V$CONTROLFILE_RECORD_SECTION contient plusieurs informations sur le fichier de contrle. select * from v$controlfile_record_section; TYPE RECORD RECORDS RECORDS FIRST LAST LAST SIZE TOTAL USED INDEX INDEX RECID DATABASE 0 0 CKPT PROGRESS 0 0 REDO THREAD 0 0 REDO LOG 0 9 DATAFILE 192 8180 104 72 180 1 11 8 16 100 1 0 1 3 5 0 0 0 0 0

0 18 FILENAME 0 0 TABLESPACE 0 2 TEMPORARY FILENAME 0 1 RMAN CONFIGURATION 0 0 LOG HISTORY 29 29 OFFLINE RANGE 0 0 ARCHIVED LOG 0 0 BACKUP SET 0 0 BACKUP PIECE 0 0 BACKUP DATAFILE 0 0 BACKUP REDOLOG 0 0 DATAFILE C OPY 1 1 BACKUP CORRUPTION 0 0 COPY CORRUPTION 0 0 DELETED OBJECT 1 1 PROXY COPY 0 0 BACKUP SPFILE 0 0 DATABASE INCARNATION 4 4 FLASHBACK LOG 0 0 RECOVERY DESTINATION 0 0 INSTANCE SPACE RESERVATION 0 0 REMOVABLE RECOVERY FILES 0 0 RMAN STATUS 0 0 THREAD INSTANCE NAME MAPPING 0 0 MTTR 0 0 DATAFILE HISTORY 0 0 31 rows selected On'a

524 68 56 1108 36 56 584 40 736 116 76 660 44 40 20 852 36 56 84 180 28 32 116 80 100 568

149 100 100 50 454 292 28 409 200 282 215 223 371 409 818 249 454 292 2048 1 63 1000 141 8 8 57

9 6 1 0 29 0 0 0 0 0 0 1 0 0 1 0 0 4 0 1 1 0 0 8 1 0

0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0

y y

TYPE : Type de la section RECORD_SIZE : Taille d'une entre en bits

y y y y y

RECORDS_TOTAL : Nombre d'entres alloues pour la section (qu'elles soient occupes ou non) RECORDS_USED : Nombres d'entres utilises dans la section FIRST_INDEX : Index de la premire entre LAST_INDEX : Index de la dernire entre LAST_RECID : Id de la dernire entre

C'est dans cette vue qu'on trouve les valeurs de MAXLOGFILES, MAXDATAFILES, MAXINSTANCES, MAXINSTANCES et MAXLOGHISTORY Type RECORDS_TOTAL REDO LOG 16 MAXLOGFILES DATAFILE 100 MAXDATAFILES REDO THREAD 8 MAXINSTANCES LOG HISTORY 454 MAXLOGHISTORY Pour afficher la valeur de MAXLOGMEMBERS on utilise la vue X$KCCDI : select dimlm from x$kccdi; Il existe des vues qui lisent directement dans le fichier de contrle au lieu de lire dans le dictionnaire de donnes 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 vrifier les accs au fichier de contrle de ces vues par : Select sid, event, total_waits from v$session_event where event='control file sequential read';

5. Cration d'un fichier de contrle


Il est ncessaire de crer les fichiers de contrle:

y y y y

Si tous les fichiers de contrle sont perdus ou corrompus En cas de changement du nom de la base En cas de modification de certains paramtres en dur comme MAXDATAFILES, MAXLOGFILES, MAXLOGHISTROY, ... Si vous voulez dplacer la base sur une autre machine et que l'emplacement des fichiers de donnes et des fichiers journaux est diffrent des emplacements originaux.

Le fichier de contrle initial est cr pendant la cration de la base. Son nom est spcifi dans le paramtre d'initialisation CONTROL_FILES et voici un exemple : CONTROL_FILES = (/u01/oracle/mabase/control01.ctl, /u02/oracle/mabase/control02.ctl, /u03/oracle/mabase/control03.ctl) Si vous utilisez OMF vous n'avez pas besoin de spcifier le fichier de contrle dans le fichier d'initialisation. Oracle prend en compte l'emplacement du fichier de contrle suivant ces paramtres dans l'ordre : DB_CREATE_ONLINE_LOG_DEST_n, DB_CREATE_FILE_DEST et DB_RECOVERY_FILE_DEST Mme si le paramtre CONTROL_FILES n'est pas spcifi dans le fichier d'initialisation, oracle le cre automatiquement dans le rpertoire par dfaut de l' OS. Le fichier cre n'est pas un OMF.

Il faut avoir le privilge sysdba pour crer un fichier de contrle. Si le paramtre REMOTE_LOGIN_PASSWORDFILE =EXCLUSIVE, oracle signale une erreur. Il faut donc affecter ce paramtre la valeur SHARED ou crer un nouveau fichier de mot de passe. Si le fichier de contrle existe dj, il faut utiliser CONTROLFILE REUSE au lieu de CONTROLFILE SET dans la clause CREATE DATABASE, et si la taille de l'ancien fichier est diffrente du nouveau on ne peut pas utiliser l'option REUSE. On peut crer un nouveau fichier de contrle en utilisant CREATE CONTROLFILE et voici un exemple : CREATE CONTROLFILE SET DATABASE mabase LOGFILE GROUP 1 ('/u01/oracle/mabase/redo01_01. log', '/u01/oracle/mabase/redo01_02. log'), GROUP 2 ('/u01/oracle/mabase/redo02_01. log', '/u01/oracle/mabase/redo02_02. log'), GROUP 3 ('/u01/oracle/mabase/redo03_01. log', '/u01/oracle/mabase/redo03_02. log') NORESETLOGS DATAFILE '/u01/oracle/mabase/system01.dbf' SIZE 3M, '/u01/oracle/mabase/rbs01.d bs' SIZE 5M, '/u01/oracle/mabase/users01.dbs' SIZE 5M, '/u01/oracle/mabase/temp01.dbs' SIZE 5M MAXLOGFILES 50 MAXLOGMEMBERS 3 MAXLOGHISTORY 400 MAXDATAFILES 200 MAXINSTANCES 6 ARCHIVELOG ; Il faut faire trs attention pendant la cration du fichier de contrle car il peut endommager les fichiers de donnes et les fichiers journaux. Et le fait d'oublier de mentionner un fichier de donnes pendant la cration du fichier de contrle peut causer la perte de ce fichier et mme la perte de la base entire. Il faut encore faire attention si vous utilisez le mode FORCE LOGGING. Les tapes suivre pour crer un nouveau fichier de contrle :

Lister tous les fichiers de donnes et de journaux en ligne

Soit en utilisant le fichier trace lanc par la commande : ALTER DATABASE BACKUP CONTROLFILE TO TRACE; Sinon vous pouvez utiliser les vues suivantes : SELECT MEMBER FROM V$LOGFILE; SELECT NAME FROM V$DATAFILE; SELECT VALUE FROM V$PARAMETER WHERE NAME = 'CONTROL_FILES'; Si vous n'avez pas ces informations vous ne pouvez pas ouvrir la base.

Arrter la base SHUTDOWN IMMEDIATE

y y

Sauvegarder tous vos fichiers de donnes et journaux Dmarrer la base en mode nomount

STARTUP NOMOUNT y Crer le nouveau fichier de contrle en utilisant CREATE CONTROLFILE

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 NO RESETLOGS, oracle compare le numro de groupe spcifi dans CREATE CONTROLFILE et l'entte du fichier journal. Si la comparaison choue on aura le message suivant : 01224, 00000, "group number in header %s does not match GROUP %s" // *Cause: Group number specified at CREATE CONTROLFILE does not match the // group number stored in the header. Most likely the specification // is wrong. // *Action: Omit the GROUP option or give the correct one. Ce qui veut dire que le fichier journal :

1. Appartient une autre instance ou 2. Le numro de groupe est erron dans CREATE CONTROLFILE ou 3. Est une copie ancienne y y Sauvegarder le nouveau fichier de contrle Modifier le fichier d'initialisation pour indiquer les nouveaux fichiers de contrle et si vous renommez la base n'oubliez pas de le mentionner dans le paramtre DB_NAME. Si la restauration de la base n'tait pas ncessaire vous pouvez ouvrir la base avec ALTER DATABASE OPEN;

Si le nouveau fichier de contrle est cr avec l'option NORESETLOGS vous pouvez restaurer la base compltement, et s'il est cre avec l'option RESETLOGS vous devez utiliser USING BACKUP CONTROL FILE et ouvrir la base avec ALTER DATA BASE OPEN RESETLOGS;

6. Dplacement d'un fichier de contrle


Supposons qu'on'a trois fichiers de contrle : u01/oracle/mabase/control01.ctl, u02/oracle/mabase/control02.ctl, u03/oracle/mabase/control03.ctl et on veut dplacer le fichier control03.ctl dans u04/oracle/mabase/control03.ctl.

1. Arrter la base normalement SHUTDOWN IMMEDIATE y Dplacer les fichiers de contrle mv u03/oracle/mabase/control03.ctl u04/oracle/mabase/control03.ctl

Modifier le paramtre CONTROL_FILES dans le fichier initSID.ora si vous utilisez le pfile control_files = (u01/oracle/mabase/control01.ctl, u02/oracle/mabase/control02.ctl,u04/oracle/mabase/control03.ctl )

Dmarrer la base STARTUP

7. Suppression d'un fichier de contrle


Supposons qu'on'a trois fichiers de contrle : u01/oracle/mabase/control01.ctl, u02/oracle/mabase/control02.ctl, u03/oracle/mabase/control03.ctl et on veut supprimer control03.ctl.

Arrter la base normalement SHUTDOWN IMMEDIATE

Modifier le paramtre CONTROL_FILES dans le fichier initSID.ora si vous utilisez le pfile control_files = (u01/oracle/mabase/control01.ctl, u02/oracle/mabase/control02.ctl)

N'oubliez pas de supprimer le fichier de contrle avec votre systme d'exploitation rm u01/oracle/mabase/control03.ctl

Dmarrer la base STARTUP

8. Restauration d'un fichier de contrle corrompu partir d'un autre fichier valide
Supposons qu'on'a trois fichiers de contrle : u01/oracle/mabase/control01.ctl, u02/oracle/mabase/control02.ctl, u03/oracle/mabase/control03.ctl et que le fichier control03.ctl est corrompu.

Arrter la base normalement SHUTDOWN IMMEDIATE

Copier le fichier de contrle valide en crasant le fichier corrompu

cp u01/oracle/mabase/control01.ctl y Dmarrer la base STARTUP

u03/oracle/mabase/control03.ctl