DBAtlas · Atlas de operaciones de bases de datos

ORA-04031: Unable to allocate N bytes of shared memory (no se pueden asignar N bytes de memoria compartida)

Oracle

¿Qué significa?

Oracle no pudo asignar memoria contigua del tamaño solicitado en un pool de memoria compartida (normalmente el shared pool o el large pool). Un componente de la SGA está bajo presión de memoria.

¿Por qué ocurre?

Fragmentación del shared pool por muchas sentencias SQL únicas sin variables bind (llenas de literales), SHARED_POOL_SIZE insuficiente, demasiadas conexiones concurrentes, paquetes PL/SQL grandes o un dimensionamiento ASMM/AMM incorrecto.

Cómo solucionarlo

Compruebe a qué pool se refiere el mensaje de error (shared pool, large pool, etc.). A corto plazo: ALTER SYSTEM FLUSH SHARED_POOL (precaución: en producción obliga a volver a analizar todo el SQL, es decir, una tormenta temporal de hard parse, y no corrige la fragmentación de forma permanente). Solución permanente: imponga el uso de variables bind (incluido CURSOR_SHARING), aumente SGA_TARGET / SHARED_POOL_SIZE / LARGE_POOL_SIZE. Fije en memoria los paquetes de uso frecuente con DBMS_SHARED_POOL.KEEP. Examine la distribución de memoria con V$SGASTAT.

Abrir en DBAtlas →

Más entradas de este motor