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

ORA-04030: out of process memory when trying to allocate N bytes (mémoire de processus épuisée lors de l'allocation de N octets)

Oracle

Que signifie cette erreur ?

Un processus serveur n'a pas pu allouer d'espace dans sa PGA (Program Global Area), c'est-à-dire sa mémoire de processus privée. Contrairement à la mémoire partagée de la SGA, il s'agit de l'épuisement de la mémoire propre à une seule session/un seul processus.

Cause

Des opérations de tri/hash très volumineuses, des collections PL/SQL surdimensionnées, des variables qui s'accumulent dans des boucles non maîtrisées ou des limites de mémoire de processus du système d'exploitation (ulimit -v/-d, vm.max_map_count, espace d'adressage) ont épuisé la mémoire du processus. Sur les instances 32 bits, la limite d'espace d'adressage peut aussi la déclencher.

Comment la corriger

Identifiez ce qui consomme la mémoire en examinant la catégorie d'allocation sur la deuxième ligne de l'erreur (par ex. 'pga heap', 'koh-kghu sessi'). Revoyez PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET. Vérifiez les limites du système d'exploitation (ulimit -a ; memlock, as, stack pour l'utilisateur oracle). Optimisez la requête/le PL/SQL et réduisez la taille des lots en traitement de masse. Si nécessaire, contactez Oracle Support avec le fichier de trace.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur