ORA-04030: out of process memory when trying to allocate N bytes
OracleNe demek?
Bir sunucu süreci (server process), PGA'sında (Program Global Area) yani süreç özel belleğinde yer ayıramadı. SGA'daki paylaşımlı bellekten farklı olarak bu, tek bir oturumun/sürecin kendi belleğinin tükenmesidir.
Neden olur?
Çok büyük sıralama/hash işlemleri, aşırı büyük PL/SQL koleksiyonları, denetimsiz döngülerde biriken değişkenler ya da işletim sistemi süreç bellek limitleri (ulimit -v/-d, vm.max_map_count, adres alanı) süreç belleğini tüketmiştir. 32-bit örneklerde adres alanı sınırı da tetikleyebilir.
Nasıl çözülür?
Hataya eşlik eden ikinci satırdaki ayırma kategorisini (ör. 'pga heap', 'koh-kghu sessi') inceleyerek belleği kimin tükettiğini bulun. PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET ayarlarını gözden geçirin. İşletim sistemi limitlerini kontrol edin (ulimit -a; oracle kullanıcısı için memlock, as, stack). Sorguyu/PL/SQL'i optimize edip toplu (bulk) işleme aralıklarını küçültün. Gerekirse trace dosyasıyla Oracle Support'a başvurun.