ORA-04031: Unable to allocate N bytes of shared memory (N Bytes Shared Memory können nicht allokiert werden)
OracleWas bedeutet das?
Oracle konnte in einem Shared-Memory-Pool (meist Shared Pool oder Large Pool) keinen zusammenhängenden Speicher der angeforderten Größe allokieren. Eine SGA-Komponente steht unter Speicherdruck.
Ursache
Fragmentierung des Shared Pools durch viele eindeutige SQL-Statements ohne Bind-Variablen (voller Literale), zu kleine SHARED_POOL_SIZE, zu viele gleichzeitige Verbindungen, große PL/SQL-Packages oder falsche ASMM/AMM-Dimensionierung.
Lösung
Prüfe, auf welchen Pool sich die Fehlermeldung bezieht (Shared Pool, Large Pool usw.). Kurzfristig: ALTER SYSTEM FLUSH SHARED_POOL (Vorsicht: in Produktion erzwingt dies ein erneutes Parsen aller SQL-Statements, also einen vorübergehenden Hard-Parse-Sturm, und behebt die Fragmentierung nicht dauerhaft). Dauerhafte Lösung: Nutzung von Bind-Variablen durchsetzen (inklusive CURSOR_SHARING), SGA_TARGET / SHARED_POOL_SIZE / LARGE_POOL_SIZE erhöhen. Pinne häufig genutzte Packages mit DBMS_SHARED_POOL.KEEP im Speicher. Untersuche die Speicherverteilung mit V$SGASTAT.
Weitere Einträge zu dieser Datenbank
- ORA-01017Invalid username/password; logon denied (ungültiger Benutzername/Passwort; Anmeldung verweigert)
- ORA-01555Snapshot too old: rollback segment number too small (Snapshot zu alt: Rollback-Segment-Nummer zu klein)
- ORA-01652Unable to extend temp segment by N in tablespace (Temp-Segment kann im Tablespace nicht um N erweitert werden)
- ORA-12154TNS: could not resolve the connect identifier specified (angegebener Connect Identifier nicht auflösbar)
- ORA-12514TNS: listener does not currently know of service requested in connect descriptor (Listener kennt den angeforderten Service derzeit nicht)
- ORA-00942Table or view does not exist (Tabelle oder View existiert nicht)
- ORA-01031Insufficient privileges (unzureichende Berechtigungen)