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, является сложной и серьезной процедурой, поскольку, помимо всего прочего, в результате этого изменения происходит следующее:
При изменении DBID базы данных все резервные копии и архивные журналы этой базы данных становятся непригодными для использования, поскольку речь идет об другой базе данных. База данных открывается с опцией resetlogs, в результате чего файлы redo-журналов воссоздаются в режиме онлайн, а последовательность сбрасывается; поэтому после изменения DBID в качестве первого шага рекомендуется выполнить резервное копирование базы данных. Если вы изменяете только DBNAME, нет необходимости открывать базу данных с опцией RESETLOGS, поэтому резервные копии и архивные журналы остаются действительными. В этом случае вам необходимо изменить DB_NAME в файле .init, указав новое имя, и, скорее всего, пересоздать файл паролей; это может повлиять на восстановление резервной копии, созданной до смены имени.
Если вы изменяете DBID основной базы данных в среде data guard, базу данных STANDBY необходимо воссоздать.
В средах RAC перед запуском команды необходимо выполнить остановку всех экземпляров и запустить только один экземпляр с параметром 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. Изменяем имя новой базы данных в файле spfile.
5. Создаём файл паролей для новой базы данных заново.
Выполнение команд:
[oracle~]$ sqlplus / as sysdba
SQL*Plus: Версия 19.0.0.0.0 – Производственная версия, среда, 20 сентября, 12:00:13 2023 г.
Версия 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. Все права защищены.
Подключено к:
Oracle 19c 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~]$nid TARGET=sys/password DBNAME=newdb
Подключено к серверу версии 19.3.0
Контрольные файлы в базе данных:
/data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl
Изменить ID базы данных и имя базы данных TEST на NEWDB? (Y/[N]) => Y
Продолжение операции
Изменение идентификатора базы данных с 2359187194 на 3388414278
Изменение названия базы данных с TEST на NEWDB
Контрольный файл /data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl – изменено
Файл данных /data/tescopy/TESCOPY/data_D-TEST_TS-SYSTEM_FNO- – dbid изменен, записано новое имя
Файл данных /data/tescopy/TESCOPY/data_D-TEST_TS-SYSAUX_FNO- – dbid изменен, записано новое имя
Файл данных /data/tescopy/TESCOPY/data_D-TEST_TS-UNDOTBS1_FNO- – dbid изменен, записано новое имя
Файл данных /data/tescopy/TESCOPY/data_D-TEST_TS-USERS_FNO- – dbid изменен, записано новое имя
Файл данных /data/test/TEST/datafile/o1_mf_temp_hz8q6jog_.tm – dbid изменен, записано новое имя
Контрольный файл /data/testcopy/TESTCOPY/controlfile/o1_mf_lj1qob64_.ctl – dbid изменен, записано новое имя
Экземпляр остановлен
Имя базы данных изменено на NEWDB.
Перед перезапуском измените файл параметров и сгенерируйте новый файл паролей.
Идентификатор базы данных NEWDB изменен на 3388414278.
Все предыдущие резервные копии и архивированные журналы повторения для этой базы данных стали непригодными для использования.
База данных была остановлена; откройте базу данных с опцией RESETLOGS.
Имя и идентификатор базы данных успешно изменены.
DBNEWID — операция завершена успешно.
На этом этапе необходимо изменить DBNAME в spfile, иначе база данных не запустится из-за того, что у нее новое имя.
SQL> alter system set db_name=NEWDB scope=spfile;
Мы воссоздаем файл паролей в новой базе данных:
cdORACLE
orapwd file=orapwnewdb password=password entries=10
Мы открываем базу данных с помощью open resetlogs.
SQL> alter database open resetlogs;
Мы проверяем правильность выполнения именования:
SQL> select name from v$database;
NAME
*******
NEWDB
Как уже говорилось ранее в этом документе, на данном этапе настоятельно рекомендуется создать резервную копию базы данных, поскольку восстановить ее из предыдущих резервных копий будет невозможно.





