No se puede iniciar Oracle (11g1) debido a una configuración de memoria incorrecta (ORA-00837)

8

Decidí reducir la asignación de memoria de una instancia de desarrollador local, y me dijeron que el siguiente comando hizo el trabajo;

alter system set memory_max_target = 512M scope = spfile;

Lo que supongo que sí, ya que ya no puedo iniciar la instancia de Oracle en cuestión. Este es el error que obtengo cuando intento conectarme como usuario no DBA;

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Cuando me conecto como SYSDBA obtengo lo siguiente;

Connected to an inactive instance.
SQL>startup nomount;
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
SQL>alter system set memory_max_target = 2G scope = spfile;
ORA-01034: ORACLE not available

("Conectado a una instancia inactiva" es mi traducción de un mensaje de error localizado, puede que no sea exactamente correcto) Entonces, estoy en una situación de captura 22, no puedo cambiar los parámetros de memoria sin iniciar, y puedo No empieces.

¿Hay alguna manera de cambiar estos parámetros sin conexión?

MaxH
fuente

Respuestas:

9

Si inicia su instancia utilizando un archivo de parámetros del servidor (una versión binaria del archivo de parámetros de inicialización, spfile), puede extraer los parámetros de inicialización en un archivo de parámetros de inicialización de texto plano (pfile), modificarlos y luego iniciar su instancia con memoria modificada parámetros

sql> create pfile='myinit.ora' from spfile='spfileORCL.ora';

Modifique sus parámetros relacionados con la memoria myinit.orae inicie su instancia con esta nueva configuración:

sql> startup pfile='myinit.ora';

Luego, puede guardar su configuración nuevamente en un archivo spfile con el siguiente comando:

sql> create spfile='spfileORCL.ora' from pfile='myinit.ora';

Y comience su base de datos como de costumbre:

sql> startup;
Yasir Arsanukaev
fuente
1
Esto funcionó perfectamente. El único cambio que necesitaba hacer de mi lado era reemplazar ORCL con el SID de la instancia en cuestión. Configuré el parámetro memory_target en el mismo valor que el parámetro memory_max_target, que podría no ser óptimo, pero me permitió comenzar.
MaxH
Sí, los nombres de los spfiles con los que Oracle intenta comenzar son , spfileSID.oray spfile.oraluego intenta leer desde el archivo init.orasi no se encuentran los archivos. Por cierto, MEMORY_MAX_TARGETpuede ser muchas veces mayor que MEMORY_TARGETaunque no pueda modificarse dinámicamente: la instancia debe ser rechazada.
Yasir Arsanukaev
Vaya, en initSID.orarealidad no lo es init.ora.
Yasir Arsanukaev
1

Las primeras versiones de 11gR1 tienen este error. No se iniciarán si memory_target se configuró en 2 GB (y más). Actualice a 11gR2 (o 11.1.0.7) o utilice los parámetros "clásicos" SGA / PGA (sga_target, sga_max_size, pga_aggregate_target).

ibre5041
fuente
¿Cómo se relaciona esto con "ORA-00837: valor especificado de MEMORY_TARGET mayor que MEMORY_MAX_TARGET" sobre el que apunta el OP?
Yasir Arsanukaev
1

Suponiendo que está utilizando Linux OS: ¿ha verificado el tamaño del sistema de archivos / dev / shm? El tamaño de este fs debe ser lo suficientemente largo como para adaptarse a su SGA. Si no, intente volver a montar con '-o size = xxx'.

usuario22020
fuente
¿Alguna vez leyó la causa de la falla identificada por el número de error de Oracle en OP (ORA-00837)?
Yasir Arsanukaev