ORA-04030: out of process memory when trying to allocate N bytes
OracleWas bedeutet das?
Ein Serverprozess konnte in seiner PGA (Program Global Area), also seinem privaten Prozessspeicher, keinen Platz allokieren. Anders als beim Shared Memory in der SGA ist hier der eigene Speicher einer einzelnen Session bzw. eines einzelnen Prozesses erschöpft.
Ursache
Sehr große Sort-/Hash-Operationen, übergroße PL/SQL-Collections, Variablen, die sich in unkontrollierten Schleifen ansammeln, oder Limits des Betriebssystems für Prozessspeicher (ulimit -v/-d, vm.max_map_count, Adressraum) haben den Prozessspeicher erschöpft. Bei 32-Bit-Instanzen kann auch das Adressraumlimit die Ursache sein.
Lösung
Finde den Speicherverbraucher, indem du die Allokationskategorie in der zweiten Zeile des Fehlers prüfst (z. B. 'pga heap', 'koh-kghu sessi'). Prüfe PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET. Prüfe die Limits des Betriebssystems (ulimit -a; memlock, as, stack für den Benutzer oracle). Optimiere die Abfrage bzw. das PL/SQL und verkleinere die Batchgrößen bei Massenverarbeitung. Wende dich bei Bedarf mit der Trace-Datei an Oracle Support.