miércoles, 23 de abril de 2025

Cómo cambiar el SID de una base de datos Oracle

Cómo cambiar el SID de una base de datos Oracle

En Oracle, el SID (System Identifier) identifica de forma única una instancia de base de datos dentro del sistema operativo. Aunque es común confundirlo con el nombre de la base de datos (DB_NAME), el SID se utiliza para iniciar y conectar la instancia localmente y remotamente. Este procedimiento NO CAMBIA el nombre de la base.

En este artículo te mostramos cómo cambiar el SID de una base de datos Oracle de forma controlada y segura.


¿Se puede cambiar directamente el SID?

No. El SID no se cambia dentro de Oracle como el DB_NAME. En cambio, se crea una nueva instancia (nuevo SID) que apunta a la misma base de datos física.

Pasos para cambiar el SID

Vamos a cambiar el nombre de la base de datos orcl a orclnew , primero identifiquemos que vamos a tener que modificar

Indetificar el nombre actual: select instance_name from v$instance;
Nombre de la instancia en el archivo pfile o spfile $ORACLE_HOME/dbs
Archivo listener, para indicar el nuevo nombre de la instancia
Archivo de ambiente oraenv, por lo general esta en la ruta /home/oracle/scripts, cambiamos el ORACLE_SID




1. Detener la instancia actual

Desde SQL*Plus:

SHUTDOWN IMMEDIATE;


2. Crear una nueva estructura de entorno con el nuevo SID

Define el nuevo ORACLE_SID en tu entorno o editar el archivo setEnv.sh:

export ORACLE_SID=ORCLNEW

Este valor debe ser configurado en tu entorno de usuario o en el script de inicio del sistema operativo.

nano /home/oracle/scripts/setEnv.sh

Aplicamos el las variables de ambiente


3. Crear el nuevo archivo de parámetros para el nuevo SID

Copia el archivo de parámetros existente (spfile o init.ora) y renómbralo con el nuevo SID:

cd $ORACLE_HOME/dbs
cp initANTIGUO_SID.ora initNUEVO_SID.ora

O si usas SPFILE:

cp spfileANTIGUO_SID.ora spfileNUEVO_SID.ora

En mi caso tengo que copiar el archivo SPFILE spfileorcl.oraspfileorclnew.ora

cp spfileorcl.ora spfileorclnew.ora

Abre el archivo y asegúrate de que el parámetro db_name esté correcto y que los paths (en caso de tener rutas absolutas) estén bien configurados.


4. Iniciar la instancia con el nuevo SID y probar

Verificamos que la base levante con el nuevo SID y verificamos el nuevo SID


echo $ORACLE_SID 
sqlplus / as sysdba
select instance_name from v$instance; 
STARTUP;

 



Recargar el listener y Conectarnos desde afuera

lsnrctl reload
lsnrctl status

 

sqlplus system@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.20.28)(PORT=1521)))(CONNECT_DATA=(SID=ORCLNEW)))
select instance_name from v$instance;

 




5. Opcional: Eliminar archivos de la instancia anterior

Una vez que confirmes que todo está bien funcionando, puedes eliminar archivos de parámetros o configuraciones relacionadas con el antiguo SID.

¿Qué más debo tener en cuenta?

  • Actualiza tus scripts de arranque del sistema. en caso de que tengas configurado inicio automático
  • Actualiza configuraciones en oratab (en Unix/Linux).
  • Revisa listener.ora y tnsnames.ora si contienen referencias al SID antiguo.

Conclusión

Aunque no se puede cambiar el SID directamente en Oracle, puedes crear una nueva instancia que apunte a la misma base de datos y así "renombrarla" desde el punto de vista del sistema operativo. Este procedimiento es seguro si se siguen los pasos correctamente y es muy útil en entornos donde se clonan bases de datos o se reubican servidores.

¿Te ha tocado cambiar un SID antes? ¡Déjanos tu experiencia o pregunta en los comentarios!

No hay comentarios:

Publicar un comentario