Оракул ORA-00600

У меня есть оператор SQL SELECT, который возвращает:

    Error: ORA-00600: internal error code, arguments: [qerpfAllocateR], [], [], [], [], [], [], []

Если я сужу свои результаты, добавив еще одно условие в предложение WHERE, все будет в порядке.

Кто-нибудь знает, что происходит?

РЕДАКТИРОВАТЬ:

    select * from ( select tbl1.col1, ..., tbl1.points
    from table1 tbl1, table2 tbl2
    where tbl1.tbl2FK = tbl2.PK and
          tbl2.col1 = someNumber and
          tbl1.dateColumn = to_date('27-10-2008','dd-mm-yyyy')
    order by tbl1.points desc ) s where rownum <= 3 

РЕДАКТИРОВАТЬ2:

Мой администратор БД предложил решение, которое работает:

select * from (select rank() over (order by tbl1.points desc) rank,
                  tbl1.col1, ..., tbl1.points
           from table1 tbl1, table2 tbl2
           where tbl1.tbl2FK = tbl2.PK and
                 tbl2.col1 = someNumber and
                 tbl1.dateColumn = to_date('27-10-2008','dd-mm-yyyy')) s
     where s.rank <= 3

person Chobicus    schedule 04.02.2009    source источник
comment
Укажите версию базы данных, платформу и уровень исправления.   -  person Jeffrey Kemp    schedule 10.07.2010
comment
Была такая же проблема здесь, но нашел обходной путь для достижения того, что мне нужно. stackoverflow.com/questions/8923091/   -  person radu florescu    schedule 19.01.2012


Ответы (8)


Удачи в получении поддержки от Oracle...

А если серьезно, каждый раз, когда я сталкиваюсь с этой проблемой, обычно помогает небольшая перестановка запроса. Может быть, немного возиться с индексами.

person Tamas Czinege    schedule 04.02.2009
comment
Другими словами: я не знаю. Это магия. Попробуйте встряхнуть палочку вуду в другую сторону. Перестановка запроса помогает, пока вы снова не столкнетесь с той же проблемой. Это вызвано ошибкой в ​​Oracle, и, вероятно, для нее есть исправление. Если нет, вы должны отправить отчет об ошибке. - person Apocalisp; 04.02.2009
comment
@Apocalisp: Во-первых, я сомневаюсь, что есть исправление - оно может быть. Ожидание исправления может занять довольно много времени, и если вы не хотите бесконечно откладывать свой проект, вам нужно придумать обходной путь. Другими словами: ему нужно решение сейчас, а не через 6 недель. - person Tamas Czinege; 04.02.2009
comment
И, кстати, именно так и произошло в этом случае - исправления не было, администратор базы данных предложил обходной путь, и он сработал - все довольны, проект не задерживается, надеюсь, Oracle когда-нибудь выпустит патч. - person Tamas Czinege; 04.02.2009
comment
Некоторое время назад я столкнулся с этой проблемой и нашел несколько обсуждений на форуме OTN/Oracle, которые также связывали это с внутренней ошибкой Oracle. У меня возникли проблемы с поиском их в данный момент, или я дал бы ссылки. Он появляется только при выполнении определенных типов вложенных выборок (не уверен, какие именно свойства вызывали это). Иногда запросы работали, иногда нет... возможно, это как-то связано с индексом. Как бы это ни было неприятно, я бы выбрал то, что работает, а не пытался получить патч. Я почти уверен, что для него был Oracle SR/TAR, но не уверен, что это было исправлено в новых версиях. - person aw crud; 12.02.2010

Ошибка ORA-0600 указывает на внутреннюю ошибку самого Oracle. Скорее всего, вы столкнулись с ошибкой Oracle.

Если вы перейдете на http://metalink.oracle.com, вы сможете найти точную ошибку, если она известно, вставив «аргументы» и полную трассировку стека в инструмент поиска ORA-0600. См. примечание Metalink 153788.1.

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

person Apocalisp    schedule 04.02.2009

Какой полный запрос?

http://www.orafaq.com/wiki/ORA-00600 предлагает вам сообщить об ошибке оракулу.

person tehvan    schedule 04.02.2009

ORA-00600 в основном означает, что вы разбили сервер оракула (не экземпляр, а просто сервер, обслуживающий ваш запрос).

В вашем расположении bdump почти всегда будет файл трассировки. Это, вероятно, не очень поможет вам, но будет очень полезно для поддержки оракула.

Обычно это вызвано ошибкой оракула, и, судя по опыту, вы мало что можете с этим поделать, кроме как поднять SR через металинк (это рекомендуемое решение от Oracle). Они попытаются воспроизвести проблему, и, если повезет, если это ошибка, она в конечном итоге попадет в патч.

Однако в краткосрочной перспективе (например, дни-месяцы) основным реалистичным решением является обходной путь.

Хотя повышение SR на самом деле не очень помогает вам и может быть разочаровывающим опытом, его стоит сделать, так как это может сэкономить кому-то время после исправления ошибки.

person Matthew Watson    schedule 06.02.2009

Эти ошибки обычно связаны с оптимизатором. Я думаю, что даже самое незначительное изменение в запросе, такое как переключение порядка таблиц table1 и table2 в предложении FROM, может заставить оптимизатор выбрать другой план, который не столкнется с этой ошибкой.

person Tal    schedule 04.02.2009

Мое решение:

Проблема

введите здесь описание изображения

ЭТО НЕ РАБОТАЕТ, ПОЛУЧАЕТ ОШИБКУ [0600]

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1904054272 bytes
Fixed Size                  2404024 bytes
Variable Size             570425672 bytes
Database Buffers         1325400064 bytes
Redo Buffers                5824512 bytes
Database mounted.
SQL> recover database
Media recovery complete.
SQL> alter database open
  2
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[108], [615], [655], [], [], [], [], [], [], []`

ВОТ МОЕ РЕШЕНИЕ ПРОБЛЕМЫ:

    SQL> Startup mount
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown abort
ORACLE instance shut down.
SQL>
SQL> startup mount
ORACLE instance started.

Total System Global Area 1904054272 bytes
Fixed Size                  2404024 bytes
Variable Size             570425672 bytes
Database Buffers         1325400064 bytes
Redo Buffers                5824512 bytes
Database mounted.
SQL> Show parameter control_files

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      C:\APP\USER\ORADATA\ORACLEDB\C
                                                 ONTROL01.CTL, C:\APP\USER\FAST
                                                 _RECOVERY_AREA\ORACLEDB\CONTRO
                                                 L02.CTL
SQL> select a.member,a.group#,b.status from v$logfile a ,v$log b where a.group#=
b.group# and b.status='CURRENT'
  2
SQL> select a.member,a.group#,b.status from v$logfile a ,v$log b where a.group#=
b.group# and b.status='CURRENT';

MEMBER
--------------------------------------------------------------------------------

    GROUP# STATUS
---------- ----------------
C:\APP\USER\ORADATA\ORACLEDB\REDO03.LOG
         3 CURRENT


SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1904054272 bytes
Fixed Size                  2404024 bytes
Variable Size             570425672 bytes
Database Buffers         1325400064 bytes
Redo Buffers                5824512 bytes
Database mounted.
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 4234808 generated at 01/21/2014 18:31:05 needed for thread 1
ORA-00289: suggestion :
C:\APP\USER\FAST_RECOVERY_AREA\ORACLEDB\ARCHIVELOG\2014_01_22\O1_MF_1_108_%U_.AR

C
ORA-00280: change 4234808 for thread 1 is in sequence #108


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
C:\APP\USER\ORADATA\ORACLEDB\REDO03.LOG
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;

Database altered.

НАКОНЕЦ-ТО ЗАРАБОТАЛО:

введите здесь описание изображения

person z atef    schedule 23.01.2014

ORA-00600 обычно означает, что произошло что-то очень неожиданное, и это может быть связано с повреждением базы данных. Симптомы могут заключаться в том, что запрос работает или нет, в зависимости от того, как он сформулирован.

Пример из жизни:

  • Ошибка при обновлении поля LOB для определенной строки с id=‹ID›
  • Строка не видна с помощью SELECT * FROM ‹table›
  • Но: SELECT * FROM ‹table› WHERE id=‹ID› не выполняется и выдает ORA-006000.

(Возможное) решение, использованное в приведенном выше примере

  • экспортировать все доступное содержимое таблицы
  • удалить таблицу
  • повторно импортировать содержимое

Удачи!

person Witold Kaczurba    schedule 23.01.2019

Я видел такие ошибки, когда в таблице есть столбцы XMLTYPE, используя PL/SQL Developer. Этого бы не произошло, если бы PL/SQL Developer создал для меня скелет запроса, потому что это добавило бы некоторый синтаксис к запросу столбца XMLTYPE, я не могу точно вспомнить, что именно.

person Dave Swersky    schedule 04.02.2009
comment
Здесь не используется XMLTYPE. Я видел ORA-00600 в самых разных обстоятельствах - это общая ошибка, которая охватывает все, поэтому она не будет одной и той же ошибкой, если только аргументы не совпадают и вы не используете ту же версию/исправление базы данных. - person Jeffrey Kemp; 10.07.2010