Introduction
Lorsqu’une instance Oracle 9i est indisponible avec l’erreur Oracle
ORA-01113
apparaissant dans le fichier de log de l’instance :
ORA-01113: file n needs media recovery
ORA-01110: data file n: '<full file name>'
Exemple :
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oem/oracle/OEMD1ORA/system_01.dbf'
avant d’envisager une restauration à partir d’une sauvegarde saine, ou de
tenter de lancer la commande recover datafile
, il suffit parfois de vérifier
tout simplement si l’instance s’est arrêtée violemment durant une sauvegarde à
chaud et de lancer ensuite les commandes ALTER DATABASE END BACKUP
et ALTER
DATABASE OPEN
.
Arrêt propre d’une instance (shutdown immediate) pendant une sauvegarde à chaud
Lorsqu’une instance est arrêtée "proprement" avec la commande shutdown
immediate
ou shutdown
alors qu’une sauvegarde à chaud est en cours, l’arrêt de
l’instance Oracle est interdit avec le message ORA-01149
car les fichiers ont
le statut ACTIVE
:
shutdown immediate;
ORA-01149: cannot shutdown - file 1 has online backup set ORA-01110: data file 1: '/oem/oracle/OEMD1ORA/system_01.dbf'
select * from v$backup;
FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- -------- 1 ACTIVE 49020615 04/08/09 2 ACTIVE 49020619 04/08/09 3 ACTIVE 49020623 04/08/09 4 ACTIVE 49020627 04/08/09
Arrêt violent d’une instance (shutdown abort) pendant une sauvegarde à chaud
Cas pratique : shutdown abort sur une instance en cours de sauvegarde à chaud
En revanche lorsque l’instance Oracle est arrêtée violemment avec la
commande shutdown abort
ou bien avec un redémarrage de la machine (init 6
de
Solaris…), rien ne peut empêcher l’arrêt de l’instance et les fichiers de
données garderont partiellement ou totalement le statut ACTIVE
dans V$BACKUP
lors du redémarrage.
Au redémarrage de l’instance, l’erreur ORA-01113
est alors remontée dans le
fichier de log de l’instance et la base de données est seulement montée et non
ouverte :
startup;
ORACLE instance started. Total System Global Area 168908404 bytes Fixed Size 456308 bytes Variable Size 62914560 bytes Database Buffers 104857600 bytes Redo Buffers 679936 bytes Database mounted. ORA-01113: file 1 needs media recovery ORA-01110: data file 1: '/oem/oracle/OEMD1ORA/system_01.dbf'
Lorsque l’erreur ORA-01113
est rencontrée et que les sauvegardes sont
réalisées à chaud, il faut tout d’abord vérifier que l’instance Oracle n’a pas
été arrêtée violemment avec la commande shutdown abort
ou bien avec un
redémarrage de la machine avant d’envisager la remontée d’une sauvegarde
saine.
Voici un exemple dans le fichier de log d’une instance d’un arrêt violent de
l’instance avec la commande shutdown abort
alors que la sauvegarde à chaud est
en cours :
Tue Aug 4 14:29:22 2009
alter tablespace OEM_REPOSITORY begin backup
Completed: alter tablespace OEM_REPOSITORY begin backup
Tue Aug 4 14:29:24 2009
Shutting down instance (abort)
License high water mark = 2
Instance terminated by USER, pid = 15478
ALTER DATABASE END BACKUP (9i R2)
Lorsque ce cas de figure se présente, la commande ALTER DATABASE END BACKUP
permet de corriger très rapidement la situation afin de pouvoir ouvrir la base
de données avec la commande ALTER DATABASE OPEN
.
La commande ALTER DATABASE END BACKUP
est une nouveauté d’Oracle 9i R2
(9.2.x), elle permet de quitter très facilement le mode backup de manière
globale pour tous les fichiers de données (mise au statut INACTIVE
dans
V$BACKUP
des fichiers de données) :
alter database end backup;
Pour les versions antérieures à Oracle 9iR2, malheureusement il faut encore
lancer la commande end backup
pour chaque tablespace.
alter tablespace <tblspacename> end backup;
SHELL > cat alert<INSTANCE>.log
Tue Aug 4 14:34:02 2009 alter database end backup Tue Aug 4 14:34:02 2009 Completed: alter database end backup
La base de données peut alors être ouverte avec la commande ALTER DATABASE
OPEN
alter database open;
Attention, si les fichiers du tablespace temporaire de l’instance Oracle sont en RAM et qu’il s’agit d’un redémarrage de la machine,
il faut recréer ces fichiers après la commande ALTER DATABASE OPEN
(cf : Mise en RAM du tablespacetemporaire d’une instance Oracle ).