ORA-04031: Unable to allocate N bytes of shared memory (impossible d'allouer N octets de mémoire partagée)
OracleQue 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.
Autres entrées pour ce moteur
- ORA-01017Invalid username/password; logon denied (nom d'utilisateur/mot de passe invalide ; connexion refusée)
- ORA-01555Snapshot too old: rollback segment number too small (instantané trop ancien)
- ORA-01652Unable to extend temp segment by N in tablespace (impossible d'étendre le segment temporaire de N dans le tablespace)
- ORA-12154TNS: could not resolve the connect identifier specified (identifiant de connexion spécifié non résolu)
- ORA-12514TNS: listener does not currently know of service requested in connect descriptor (le listener ne connaît pas le service demandé)
- ORA-00942Table or view does not exist (la table ou la vue n'existe pas)
- ORA-01031Insufficient privileges (privilèges insuffisants)