Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

ORA-04030 1С:Предприятие и СУБД

Ошибка ORA-04030: out of process memory — тюнинг памяти PGA и OS лимитов

Обновлено: 26.08.2026 · Официальная документация ↗
  • Серверный процесс завершается с ошибкой ORA-04030: out of process memory when trying to allocate N bytes (pga heap, ...).
  • В Linux системный вызов malloc()/mmap() возвращает ENOMEM.
  • Высокое потребление физической оперативной памяти (PGA) серверными процессами Oracle.
  • Процессы СУБД уничтожаются механизмом OS OOM Killer.

1. Поиск сессий с аномальным потреблением PGA

SELECT s.sid, s.serial#, s.username, s.program, 
       p.spid, p.pga_used_mem/1024/1024 AS pga_used_mb, 
       p.pga_alloc_mem/1024/1024 AS pga_alloc_mb
FROM v$session s
JOIN v$process p ON s.paddr = p.addr
ORDER BY pga_alloc_mb DESC;

2. Проверка и корректировка лимитов PGA в Oracle

-- Увеличение агрегированного пула PGA
ALTER SYSTEM SET pga_aggregate_target = 16G SCOPE=BOTH;

-- Корректировка жесткого лимита (0 = отключение жесткого лимита)
ALTER SYSTEM SET pga_aggregate_limit = 32G SCOPE=BOTH;

3. Проверка системных лимитов ОС (ulimit) в Linux

В файле /etc/security/limits.d/99-oracle.conf убедитесь, что параметры стека и памяти не ограничены:

oracle   soft   memlock    unlimited
oracle   hard   memlock    unlimited
oracle   soft   stack      10240
oracle   hard   stack      32768
oracle   soft   data       unlimited
oracle   hard   data       unlimited

4. Проверка параметра vm.max_map_count

sysctl -w vm.max_map_count=1048576
💡 Практика специалистов: При расчете параметров памяти на сервере баз данных 1С выделяйте под PGA не менее 20–30% от общей RAM сервера, а под SGA — 40–50%, оставляя запас для ОС и фоновых процессов.

Частые вопросы (FAQ)

В чем разница между памятью SGA и PGA?

SGA — общая разделяемая память экземпляра СУБД (буферный кэш, shared pool). PGA — приватная память, выделяемая индивидуально под каждый выделенный процесс Oracle для сортировок, хеширования и стека переменных PL/SQL.

Что происходит при превышении PGA_AGGREGATE_LIMIT?

Oracle находит сессию, потребляющую наибольший объем памяти PGA, и принудительно обрывает ее с ошибкой ORA-04036 / ORA-04030, защищая сервер от падения по нехватке RAM.

Могут ли коллекции PL/SQL вызвать ORA-04030?

Да, выборка миллионов строк в ассоциативные массивы или вложенные таблицы PL/SQL (BULK COLLECT без предложения LIMIT) — частая причина исчерпания памяти процесса.

Как размер HugePages в Linux защищает от проблем с памятью?

HugePages фиксируют страницы памяти SGA в RAM и исключают дублирование страниц таблиц трансляции (Page Tables), высвобождая гигабайты памяти для PGA.

Полезные материалы
Рекомендуем