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.