ORA-00600: внутренний код ошибки, аргументы:[5213],[][][][], оракул 8

Я создал этот запрос для получения конкретных результатов. но это дает мне эту ошибку. У меня есть записи с 1995 года. Так что, если я хочу получить все данные. Я получаю следующую ошибку.

ERROR at line 38:
ORA-00600: internal error code, arguments:[5213],[][][][]

SELECT TO_NUMBER(SOLF.I_NO) I_NO,
GEHA.G_NAME,
ITEMS.I_NAME,
TO_NUMBER(SOLF.G_NO) G_NO,
NVL(SOLF.SL_MONY,0) SL_MONY,
SOLF.SL_DATE THE_DATE,
SOLF.SRF_NO SRF_NO,
SOLF.SOLF_NO SOLF_NO,
SUM(NVL(TS_MONY,0)) TS_MONY,
NVL(SOLF.SL_MONY,0)- SUM(NVL(TS_MONY,0)) TOTAL, 1 THE_ORDER
FROM 
SOLF,TSDED,GEHA,ITEMS
WHERE
SOLF.SOLF_NO = TSDED.SOLF_NO(+)
AND GEHA.G_NO = SOLF.G_NO
AND
ITEMS.I_NO = SOLF.I_NO
GROUP BY SOLF.I_NO, 
GEHA.G_NAME,
ITEMS.I_NAME ,
SOLF.G_NO, 
SOLF.SL_MONY, 
SOLF.SL_DATE, 
SOLF.SRF_NO, 
SOLF.SOLF_NO
UNION ALL
SELECT TO_NUMBER(TSDED.I_NO) I_NO,
GEHA.G_NAME,
ITEMS.I_NAME,
TO_NUMBER(TSDED.G_NO) G_NO,
0 SL_MONY,
TSDED.TS_DATE THE_DATE , 
TSDED.SRF_NO SRF_NO,
TSDED.SOLF_NO SOLF_NO,
SUM(NVL(TS_MONY,0)) TS_MONY,
0 -SUM(NVL(TS_MONY,0))  TOTAL, 2 THE_ORDER
FROM 
TSDED,GEHA,ITEMS
WHERE
GEHA.G_NO = TSDED.G_NO
AND
TSDED.SOLF_NO NOT IN 
(
SELECT SOLF_NO
FROM 
SOLF
)
AND
ITEMS.I_NO = TSDED.I_NO
GROUP BY TSDED.I_NO, 
GEHA.G_NAME,
ITEMS.I_NAME ,
TSDED.G_NO, 
TSDED.TS_DATE, 
TSDED.SRF_NO, 
TSDED.SOLF_NO
ORDER BY G_NO, I_NO , THE_ORDER ,THE_DATE ; 

Я пытался это исправить, но безрезультатно. В любом случае, строка ошибки 38: TSDED,GEHA,ITEM. моя база данных оракула 8i

2 ответа

Какую версию Oracle вы используете? Если вы используете версию ниже 8.1.6.3, вы, вероятно, сталкиваетесь с ошибкой 1331849,

Описание: Запросы с UNION ALL и несколькими операциями сортировки дисков могут завершиться ошибкой ORA-600 [[5213]]

http://www.orafaq.com/forum/t/9968/

Обычно ora-00600 является внутренней ошибкой, обычно это связано с повреждением какой-либо внутренней структуры или ошибкой в ​​базе данных.

Чтобы обойти эту проблему, я думаю, что проще всего использовать таблицу (временную или нет); отдельно вставьте нужную строку, избегая объединения всех, и выполните запрос к таблице.

Если предположить, что каждый запрос в объединении работает без ошибок; затем, возможно, заставит движок материализовать результаты, а затем отсортировать, используя встроенное представление / подзапрос.

SELECT * 
FROM (SELECT TO_NUMBER(SOLF.I_NO) I_NO
           , GEHA.G_NAME
           , ITEMS.I_NAME
           , TO_NUMBER(SOLF.G_NO) G_NO
           , NVL(SOLF.SL_MONY,0) SL_MONY
           , SOLF.SL_DATE THE_DATE
           , SOLF.SRF_NO SRF_NO
           , SOLF.SOLF_NO SOLF_NO
           , SUM(NVL(TS_MONY,0)) TS_MONY
           , NVL(SOLF.SL_MONY,0)- SUM(NVL(TS_MONY,0)) TOTAL
           , 1 THE_ORDER
FROM SOLF,TSDED,GEHA,ITEMS
WHERE SOLF.SOLF_NO = TSDED.SOLF_NO(+)
  AND GEHA.G_NO  = SOLF.G_NO
  AND ITEMS.I_NO = SOLF.I_NO
GROUP BY
  SOLF.I_NO,
  GEHA.G_NAME,
  ITEMS.I_NAME,
  SOLF.G_NO,
  SOLF.SL_MONY,
  SOLF.SL_DATE,
  SOLF.SRF_NO,
  SOLF.SOLF_NO
UNION ALL
SELECT TO_NUMBER(TSDED.I_NO) I_NO
     ,  GEHA.G_NAME
     ,  ITEMS.I_NAME
     ,  TO_NUMBER(TSDED.G_NO) G_NO
     ,  0 SL_MONY
     ,  TSDED.TS_DATE THE_DATE
     ,  TSDED.SRF_NO SRF_NO
     ,  TSDED.SOLF_NO SOLF_NO
     ,  SUM(NVL(TS_MONY,0)) TS_MONY
     ,  0 -SUM(NVL(TS_MONY,0)) TOTAL
     ,  2 THE_ORDER
FROM TSDED,GEHA,ITEMS
WHERE GEHA.G_NO = TSDED.G_NO
  AND TSDED.SOLF_NO NOT IN (SELECT SOLF_NO FROM SOLF)
  AND ITEMS.I_NO = TSDED.I_NO
GROUP BY
  TSDED.I_NO,
  GEHA.G_NAME,
  ITEMS.I_NAME ,
  TSDED.G_NO,
  TSDED.TS_DATE,
  TSDED.SRF_NO,
  TSDED.SOLF_NO) mSub
ORDER BY
  G_NO,
  I_NO,
  THE_ORDER,
  THE_DATE; 
Другие вопросы по тегам