Ошибка ORA-03114: not connected to ORACLE — восстановление сессии
- Приложение отправляет запрос и сразу получает ошибку
ORA-03114: not connected to ORACLE. - Сессия пользователя была принудительно завершена администратором или профилем ресурсов (Resource Limit / Idle Timeout).
- Инстанс СУБД был перезагружен или аварийно остановлен (SHUTDOWN ABORT).
1. Проверка доступности экземпляра Oracle
sqlplus / as sysdba
SELECT status, instance_name, host_name FROM v$instance;2. Проверка ограничений профилей пользователей (IDLE_TIME)
SELECT u.username, p.profile, p.resource_name, p.limit
FROM dba_users u
JOIN dba_profiles p ON u.profile = p.profile
WHERE u.username = 'APP_USER' AND p.resource_name IN ('IDLE_TIME', 'CONNECT_TIME');Увеличение лимита времени простоя профиля:
ALTER PROFILE DEFAULT LIMIT IDLE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT CONNECT_TIME UNLIMITED;3. Переподключение пула соединений приложения
В сервере приложений (1С:Предприятие, WildFly, Tomcat) перезапустите пул соединений либо настройте механизмы валидации живых коннектов (Test-On-Borrow / SELECT 1 FROM DUAL).
Частые вопросы (FAQ)
Чем ошибка ORA-03114 отличается от ORA-03113?
ORA-03113 возникает в момент активной передачи данных, когда канал внезапно закрывается. ORA-03114 возникает, когда клиент пытается отправить новый запрос в сокет, зная, что соединение уже было разорвано ранее.
Может ли команда ALTER SYSTEM KILL SESSION вызвать ORA-03114?
Да, при следующем обращении убитой сессии к СУБД клиент получит ORA-00028 (your session has been killed), а при повторных попытках — ORA-03114.
Как защитить сессии 1С от сброса при коротких сбоях сети?
Используйте встроенные механизмы пула соединений кластера 1С и включите Transparent Application Failover (TAF) / Application Continuity на стороне Oracle RAC.
Что проверить в alert.log при массовом появлении ORA-03114?
Проверьте, не выполнялась ли команда перезапуска СУБД, не падал ли PMON/SMON и не было ли ошибок выделения общей памяти SGA.