В этой статье мы рассмотрим причину возникновения исключительной ситуации ORA-00019, а также будет рассмотрен вариант решения.
Описание:
ORA-00019: maximum number of session licenses exceeded
Превышен лимит лицензированных сеансов
Ошибка ORA-00019 возникает, когда число сеансов (подключений) к базе данных Oracle превышает максимально разрешенное количество, определенное лицензией или параметром инициализации LICENSE_SESSIONS.
Причина:
- Достигнут лимит одновременных подключений к БД
- Неправильно настроен параметр LICENSE_SESSIONS или SESSIONS
- Утечка соединений (не закрываются должным образом)
Пример обработки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
-- Проверка текущих параметров сессий SELECT name, value FROM v$parameter WHERE name IN ('sessions', 'license_sessions', 'processes'); -- Попытка подключения при достигнутом лимите BEGIN -- Код, который может вызвать подключение EXCEPTION WHEN OTHERS THEN IF SQLCODE = -19 THEN DBMS_OUTPUT.PUT_LINE('Ошибка: Достигнут лимит сеансов. Попробуйте позже.'); -- Логирование ошибки INSERT INTO error_log (error_code, error_message, error_time) VALUES (SQLCODE, SQLERRM, SYSDATE); ELSE DBMS_OUTPUT.PUT_LINE('Неизвестная ошибка: ' || SQLERRM); END IF; END; / -- Увеличение лимита сессий (требует прав администратора) ALTER SYSTEM SET sessions=300 SCOPE=SPFILE; ALTER SYSTEM SET processes=200 SCOPE=SPFILE; |
Решение:
- Увеличить параметры SESSIONS и PROCESSES в файле параметров
- Проверить приложения на утечки соединений
- Реализовать пул соединений в приложениях
- Увеличить лицензионный лимит (если ограничение лицензионное)