Beruflich Dokumente
Kultur Dokumente
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
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.
Visualiser les fichiers de contrle existants SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
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')
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.
y y y y
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
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';
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 :
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.
y y
Sauvegarder tous vos fichiers de donnes et journaux Dmarrer la base en mode nomount
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;
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 )
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
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.
u03/oracle/mabase/control03.ctl