29/07/2026

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

Как уже говорилось ранее в этом документе, на данном этапе настоятельно рекомендуется создать резервную копию базы данных, поскольку восстановить ее из предыдущих резервных копий будет невозможно.

Оставить ответ

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *.

YouTube
LinkedIn