ORA-04068: Существующее состояние пакетов было сброшено
OracleЧто это значит?
Пока выполняющаяся сессия использовала состояние пакета, пакет был перекомпилирован, и это состояние стало недействительным. Экземпляр пакета, удерживаемый сессией, больше не действителен.
Почему возникает?
Тело или спецификация пакета перекомпилированы через ALTER/CREATE OR REPLACE, пока зависящие от них сессии были активны; обычно происходит при развёртывании приложения на работающей системе. Наблюдается вместе с ORA-04061/04065.
Как исправить
Повторный вызов (retry) обычно решает проблему; при второй попытке пакет загружается в новом виде. Перехватывайте ORA-04068 в приложении и автоматически повторяйте вызов. Применяйте изменения пакетов в окна обслуживания с низкой активностью пользователей. Проектирование пакетов без состояния снижает остроту проблемы.
Ещё по этой СУБД
- ORA-00979Выражение не входит в GROUP BY (not a GROUP BY expression)
- ORA-00918Столбец определён неоднозначно
- ORA-06550Строка/столбец PLS-...: ошибка компиляции PL/SQL
- ORA-01427Однострочный подзапрос возвращает более одной строки
- ORA-12899Значение слишком велико для столбца
- ORA-30926Не удаётся получить стабильный набор строк в исходных таблицах
- ORA-08103Объект больше не существует