DBAtlas · Atlas d'exploitation des bases de données

ORA-04031: Unable to allocate N bytes of shared memory (impossible d'allouer N octets de mémoire partagée)

Oracle

Que signifie cette erreur ?

Oracle n'a pas pu allouer une zone de mémoire contiguë de la taille demandée dans un pool de mémoire partagée (généralement le shared pool ou le large pool). Un composant de la SGA est sous pression mémoire.

Cause

Fragmentation du shared pool due à de nombreuses instructions SQL uniques sans variables de liaison (remplies de littéraux), SHARED_POOL_SIZE insuffisant, trop de connexions simultanées, gros packages PL/SQL, ou dimensionnement ASMM/AMM incorrect.

Comment la corriger

Vérifiez à quel pool le message d'erreur fait référence (shared pool, large pool, etc.). À court terme : ALTER SYSTEM FLUSH SHARED_POOL (attention : en production, cela force la réanalyse de tout le SQL, c.-à-d. une tempête temporaire de hard parses, et ne corrige pas durablement la fragmentation). Correction permanente : imposez l'utilisation des variables de liaison (y compris CURSOR_SHARING), augmentez SGA_TARGET / SHARED_POOL_SIZE / LARGE_POOL_SIZE. Épinglez en mémoire les packages fréquemment utilisés avec DBMS_SHARED_POOL.KEEP. Examinez la répartition de la mémoire avec V$SGASTAT.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur