ORA-04030: out of process memory when trying to allocate N bytes
OracleЧто это значит?
Серверный процесс не смог выделить место в своей PGA (Program Global Area), т. е. в частной памяти процесса. В отличие от общей памяти в SGA, это исчерпание собственной памяти отдельного сеанса/процесса.
Почему возникает?
Память процесса исчерпана очень большими операциями сортировки/хеширования, чрезмерно большими коллекциями PL/SQL, переменными, накапливающимися в неконтролируемых циклах, или лимитами памяти процесса в операционной системе (ulimit -v/-d, vm.max_map_count, адресное пространство). На 32-битных экземплярах причиной также может быть лимит адресного пространства.
Как исправить
Найдите, что потребляет память, изучив категорию выделения во второй строке ошибки (например, 'pga heap', 'koh-kghu sessi'). Проверьте PGA_AGGREGATE_LIMIT / PGA_AGGREGATE_TARGET. Проверьте лимиты операционной системы (ulimit -a; memlock, as, stack для пользователя oracle). Оптимизируйте запрос/PL/SQL и уменьшите размер пакетов массовой обработки. При необходимости обратитесь в Oracle Support с трассировочным файлом.