ORA-04100 ... ORA-07499
ORA-06508: PL/SQL: could not find program unit being called
Причины возникновения: Переопределение большого пакета или процедуры.
Ошибка может возникать в двух случаях:
- Переопределяется большой пакет или процедура. Объект приобретает статус инвалидного. После приведения объекта к нормальному статусу, текущие сеансы вызывающие этот пакет будут получать данную ошибку в течении периода действия всего сеанса. Ошибка возникает из-за сброса состояния пакета в исходное состояние при переопределении.
- Переопределяется большой пакет или процедура. Объект приобретает статус инвалидного. После приведения объекта к нормальному статусу, все сеансы (в том числе и новые )вызывающие этот пакет будут получать данную ошибку. Ошибка возникает из-за нехватки свободных непрерывных блоков памяти в фрагментированном разделяемом пуле для загрузки пакета
Действия:
Возможны следующие варианты:
- Завершить текущую сессию и начать новую.
- Разбить большой пакет на более мелкие пакеты.
- Очистить разделяемый пул (ALTER SYSTEM FLUSH SHARED_POOL)
- Закрепить пакет в разделяемом пуле (ALTER SYSTEM FLUSH SHARED_POOL)