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에 문의한다.
같은 데이터베이스의 다른 항목
- ORA-38029object statistics are locked
- ORA-00845MEMORY_TARGET not supported on this system (이 시스템에서 MEMORY_TARGET 미지원)
- ORA-27102out of memory
- ORA-12537TNS:connection closed
- ORA-03135connection lost contact
- ORA-01033ORACLE initialization or shutdown in progress (ORACLE 초기화 또는 종료 진행 중)
- ORA-00600internal error code, arguments: [...]