18/10/2026

DBNEWID est 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 vous pouvez modifier à la fois le DBID et le DBNAME.

Avant l'apparition de l'utilitaire DBNEWID, cette action était réalisée en recréant le fichier de contrôle (controlfile). Cependant, cela ne permettait pas de modifier l'identifiant unique (DBID), de sorte que la base de données d'origine et la base de données copiée manuellement ne pouvaient pas être enregistrées dans le référentiel RMAN. Ce problème a été résolu grâce à l'utilitaire DBNEWID.

Pour effectuer ce test, nous allons renommer la table que nous avons restaurée 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 :

Lorsque le DBID d'une base de données est modifié, toutes les sauvegardes et tous les fichiers d'archivage de cette base de données deviennent inutilisables, car il s'agit alors d'une base de données différente. La base de données est ouverte avec l'option `resetlogs`, ce qui recrée les fichiers de redo logs en ligne et réinitialise la séquence ; par conséquent, une fois le DBID modifié, il est conseillé, dans un premier temps, d'effectuer une sauvegarde de la base de données. Si vous modifiez uniquement le DBNAME, il n’est pas nécessaire d’ouvrir la base de données avec l’option RESETLOGS ; les sauvegardes et les fichiers d’archivage ne sont donc pas invalidés. Dans ce cas, vous devrez modifier le DB_NAME dans le fichier .init en indiquant le nouveau nom, et très probablement recréer le fichier de mot de passe ; cela peut avoir une incidence sur la restauration d’une sauvegarde antérieure au changement de nom.

Si vous modifiez le DBID d’une base de données principale dans un environnement data guard, la base de données STANDBY doit être recréée.
Dans les environnements RAC, avant d’exécuter la commande, vous devez arrêter toutes les instances, puis démarrer une seule instance avec le paramètre 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 - Exécuter la commande DBNEWID

$ nid TARGET=SYS/<password>@<service> DBNAME=<NEW DB name> (tnsnames)
or
nid TARGET=SYS/<password> DBNAME=<NEW DB name>

4- Nous modifions le nom de la nouvelle base de données dans le fichier spfile.
5- Nous recréons le fichier de mots de passe de la nouvelle base de données.

Exécution des commandes :

[oracle~]$ sqlplus / as sysdba
SQL*Plus: version 19.0.0.0.0 – Production, mercredi 20 septembre 2023 à 12 h 00 min 13 s
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. Tous droits réservés.
Connecté à :
Oracle 19c 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.
ORACLE arrêtée.
SQL>

SQL>startup mount

[oracle@localhost ~]$ nid TARGET=sys/password DBNAME=newdb
Connected to server version 19.3.0
Control Files in database:
/data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl
Change database ID and database name TEST to NEWDB? (Y/[N]) => Y

Proceeding with operation
Changing database ID from 2359187194 to 3388414278
Changing database name from TEST to NEWDB
Control File /data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl – modified
Datafile /data/tescopy/TESCOPY/data_D-TEST_TS-SYSTEM_FNO- – dbid changed, wrote new name
Datafile /data/tescopy/TESCOPY/data_D-TEST_TS-SYSAUX_FNO- – dbid changed, wrote new name
Datafile /data/tescopy/TESCOPY/data_D-TEST_TS-UNDOTBS1_FNO- – dbid changed, wrote new name
Datafile /data/tescopy/TESCOPY/data_D-TEST_TS-USERS_FNO- – dbid changed, wrote new name
Datafile /data/test/TEST/datafile/o1_mf_temp_hz8q6jog_.tm – dbid changed, wrote new name
Control File /data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl – dbid changed, wrote new name
Instance shut down
Database name changed to NEWDB.
Modify parameter file and generate a new password file before restarting.
Database ID for database NEWDB changed to 3388414278.
All previous backups and archived redo logs for this database are unusable.
Database has been shutdown, open database with RESETLOGS option.
Succesfully changed database name and ID.
DBNEWID – Completed succesfully.

À 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;

Nous recréons le fichier de mots de passe de la nouvelle base de données :

cdORACLE
orapwd file=orapwnewdb password=password entries=10

Nous ouvrons 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é de sauvegarder la base de données à ce stade, car il ne sera pas possible de la restaurer à partir des sauvegardes précédentes.

Laisser une réponse

Votre adresse électronique ne sera pas publiée. Les champs obligatoires sont marqués d'un *.

YouTube
LinkedIn