Cambiar el DBID y el nombre de una Base de datos (DB_NAME) con DBNEWID
DBNEWID Il s'agit d'un utilitaire de base de données qui vous permet de modifier l'identifiant interne d'une base de données (DBID) et le nom de la base de données (DBNAME). Vous pouvez modifier uniquement le DBID, le DBNAME, ou les deux à la fois, le DBID et le DBNAME.
Avant l'apparition de l'utilitaire DBNEWID, cette opération s'effectuait en recréant le fichier de contrôle (controlfile). Cependant, cela ne permettait pas de modifier l'identifiant unique (DBID), ce qui empêchait d'enregistrer la base de données d'origine et la base de données copiée manuellement dans le référentiel RMAN. Ce problème a été résolu grâce à l'utilitaire DBNEWID.
Pour effectuer ce test, renommons la table que nous restaurons sur le même hôte, dans cette entrée : https://oracleconraul.com/index.php/2023/09/13/recuperar-base-de-datos-mismo-host-con-rman/
Tout d'abord, je vous conseille de faire une sauvegarde de la base de données avant de renommer la base de données, son DBID ou les deux.
Il convient de noter que le changement de nom, et en particulier de DBID, est une procédure complexe et sérieuse, car ce changement entraîne notamment les conséquences suivantes :
Cuando se cambia el DBID de una base de datos, todos los backups y los archive logs de esta base de datos quedan inutilizables, ya que se trata de una base de datos diferente. La base de datos se abre con resetlogs, con lo que se recrean los ficheros de redo logs online y se resetea la secuencia, por tanto, una vez cambiado el DBID, se aconseja cómo primer paso realizar un backup de la base de datos. Si únicamente cambias el DBNAME, no se requiere abrir la base de datos con la opción RESETLOGS, por lo que las copias de seguridad y archivados no se invalidan. En este caso, deberás cambiar el DB_NAME en el fichero .init, haciendo referencia la nuevo nombre, y muy posiblemente recrear el fichero de password, esto puede influir en una restauración de una copia de seguridad anterior al cambio de nombre.
Si cambias el DBID de una base de datos primaria, en un entorno de data guard, la base de datos de STANDBY debe de recrearse.
En entornos RAC, antes de lanzar el comando, debes hacer un shutdown de todas las instancias, y hacer un startup de una sola instancia con el parámetro CLUSTER_DATABASE=FALSE.
Les étapes :
1- Nous chargeons les variables d'environnement de la base de données à renommer/débiter.
2- Arrêter la base de données (shutdown immediate ), et monter la base de données (startup mount).
3 – Nous exécutons la commande DBNEWID
$ nid TARGET=SYS/<password>@<service> DBNAME=<NEW DB name> (tnsnames)
or
nid TARGET=SYS/<password> DBNAME=<NEW DB name>
4- Nous changeons le nom de la nouvelle base de données dans le fichier spfile.
5- Nous recréons le fichier des mots de passe de la nouvelle base de données.
Exécution de la commande :
[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus : Version 19.0.0.0.0 – Production le mercredi 20 septembre à 12 h 00 min 13 s 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. Tous droits réservés.
Connecté à :
Base de données Oracle 19c Enterprise Edition Version 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> show parameter uniq
NOM TYPE VALEUR
db_unique_name chaîne de caractères testcopy
SQL> shutdown immediate;
Base de données fermée.
Base de données démontée.
Instance ORACLE arrêtée.
SQL>
SQL> startup mount
[oracle@localhost ~]$ nid TARGET=sys/password DBNAME=newdb
Connecté au serveur version 19.3.0
Fichiers de contrôle dans la base de données :
/data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl
Modifier l'ID et le nom de la base de données TEST en NEWDB ? (O/[N]) => O
Poursuite de l'opération
Modification de l'ID de la base de données de 2359187194 à 3388414278
Modification du nom de la base de données de TEST à NEWDB
Fichier de contrôle /data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl – modifié
Fichier de données /data/tescopy/TESCOPY/data_D-TEST_TS-SYSTEM_FNO- – dbid modifié, nouveau nom enregistré
Fichier de données /data/tescopy/TESCOPY/data_D-TEST_TS-SYSAUX_FNO- – dbid modifié, nouveau nom enregistré
Fichier de données /data/tescopy/TESCOPY/data_D-TEST_TS-UNDOTBS1_FNO- – dbid modifié, nouveau nom enregistré :
Fichier de données /data/tescopy/TESCOPY/data_D-TEST_TS-USERS_FNO- – dbid modifié, nouveau nom enregistré :
Fichier de données /data/test/TEST/fichier de données/o1_mf_temp_hz8q6jog_.tm – dbid modifié, nouveau nom enregistré
Fichier de contrôle /data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl – dbid modifié, nouveau nom enregistré
Arrêt de l’instance
Nom de la base de données changé en NEWDB.
Modifiez le fichier de paramètres et générez un nouveau fichier de mots de passe avant de redémarrer.
L'ID de la base de données NEWDB a été modifié et est désormais 3388414278.
Toutes les sauvegardes précédentes et tous les journaux de reprise archivés pour cette base de données sont inutilisables.
La base de données a été arrêtée ; ouvrez-la avec l'option RESETLOGS.
Le nom et l'ID de la base de données ont été modifiés avec succès.
DBNEWID – Opération terminée avec succès.
À ce stade, il est nécessaire de modifier le DBNAME dans le fichier spfile, sinon la base de données ne démarrera pas parce qu'elle a un nouveau nom.
SQL> alter system set db_name=NEWDB scope=spfile;
Recréation du fichier de mots de passe de la nouvelle base de données :
cd $ORACLE_HOME/dbs
orapwd file=orapwnewdb password=password entries=10
À ce stade, nous pouvons ouvrir la base de données avec open resetlogs.
SQL> alter database open resetlogs ;
Nous vérifions que le nommage a été effectué correctement :
SQL> select name from v$database ;
NOM
******* *******
NEWDB
Comme indiqué précédemment dans ce document, il est fortement recommandé à ce stade de faire une sauvegarde de la base de données, car en cas de problème, il n'est pas possible de restaurer à partir des sauvegardes précédentes.

