DBNEWID - это утилита для работы с базами данных, позволяющая изменить внутренний идентификатор базы данных (DBID) и имя базы данных (DBNAME). Можно изменить только DBID, DBNAME, а можно изменить и DBID, и DBNAME.
До появления утилиты DBNEWID это действие выполнялось путем пересоздания управляющего файла (controlfile). Однако это не позволяло изменить уникальный идентификатор (DBID), в результате чего исходная база данных и скопированная вручную не могли быть зарегистрированы в репозитории RMAN. Эта проблема была решена с помощью утилиты DBNEWID.
Для проведения этого теста мы изменим имя таблицы, которую восстановили на том же хосте, в этой статье:
https://oracleconraul.com/index.php/2023/09/13/recuperar-base-de-datos-mismo-host-con-rman/
Прежде всего, перед переименованием базы данных, ее DBID или того и другого я советую сделать резервную копию базы данных.
Следует отметить, что изменение имени, и особенно DBID, является сложной и серьезной процедурой, поскольку, помимо всего прочего, в результате этого изменения происходит следующее:
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.
Шаги:
1- Загружаем переменные окружения базы данных для переименования/dbid.
2- Остановите базу данных (shutdown immediate ) и смонтируйте базу данных (startup mount).
3 - Выполнить команду DBNEWID
$ nid TARGET=SYS/<password>@<service> DBNAME=<NEW DB name> (tnsnames)
or
nid TARGET=SYS/<password> DBNAME=<NEW DB name>
4- Cambiamos el nombre de la nueva base de datos en el spfile.
5- Recreamos el fichero de password de la nueva base de datos.
Выполнение команд:
[oracle~]$ sqlplus / as sysdba
SQL*Plus: версия 19.0.0.0.0 – Производственная среда, среда, 20 сентября 2023 г., 12:00:13
Версия 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. Все права защищены.
Подключено к:
Oracle 19c Enterprise Edition Релиз 19.0.0.0.0 – Производственная среда
Версия 19.3.0.0.0
SQL> show parameter uniq
ИМЯ ТИП ЗНАЧЕНИЕ
db_unique_name строка testcopy
SQL>shutdown immediate;
База данных закрыта.
База данных отмонтирована.
ORACLE завершен.
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.
На этом этапе необходимо изменить DBNAME в spfile, иначе база данных не запустится из-за того, что у нее новое имя.
SQL> alter system set db_name=NEWDB scope=spfile;
Recreamos el fichero de password, de la nueva base de datos:
cd $ORACLE_HOME/dbs
orapwd file=orapwnewdb password=password entries=10
Мы открываем базу данных с помощью open resetlogs.
SQL> alter database open resetlogs;
Мы проверяем правильность выполнения именования:
SQL> select name from v$database;
NAME
*******
NEWDB
Как уже говорилось ранее в этом документе, на данном этапе настоятельно рекомендуется создать резервную копию базы данных, поскольку восстановить ее из предыдущих резервных копий будет невозможно.





