DBAtlas · Atlas de operações de banco de dados

ORA-04030: out of process memory when trying to allocate N bytes (memória do processo esgotada ao tentar alocar N bytes)

Oracle

O que significa?

Um processo servidor não conseguiu alocar espaço em sua PGA (Program Global Area), ou seja, na memória privada do processo. Diferentemente da memória compartilhada da SGA, trata-se do esgotamento da memória própria de uma única sessão/processo.

Por que acontece?

Operações de sort/hash muito grandes, coleções PL/SQL superdimensionadas, variáveis acumulando em loops sem controle ou limites de memória de processo do sistema operacional (ulimit -v/-d, vm.max_map_count, espaço de endereçamento) esgotaram a memória do processo. Em instâncias de 32 bits, o limite do espaço de endereçamento também pode causá-lo.

Como resolver

Descubra o que está consumindo memória examinando a categoria de alocação na segunda linha do erro (por exemplo, 'pga heap', 'koh-kghu sessi'). Revise PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET. Verifique os limites do sistema operacional (ulimit -a; memlock, as, stack para o usuário oracle). Otimize a consulta/o PL/SQL e reduza o tamanho dos lotes de processamento em massa. Se necessário, contate o Oracle Support com o arquivo de trace.

Abrir no DBAtlas →

Mais entradas deste banco