DBAtlas · 데이터베이스 운영 아틀라스

ORA-04030: out of process memory when trying to allocate N bytes (N바이트 할당 중 프로세스 메모리 부족)

Oracle

의미

서버 프로세스가 PGA(Program Global Area), 즉 프로세스 전용 메모리에 공간을 할당하지 못했다. SGA의 공유 메모리와 달리 단일 세션/프로세스 자체 메모리가 고갈된 것이다.

원인

매우 큰 sort/hash 작업, 과도하게 큰 PL/SQL 컬렉션, 통제되지 않는 루프에서 누적되는 변수, 또는 운영체제 프로세스 메모리 한도(ulimit -v/-d, vm.max_map_count, 주소 공간)로 프로세스 메모리가 고갈되었다. 32비트 인스턴스에서는 주소 공간 한도도 원인이 될 수 있다.

해결 방법

오류 두 번째 줄의 할당 범주(예: 'pga heap', 'koh-kghu sessi')를 확인해 메모리를 소비하는 대상을 찾는다. PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET을 검토한다. 운영체제 한도를 확인한다(ulimit -a; oracle 사용자의 memlock, as, stack). 쿼리/PL/SQL을 최적화하고 대량 처리 배치 크기를 줄인다. 필요하면 trace 파일과 함께 Oracle Support에 문의한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목