Ошибка 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 ...