Renombrar una BBDD Oracle usando el comando NID

Hola a todos, hoy vamos a compartir la forma que existe en Oracle para renombrar una BBDD. Para realizar esta acción se utiliza una aplicación de linea de comandos que se encuentra en los binarios de instalación, que es el comando NID.

Renombrar una BBDD Oracle

El comando NID realiza el cambio de la cabecera de los datafiles, controlfiles, etc. y el parámetro db_name, aunque manualmente hay que generar el fichero init.ora, cambiar las rutas de los ficheros, y volver a recrear el spfile si se utiliza en la BBDD.

Pasos para renombrar una BBDD Oracle cambiando el SID

1. Parar la instancia de forma ordenada

No es necesario realizar una parada con la opción ABORT para renombrar una BBDD Oracle, pero si es recomendable hacer un checkpoint y los switch logfile necesarios para que quede limpia la BBDD antes de realizar el proceso.

[oracle@server1 admin] echo $ORACLE_SID
oldsid
[oracle@server1 admin]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 10 13:37:36 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.

SQL> alter system checkpoint;
System altered.

SQL> alter system switch logfile;
System altered.

SQL> alter system switch logfile
System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

2. Montar la BBDD

El proceso de renombrado se hace con la BBDD en modo MOUNT.

SQL> startup mount;
ORACLE instance started.

Total System Global Area 1152450560 bytes
Fixed Size 2252584 bytes
Variable Size 352321752 bytes
Database Buffers 788529152 bytes
Redo Buffers 9347072 bytes
Database mounted.

3. Crear el fichero de parámetros PFILE

Se puede utilizar el SPFILE de la BBDD actual para generar el fichero de parámetros, cambiando el valor del parámetro db_name con el nuevo nombre que tendrá la BBDD después del cambio.

SQL> create pfile='/tmp/init_nuevo.ora' from spfile; 
$ cp /tmp/init_nuevo.ora $ORACLE_HOME/dbs/initnewsid.ora
db_name=newsid

4. Ejecutar el comando NID

El comando NID es una aplicación que se encuentra en el directorio de instalación del software de Oracle, que viene dado por la variable de entorno ORACLE_HOME, y en la carpeta BIN.

[oracle@server1 admin]$ export ORACLE_SID=oldsid
[oracle@server1 admin]$ nid target=/ dbname=newsid

DBNEWID: Release 11.2.0.4.0 - Production on Mon Feb 10 13:40:47 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to database OLDSID (DBID=2695375495)
Connected to server version 11.2.0

Control Files in database:
+REDO1/oldsid/controlfile/current.256.838662091
+REDO2/oldsid/controlfile/current.256.838662091

Change database ID and database name OLDSID to NEWSID? (Y/[N]) => Y

Proceeding with operation
Changing database ID from 2695375495 to 4057109727
Changing database name from OLDSID to NEWSID
Control File +REDO1/oldsid/controlfile/current.256.838662091 - modified
Control File +REDO2/oldsid/controlfile/current.256.838662091 - modified
Datafile +DATA/oldsid/datafile/system.259.83866210 - dbid changed, wrote new name
Datafile +DATA/oldsid/datafile/sysaux.258.83866210 - dbid changed, wrote new name
Datafile +DATA/oldsid/datafile/undotbs1.257.83866210 - dbid changed, wrote new name
Datafile +DATA/oldsid/datafile/users.260.83866211 - dbid changed, wrote new name
Datafile +DATA/oldsid/datafile/app1tab.267.83873288 - dbid changed, wrote new name
Datafile +DATA/oldsid/datafile/app2.266.83873290 - dbid changed, wrote new name
Datafile +DATA/oldsid/tempfile/temp.256.83866210 - dbid changed, wrote new name
Control File +REDO1/oldsid/controlfile/current.256.838662091 - dbid changed, wrote new name
Control File +REDO2/oldsid/controlfile/current.256.838662091 - dbid changed, wrote new name
Instance shut down

Database name changed to NEWSID.
Modify parameter file and generate a new password file before restarting.
Database ID for database NEWSID changed to 4057109727.
All previous backups and archived redo logs for this database are unusable.
Database is not aware of previous backups and archived logs in Recovery Area.
Database has been shutdown, open database with RESETLOGS option.
Succesfully changed database name and ID.
DBNEWID - Completed succesfully.

5. Abrir la BBDD con el nuevo nombre

Una vez hecho el cambio de nombre, hay que abrir la BBDD con la opción RESETLOGS. Una vez abierta la BBDD se puede volver a generar el SPFILE con el fichero init.ora creado anteriormente.

[oracle@server1 ~]$ export ORACLE_SID=newsid
[oracle@server1 ~]$ sqlplus / as sysdba
SQL> startup mount
SQL> ALTER DATABASE OPEN RESETLOGS;
Database opened.
SQL> select name from v$database;

NAME
---------
NEWSID

Se puede crear el spfile con la siguiente instrucción:

SQL> CREATE SPFILE='+DATA' from pfile;

Se puede consultar la información de esta herramienta en la documentación oficial del fabricante, en el siguiente link:
https://docs.oracle.com/database/121/SUTIL/GUID-FA1E0D47-4907-47F5-877C-2DB109B74430.htm#SUTIL1543

Esperamos que os haya sido de utilidad. Nos vemos en una nueva entrega sobre PostgreSQL.

Un saludo.

Equipo de base de datos

Si no quieres perderte trucos como este y estar al día de este mundo, suscríbete a nuestra newsletter. Te mantendremos informados con un solo email al mes.