Ошибка Oracle: ORA-00600: внутренний код ошибки, аргументы: [13009], [5000], [1], [17], [1], [], [], [], [], [], [], []::

Я получаю странную проблему при выполнении одной процедуры.

Proc как показано ниже:

procedure abc 
IS 
CURSOR xyz_cur IS
 SELECT x
       ,y
       ,z 
 from temp 
  where y IN ('abc'.'pqr'.'def','sql','pqw') 
for update nowait;
BEGIN

open xyz_cur ;
:
:

END abc;

теперь ранее запрос курсора был без 'sql','pqw' . Я расширил этот оператор IN этими двумя значениями varchar. И у таблицы temp есть консистент проверки для столбца y, я также расширил константы проверки.

Теперь, как я могу решить мою проблему, она работает хорошо без двух значений, которые я недавно добавил.

То, что я пробовал, я проанализировал таблицу и перестроил индексы, но все равно не повезло. Пожалуйста, помогите мне

2 ответа

Решение

ORA-600 указывает на "внутреннюю ошибку", которую, по крайней мере в теории, вы никогда не должны видеть.

В первую очередь я бы предложил перезапустить вашу базу данных.

Если после этого проблема не исчезнет, ​​обратитесь в службу поддержки Oracle.

Metalink упоминает о нескольких проблемах, связанных с SELECT.. FOR UPDATE, которые приводят к ORA-00600 [13009], хотя ни одна из них, похоже, не соответствует вашей проблеме (вы не используете 10g или более раннюю версию, и у вас нет запросов к дереву) - я хотел бы предлагаем обратиться в службу поддержки Oracle.

Возможные обходные пути, которые вы можете попробовать:

  • используйте UNION ALL в вашем определении курсора (одна ветвь для каждого из ваших значений y)
  • если у вас есть конечный набор значений y: инвертируйте логику с помощью y, а не IN ...
Другие вопросы по тегам