🧩 2️⃣ Si le fichier est perdu (ex. disque ASM endommagé)
Il faut recréer les fichiers de contrôle directement dans le diskgroup ASM.
Étapes :
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
Puis exécute :
ALTER DATABASE CREATE CONTROLFILE REUSE DATABASE « CDB1 »
LOGFILE GROUP 1 (‘+DG_DATA/CDB1/ONLINELOG/group1.log’) SIZE 200M,
GROUP 2 (‘+DG_DATA/CDB1/ONLINELOG/group2.log’) SIZE 200M
DATAFILE ‘+DG_DATA/CDB1/DATAFILE/system01.dbf’,
‘+DG_DATA/CDB1/DATAFILE/sysaux01.dbf’,
‘+DG_DATA/CDB1/DATAFILE/undotbs01.dbf’,
‘+DG_DATA/CDB1/DATAFILE/users01.dbf’
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 8
MAXLOGHISTORY 292
CHARACTER SET AL32UTF8;
👉 Cette commande recrée le fichier de contrôle dans le diskgroup ASM +DG_DATA.
🧩 3️⃣ Vérification après création
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN RESETLOGS;
SELECT name FROM v$controlfile;
Le résultat doit te montrer les chemins ASM :
+DG_DATA/CDB1/CONTROLFILE/current.256.987654321
🧠 Bonnes pratiques
Avoir deux fichiers de contrôle dans deux diskgroups différents si possible :
ALTER SYSTEM SET control_files=’+DG_DATA’,’+DG_FRA’ SCOPE=SPFILE;
Faire un backup du control file après toute recréation :
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘/tmp/controlfile_trace.sql’;
🧩 2️⃣ Si le fichier est perdu (ex. disque ASM endommagé)
Il faut recréer les fichiers de contrôle directement dans le diskgroup ASM.
Étapes :
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
Puis exécute :
ALTER DATABASE CREATE CONTROLFILE REUSE DATABASE « CDB1 »
LOGFILE GROUP 1 (‘+DG_DATA/CDB1/ONLINELOG/group1.log’) SIZE 200M,
GROUP 2 (‘+DG_DATA/CDB1/ONLINELOG/group2.log’) SIZE 200M
DATAFILE ‘+DG_DATA/CDB1/DATAFILE/system01.dbf’,
‘+DG_DATA/CDB1/DATAFILE/sysaux01.dbf’,
‘+DG_DATA/CDB1/DATAFILE/undotbs01.dbf’,
‘+DG_DATA/CDB1/DATAFILE/users01.dbf’
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
MAXINSTANCES 8
MAXLOGHISTORY 292
CHARACTER SET AL32UTF8;
👉 Cette commande recrée le fichier de contrôle dans le diskgroup ASM +DG_DATA.
🧩 3️⃣ Vérification après création
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN RESETLOGS;
SELECT name FROM v$controlfile;
Le résultat doit te montrer les chemins ASM :
+DG_DATA/CDB1/CONTROLFILE/current.256.987654321
🧠 Bonnes pratiques
Avoir deux fichiers de contrôle dans deux diskgroups différents si possible :
ALTER SYSTEM SET control_files=’+DG_DATA’,’+DG_FRA’ SCOPE=SPFILE;
Faire un backup du control file après toute recréation :
ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS ‘/tmp/controlfile_trace.sql’;
Josselin Joly