DBAtlas · Atlas für Datenbankbetrieb

ORA-04031: Unable to allocate N bytes of shared memory (N Bytes Shared Memory können nicht allokiert werden)

Oracle

Was 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.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank