Cómo solucionar el error de Oracle Database «ORA-00845: MEMORY_TARGET not supported» en Linux

El origen del problema

El error ORA-00845 en Oracle Database ocurre cuando el sistema operativo Linux no puede asignar suficiente memoria compartida (/dev/shm) para satisfacer los parámetros MEMORY_TARGET o MEMORY_MAX_TARGET definidos en el archivo de inicialización (pfile o spfile) de la base de datos. El directorio /dev/shm es un sistema de archivos temporal que utiliza memoria RAM, y su tamaño por defecto suele ser la mitad de la memoria física disponible.

Cuando Oracle intenta iniciar la instancia, verifica que el tamaño de /dev/shm sea al menos igual al valor especificado en MEMORY_TARGET. Si no es así, el motor se niega a arrancar y genera el error mencionado.

Paso a paso: Solución del error ORA-00845

1. Verificar el tamaño actual de /dev/shm

Ejecuta el siguiente comando para comprobar el tamaño montado en /dev/shm:

df -h /dev/shm

También puedes verificar los parámetros de memoria compartida del kernel con:

sysctl -a | grep shm

2. Redimensionar /dev/shm dinámicamente

Para ajustar temporalmente el tamaño de /dev/shm, ejecuta:

sudo mount -o remount,size=<nuevo_tamaño> /dev/shm

Reemplaza <nuevo_tamaño> con un valor mayor o igual a tu MEMORY_TARGET (por ejemplo, 8G para 8 gigabytes).

3. Configuración permanente en /etc/fstab

Para hacer el cambio permanente, edita el archivo /etc/fstab:

sudo vi /etc/fstab

Agrega o modifica la línea correspondiente a /dev/shm para especificar el nuevo tamaño:

tmpfs /dev/shm tmpfs defaults,size=<nuevo_tamaño> 0 0

4. Reiniciar los servicios de almacenamiento temporal

Para aplicar los cambios, reinicia el servicio tmp.mount:

sudo systemctl restart tmp.mount

5. Verificar los cambios

Confirma que el nuevo tamaño se haya aplicado correctamente:

df -h /dev/shm

6. Reiniciar la instancia de Oracle

Con el tamaño de /dev/shm ajustado, intenta reiniciar la instancia de Oracle:

sqlplus / as sysdba
STARTUP

Preguntas Frecuentes (FAQs)

¿Qué sucede si /dev/shm ya tiene un tamaño suficiente pero persiste el error?

Verifica los parámetros del kernel relacionados con la memoria compartida (SEMMNI, SEMMSL, SEMMNS y SEMOPM). Puedes ajustarlos en /etc/sysctl.conf y aplicar los cambios con sysctl -p.

¿Cuál es el tamaño recomendado para MEMORY_TARGET?

El valor ideal depende de la carga de trabajo y la memoria disponible en el servidor. Oracle recomienda asignar entre el 50% y el 80% de la memoria física para MEMORY_TARGET en entornos dedicados.

¿Cómo puedo ver el valor actual de MEMORY_TARGET en mi base de datos?

Ejecuta la siguiente consulta en SQL*Plus:

SHOW PARAMETER MEMORY_TARGET;
✨ ¿Tienes dudas sobre este tema? Pregúntale a tu IA favorita:


¡Valora esta información!
[Total: 0 Average: 0]
Comparte este contenido:

Deja un comentario

🤖 IA

×
Hola. ¿Qué duda o consulta tienes sobre este contenido?