ORA-04030: out of process memory when trying to allocate N bytes(N バイトの割り当て時にプロセスメモリ不足)
Oracle意味
サーバープロセスが PGA (Program Global Area)、すなわちプロセス固有のプライベートメモリに領域を割り当てられなかった。SGA の共有メモリとは異なり、単一のセッション/プロセス自身のメモリの枯渇である。
原因
非常に大きなソート/ハッシュ操作、過大な PL/SQL コレクション、制御されないループで蓄積する変数、または OS のプロセスメモリ上限 (ulimit -v/-d、vm.max_map_count、アドレス空間) によりプロセスメモリが枯渇した。32 ビットのインスタンスではアドレス空間の上限も原因となる。
対処方法
エラーの 2 行目にある割り当てカテゴリ (例: 'pga heap'、'koh-kghu sessi') を調べ、何がメモリを消費しているかを特定する。PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET を見直す。OS の上限を確認する (ulimit -a。oracle ユーザーの memlock、as、stack)。クエリ/PL/SQL を最適化し、一括処理のバッチサイズを小さくする。必要に応じて、トレースファイルを添えて Oracle サポートに照会する。
同じデータベースの他の項目
- 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: [...](内部エラーコード、引数: [...])