Cette manipulation est parfois nécessaire, notamment pour cloner une base par copie directe des fichiers ou simplement pour redemarrer une instance si les fichiers de contrôle sont perdus.
Il faut au préalable disposer d'une version texte du fichier de contrôle, qu'il est facile d'obtenir ainsi :
sqlplus /nolog SQL> connect / as sysdba SQL> alter database backup controlfile to trace as '$HOME/svg_ctrl.txt'; SQL>
Editer ce fichier et repérer le bloc commençant ainsi : STARTUP NOMOUNT...et se terminant au ";" juste après CHARACTER SET. Il suffit de copier ce bloc dans un fichier, puis de transformer la seconde ligne ainsi :
CREATE CONTROLFILE REUSE DATABASE "GREEN" NORESETLOGS NOARCHIVELOG en CREATE CONTROLFILE SET DATABASE "GREEN" RESETLOGS NOARCHIVELOG
Ceci peut être facilement scriptable :
sed -n '/^STARTUP/,/^;/p' svg_ctrl.txt | sed 's/REUSE/SET/' | sed 's/NORESETLOGS/RESETLOGS/' > recreate_ctrl_file.sql
Il suffit ensuite de se connecter en sqlplus et sysdba puis d'executer le script obtenu.