Печать
Категория: Oracle Database
Просмотров: 13105

ORA-06508: PL/SQL: could not find program unit being called

Причины возникновения: Переопределение большого пакета или процедуры.

Ошибка может возникать в двух случаях:

  1. Переопределяется большой пакет или процедура. Объект приобретает статус инвалидного. После приведения объекта к нормальному статусу, текущие сеансы вызывающие этот пакет будут получать данную ошибку в течении периода действия всего сеанса. Ошибка возникает из-за сброса состояния пакета в исходное состояние при переопределении.
  2. Переопределяется большой пакет или процедура. Объект приобретает статус инвалидного. После приведения объекта к нормальному статусу, все сеансы (в том числе и новые )вызывающие этот пакет будут получать данную ошибку. Ошибка возникает из-за нехватки свободных непрерывных блоков памяти в фрагментированном разделяемом пуле для загрузки пакета

Действия:

Возможны следующие варианты:

  1. Завершить текущую сессию и начать новую.
  2. Разбить большой пакет на более мелкие пакеты.
  3. Очистить разделяемый пул (ALTER SYSTEM FLUSH SHARED_POOL)
  4. Закрепить пакет в разделяемом пуле (ALTER SYSTEM FLUSH SHARED_POOL)