Cambiar DBNAME y/o DBID en 10 pasos | ExpoDBA

Cambiar DBNAME y/o DBID en 10 pasos

Cambiar DBNAME y/o DBID en 10 pasos

Cambiar el nombre de la base de datos, y/o el DBID es necesario cuando hacemos clonaciones, o simplemente cuando creamos mal el nombre de la base.

 

Para poder hacerlo es necesario tener en cuenta los siguientes pasos:

 

1) Primero que nada, hacer una copia del SPFILE para poder cambiar los parametros de la base:

create pfile from spfile;

 

Este comando nos genera el archivo init<OLDDBNAME>.ora el cual debe ser renombrado con el comando

mv init<OLDDBNAME>.ora init<NEWDBNAME>.ora

 

Luego hay que editar el nuevo archivo init<NEWDBNAME>.ora y reemplazar las entradas que haya que hagan referencia al <OLDDBNAME>.

Por ejemplo: db_name, dispatchers

 

2) Levantar la base en estado MOUNT

SHUTDOWN IMMEDIATE; STARTUP MOUNT; EXIT; 

 

3) Con la base levantada en MOUNT procedemos a modificar el nombre de la base.

Desde el SO, ejecutamos el comando:

nid TARGET=sys/pass DBNAME=NEWDBNAME

 

Este comando lo que hace es cambiar tanto el DBID como el DBNAME.

 

Si solamente queremos cambiar el DBNAME hay que agregar un parametro más al comando:

nid TARGET=sys/ats DBNAME=NEWDBNAME SETNAME=YES

 

El parametro SETNAME=YES especifica justamente que no cambie el DBID.

 

Es importante tener en cuenta cuando cambiar el DBID y cuando no.

El DBID lo modificamos cuando hicimos un clon de una base de datos para que estas bases de datos sean diferentes ante un repositorio de RMAN.

Si modificamos el DBID, entonces cambia el ID de la base, y por lo tanto los backups y archivelogs previos al cambio quedan completamente OBSOLETOS. Esto indica que es MANDATORIO realizarun backup FULL de la base post cambio de DBID.

 

4) Recrear el PASSWORD FILE

orapwd file=$ORACLE_HOME/dbs/orapwNEWDBNAME password=pass entries=10

 

5) Cambiar la variable de entorno ORACLE_SID

export ORACLE_SID=NEWDBNAME

 

Esta linea también habría que agregarla en el .bash_profile para que cargue la variable cada vez que se inicie sesión.

 

6) Levantar la base con el nuevo nombre, utilizando el init generado en el paso 1)

 

sqlplus / as sysdba startup mount pfile=$ORACLE_HOME/dbs/initNEWDBNAME.ora 

 

 

7) Abrir la base de datos.

Si al momento de cambiar el DBNAME, cambiamos también el DBID entonces es necesario abrir la base con RESETLOGS.

alter database open resetlogs;

 

Si solo cambiamos el DBNAME, podemos realizar un startup normal.

alter database open;

 

Chequear parametros de nombre

sho parameter name

 

8) Ahora queda generar un SPFILE con los datos del PFILE que levantamos recientemente la base.

create spfile from pfile; 

 

Para que cuando la base levante nuevamente tome este pfile.

 

9)Modificar archivos de configuración

Ahora solo resta modificar todos los archivos que hacen referencia al nombre de la base, como por ejemplo:

tnsnames.ora

listener.ora

oratab

sqlnet.ora

etc...

 

10) Solo resta realizar un backup FULL de la base para poder hacer recover luego.