Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora

El archivo spfile.ora (Server Parameter File) en Oracle es crucial para la configuración y arranque de la base de datos, ya que contiene todos los parámetros de inicialización necesarios para su funcionamiento. Sin embargo, a veces, al realizar ajustes…


This content originally appeared on DEV Community and was authored by Ronal Mejía

El archivo spfile.ora (Server Parameter File) en Oracle es crucial para la configuración y arranque de la base de datos, ya que contiene todos los parámetros de inicialización necesarios para su funcionamiento. Sin embargo, a veces, al realizar ajustes en este archivo (por ejemplo, aumentar el tamaño del SGA o el memory_target), podemos cometer errores que impidan que la base de datos se inicie correctamente. Esto puede ser un problema crítico, ya que no podremos arrancar la instancia, ni siquiera en modo NOMOUNT.

En este artículo, te mostraré cómo recuperar una base de datos Oracle cuando un cambio erróneo en el spfile.ora impide su arranque. ¡Vamos a solucionarlo con ejemplos prácticos!

Escenario: Error al Modificar el Tamaño de Memoria del SGA

Imagina que modificaste el parámetro sga_target en el spfile y le asignaste un valor mayor al disponible en el servidor. Al intentar iniciar la base de datos, se muestra el siguiente error:



ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory


Este error indica que Oracle no puede asignar la cantidad de memoria solicitada y, como resultado, la base de datos no puede arrancar en cualquier modo.

Solución Paso a Paso

Para resolver este problema siguiendo uno de los métodos más seguros, es el convertir el archivo spfile a un pfile, editar el pfile, y luego volver a crear el spfile. Te lo explico a continuación.

Paso 1: Convertir el SPFILE a un PFILE

Incluso si la base de datos no puede iniciarse, aún es posible convertir el archivo binario spfile a un archivo pfile (archivo de texto) utilizando sqlplus.

1) Accede a sqlplus con el siguiente comando:



sqlplus / as sysdba


2) Convierte el spfile a un pfile:



CREATE PFILE='$ORACLE_HOME/dbs/pfile.ora' FROM SPFILE;


Esto generará un archivo pfile.ora en la ubicación especificada ($ORACLE_HOME/dbs/pfile.ora) que contendrá todos los parámetros de inicialización. Se considera que los archivos de configuración están en $ORACLE_HOME, de no ser así debe de especificar la ruta del archivo

Paso 2: Editar el PFILE

Ahora que tenemos el pfile generado, abre el archivo con un editor de texto (por ejemplo, vi o nano en Linux, o Notepad en Windows) y busca el parámetro incorrecto.

Por ejemplo, si el problema es con el tamaño del sga_target, verás algo como esto:



*.sga_target=8192M


Supongamos que el servidor solo tiene 4 GB de RAM. Este valor es demasiado alto, así que cámbialo a algo más razonable, como:



*.sga_target=2048M


Guarda los cambios y cierra el archivo.

Paso 3: Crear un Nuevo SPFILE a Partir del PFILE

Vuelve a sqlplus y crea un nuevo spfile usando el pfile modificado:



CREATE SPFILE='$ORACLE_HOME/dbs/spfile.ora' FROM PFILE='$ORACLE_HOME/dbs/pfile.ora';


Si no especificas una ruta, el spfile se creará en la ubicación predeterminada de Oracle ($ORACLE_HOME/dbs en Linux o ORACLE_HOME\\\\database en Windows).

Paso 4: Iniciar la Base de Datos con el Nuevo SPFILE

Ahora intenta iniciar la base de datos con el nuevo spfile:



STARTUP;


Si todo salió bien, la base de datos debería iniciar sin problemas.

Método Alternativo: Iniciar la Base de Datos con un PFILE Temporal

Si por alguna razón no puedes crear el pfile a partir del spfile (por ejemplo, si el spfile está corrupto), puedes crear un pfile desde cero con los parámetros mínimos necesarios:

1) Crea un archivo pfile en la ubicación predeterminada de Oracle. Por ejemplo, en Linux:



vi $ORACLE_HOME/dbs/initORCL.ora


2) Y agrega parámetros básicos como:



*.db_name='ORCL' *.memory_target=500M


3) Inicia la base de datos especificando el pfile:



STARTUP PFILE='$ORACLE_HOME/dbs/initORCL.ora';


4) Si la base de datos arranca correctamente, crea un nuevo spfile:



CREATE SPFILE FROM PFILE='$ORACLE_HOME/dbs/initORCL.ora';


5) Reinicia la base de datos para confirmar que el spfile se ha generado correctamente y realizar las configuraciones requeridas:



SHUTDOWN IMMEDIATE;
STARTUP;




Consideraciones Finales

  1. Realiza siempre un respaldo del spfile antes de realizar cualquier modificación.
  2. Si no estás seguro del valor de un parámetro, realiza pruebas en una base de datos de desarrollo antes de aplicarlo en producción.
  3. Para las rutas se menciona $ORACLE_HOME, para esto se debe de especificar el directorio donde se encuentran los archivos de configuración.


This content originally appeared on DEV Community and was authored by Ronal Mejía


Print Share Comment Cite Upload Translate Updates
APA

Ronal Mejía | Sciencx (2024-10-06T02:47:35+00:00) Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora. Retrieved from https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/

MLA
" » Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora." Ronal Mejía | Sciencx - Sunday October 6, 2024, https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/
HARVARD
Ronal Mejía | Sciencx Sunday October 6, 2024 » Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora., viewed ,<https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/>
VANCOUVER
Ronal Mejía | Sciencx - » Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/
CHICAGO
" » Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora." Ronal Mejía | Sciencx - Accessed . https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/
IEEE
" » Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora." Ronal Mejía | Sciencx [Online]. Available: https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/. [Accessed: ]
rf:citation
» Recuperar una Base de Datos Oracle Después de un Error en el Archivo spfile.ora | Ronal Mejía | Sciencx | https://www.scien.cx/2024/10/06/recuperar-una-base-de-datos-oracle-despues-de-un-error-en-el-archivo-spfile-ora/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.