Lors de l’exploitation d’une base de données Oracle dans un environnement de production, certaines erreurs peuvent survenir avec une criticité plus ou moins importante. Nous allons voir dans cet article, la gestion d’une erreur spécifique, mais qui implique plusieurs messages d’erreurs : ORA-00202, ORA-00206 et ORA-00221.
Nous constatons que ces 3 erreurs sont survenues (dans notre cas, bien évidemment) aux même moment. D’après une analyse rapide de ce problème, nous remarquons donc, un problème d’accès à un des fichiers de contrôle de la base de données.
- ORA-00202
Analysons la première erreur survenue : ORA-00202 : Controlfile: ‘/appli/oraXXXX/<SID>/<SID>_ctrlXX.ctl’.
1 2 3 4 |
ORACLE:/home/oracle $ oerr ora 202 00202, 00000, "control file: '%s'" // *Cause: This message reports the name file involved in other messages. // *Action: See associated error messages for a description of the problem. |
Nous remarquons donc, que cette erreur n’apparaît pas seule, mais est liée aux autres (dans notre exemple) : ORA-00206 et ORA-00221. Nous constatons également, que sans fichiers de contrôles, la base de données ne peut pas démarrer (ce qui est logique). L’erreur indique donc, que le fichier de contrôle nécessaire au démarrage est corrompu.
- ORA-00206
Analysons la deuxième erreur survenue : ORA-00206 : Error in writing (block X, # blocks X) of controlfile.
1 2 3 4 5 |
ORACLE:/home/oracle $ oerr ora 206 00206, 00000, "error in writing (block %s, # blocks %s) of control file" // *Cause: A disk I/O failure was detected on writing the control file. // *Action: Check if the disk is online, if it is not, bring it online and try // a warm start again. If it is online, then you need to recover the disk. |
Nous remarquons donc, que cette erreur n’apparaît pas seule, mais est liée aux autres (dans notre exemple) : ORA-00202 et ORA-00221. Nous constatons également, que sans fichiers de contrôles, la base de données ne peut pas démarrer (comme vu précédemment). Toutefois, cette erreur précise d’un fichier de contrôle est corrompu et n’est dont pas intègre. Il peut soit s’agir d’un problème de disque (auquel cas, il faut effectuer un test d’intégrité du disque); soit réparer le fichier de contrôle (se reporter à l’erreur suivante : ORA-00221).
- ORA-00221
Analysons la troisième erreur survenue : ORA-00221 : Error on write to controlfile.
1 2 3 4 |
ORACLE:/home/oracle $ oerr ora 221 00221, 00000, "error on write to control file" // *Cause: An error occurred when writing to one or more of the control files. // *Action: See accompanying messages. |
Nous remarquons donc, que cette erreur n’apparaît pas seule, mais est liée aux autres (dans notre exemple) : ORA-00202 et ORA-00206. Nous constatons également, que sans fichiers de contrôles, la base de données ne peut pas démarrer (comme vu précédemment). Dans le but d’analyser cette erreur, nous allons devoir jeter un œil au fichier d’alerte de la base de données, dans notre cas :
1 2 3 4 5 6 |
Errors in file /home/oracle/admin/<SID>/bdump/ckpt_24238_cad.trc: ORA-00221: error on write to controlfile ORA-00206: error in writing (block 3, # blocks 1) of controlfile ORA-00202: controlfile: '/appli/oractl02/<SID>/<SID>_ctrl02.ctl' ORA-27063: skgfospo: number of bytes read/written is incorrect IBM AIX RISC System/6000 Error: 5: I/O error |
Pour résoudre cette erreur, nous pouvons procéder en plusieurs étapes :
- S’assurer que le fichier corrompu est bien dupliqué. Ce qui est normalement le cas, sur une base de données respectant des contraintes de production.
- Le remplacer par une copie d’un autre fichier de contrôle. Nous rappelons que les fichiers de contrôles sont identiques quels que soit leurs nombres pour chaque base de données, ainsi un copier / coller permet de restaurer celui qui est défaillant.
- Démarrer la base de données
Suite à ces analyses et opérations de récupération, la base de données est de nouveau opérationnelle. Ces erreurs mettent en avant le fait de posséder plusieurs fichiers de contrôles dans des répertoires différents mais également sur des disques différents.