18/02/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 log и сбрасывает последовательность, поэтому после изменения 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: Release 19.0.0.0.0 – Production on Wed Sep 20 12:00:13 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. Все права защищены.
Подключено к:
Oracle 19c Enterprise Edition Release 19.0.0.0.0 – Production
Версия 19.3.0.0.0

SQL> show parameter uniq
NAME TYPE VALUE

db_unique_name string 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 – 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.
Все предыдущие резервные копии и заархивированные журналы повторения для этой базы данных непригодны для использования.
База данных была закрыта, откройте базу данных с опцией 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