Cette manipulation peut être nécessaire dans le cas notamment de l'utilisation d'un catalogue RMAN si la même base de données, même DB_NAME, doit être enregistrée plusieurs fois. ce cas se présente quand la base est clonée ou dupliquée sur des serveurs différents.

Oracle propose l'utilitaire DBNEWID qui permet cette manipulation. L'utilitaire permet aussi de changer le DB_NAME. En ligne de commande cet utilitaire s'appele par la commande nid.

Pour chacune de ces manipulations la base doit être stoppée et redémarrée en mode mount. L'ouverture doit ensuite se faire avec l'option resetlogs. Il est important de faire immédiatement une sauvegarde suite à cette modification, car tous les fichiers de redologs et archivelogs ne peuvent plus être utilisés.

Changer le DBID

export ORACLE_SID=RED
sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> exit;
nid target=/

Répondre Yes à la question, une fois la modification faite redemarrer la base en mode mount et l'ouvrir avec l'option resetlogs.

sqlplus /nolog
SQL> connect / as sysdba
SQL> startup mount;
SQL> alter database open resetlogs;
SQL> exit;

Changer le DB_NAME

export ORACLE_SID=RED
sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> exit;
nid target=/ db_name=YELLOW setname=yes

Répondre Yes à la question, une fois la modification faite redemarrer la base en mode mount et l'ouvrir avec l'option resetlogs.

Attention dans le cas d'utilisation d'un fichier de paramêtres texte (pfile) il faut modifier celui-ci en corrigeant le paramêtre DB_NAME. Cette manipulation est inutile avec un spfile. Par contre il faut recréer le fichier de mot de passe situé sous $ORACLE_HOME/dbs avec l'utilitaire orapwd.

cd $ORACLE_HOME/dbs
orapwd file=orapwYELLOW password=manager10
sqlplus /nolog
SQL> connect / as sysdba
SQL> startup mount;
SQL> alter database open resetlogs;
SQL> exit;

Changer le DBID et le DB_NAME

export ORACLE_SID=RED
sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup mount;
SQL> exit;
nid target=/ db_name=YELLOW

Répondre Yes à la question, une fois la modification faite redemarrer la base en mode mount et l'ouvrir avec l'option resetlogs.

Attention dans le cas d'utilisation d'un fichier de paramêtres texte (pfile) il faut modifier celui-ci en corrigeant le paramêtre DB_NAME. Cette manipulation est inutile avec un spfile. Par contre il faut recréer le fichier de mot de passe situé sous $ORACLE_HOME/dbs avec l'utilitaire orapwd.

cd $ORACLE_HOME/dbs
orapwd file=orapwYELLOW password=manager10
sqlplus /nolog
SQL> connect / as sysdba
SQL> startup mount;
SQL> alter database open resetlogs;
SQL> exit;

Article de référence, documentation Oracle