блог Oracle на испанском языке

Cambiar el DBID y el nombre de una Base de datos (DB_NAME) con DBNEWID

DBNEWID es una utilidad de base de datos que te permite cambiar el identificador interno de una base de datos (DBID) y el nombre de la base de datos (DBNAME). Puedes cambiar únicamente el DBID, el DBNAME, o puedes cambiar ambos, el DBID y el DBNAME.

Esta acción antes de la aparición de la utilidad DBNEWID, se realizaba recreando el archivo de control (controlfile). Sin embargo no permitía cambiar el identificador único (DBID), con lo que no se podían registrar en el repositorio de RMAN la base de datos original y la base de datos copiada manualmente. Este problema se ha resuelto con la utilidad 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 – Ejecutamos el comando DBNEWID

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

4- Изменяем имя новой базы данных в spfile.
5- Воссоздаем файл паролей новой базы данных.

Выполнение команды:

[oracle@localhost ~]$ 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 Database 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@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;

Воссоздание файла паролей для новой базы данных:

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

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

Теги:
Следующая статья
Oracle ACE