Ошибка ORA-01034: ORACLE not available и ORA-27101 в Oracle DB
- Ошибка
ORA-01034: ORACLE not availableв сочетании сORA-27101: shared memory realm does not exist. - Клиентские подключения по сети через Listener завершаются с
TNS-12514 / ORA-01034. - Экземпляр СУБД не запущен или аварийно завершился из-за нехватки системных ресурсов памяти.
1. Проверка переменных окружения в Linux
Самая распространенная причина ошибки при локальном запуске — неверно заданная переменная $ORACLE_SID или $ORACLE_HOME:
echo $ORACLE_SID
echo $ORACLE_HOME
# Установка корректного окружения (регистрозависимо!)
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH2. Проверка и запуск экземпляра базы данных
sqlplus / as sysdba
-- Если вывелось 'Connected to an idle instance', запустите базу:
STARTUP;3. Проверка нехватки Shared Memory / HugePages в Linux
Если база не может стартовать и падает в ORA-01034, проверьте параметры ядра ОС в /etc/sysctl.d/99-oracle.conf:
# Максимальный размер сегмента разделяемой памяти (в байтах)
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.nr_hugepages = 16400sysctl --system4. Проверка регистрации сервиса в TNS Listener
lsnrctl status
-- Если сервис находится в статусе BLOCKED или отсутствует, зарегистрируйте его принудительно:
ALTER SYSTEM REGISTER; Частые вопросы (FAQ)
Почему ORA-01034 возникает при правильном ORACLE_SID?
В Linux переменные окружения чувствительны к регистру. Если база называется 'orcl', а в переменной экспортировано 'ORCL', вы получите ошибку ORA-01034 / ORA-27101.
Что делать, если база падает в ORA-01034 сразу после команды STARTUP?
Проверьте alert.log. Если суммарный размер памяти SGA (sga_target / sga_max_size) превышает физически доступную память или лимит tmpfs/HugePages, Linux OOM Killer уничтожает процесс ядра СУБД.
Как настроить автозапуск базы при ребуте сервера Linux?
Отредактируйте файл /etc/oratab, установив флаг 'Y' в конце строки: orcl:/u01/app/oracle/product/19.0.0/dbhome_1:Y и настройте systemd-юнит или скрипт dbstart.
В чем отличие ORA-01034 от ORA-01033?
ORA-01034 означает, что экземпляр базы данных вообще не запущен (SGA не выделена). ORA-01033 означает, что экземпляр запущен, но находится в процессе инициализации или монтирования.