Ошибка 600 oracle

I have SQL SELECT statement that returns:

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

If I narrow my results by adding one more condition in WHERE clause everything is ok.

Anyone knows what is happening?

EDIT:

    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 

EDIT2:

My DB admin suggested solution that works:

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

OMG Ponies's user avatar

OMG Ponies

326k82 gold badges523 silver badges502 bronze badges

asked Feb 4, 2009 at 14:19

Chobicus's user avatar

2

The ORA-0600 error indicates an internal error in Oracle itself. You’re most likely hitting an Oracle bug.

If you go to http://metalink.oracle.com, you can look up the exact bug, if it is known, by pasting the «arguments» and full stack trace into the ORA-0600 lookup tool. See metalink note 153788.1.

If there’s a known bug with that description, it’s likely that there’s already a patch available for you to download and install. If it’s not a known bug, contact support.

answered Feb 4, 2009 at 14:29

Apocalisp's user avatar

ApocalispApocalisp

34.8k8 gold badges106 silver badges156 bronze badges

Good luck with getting support from Oracle…

Seriously though, every time I hit this problem, rearranging the query a little bit usually helps. Maybe fiddling around with the indexes a bit.

answered Feb 4, 2009 at 14:40

Tamas Czinege's user avatar

Tamas CzinegeTamas Czinege

119k40 gold badges151 silver badges176 bronze badges

4

ORA-00600 basically means you’ve crash the oracle server (not the instance, just the server servicing your request).

There will almost always be a trace file in your bdump location. This likely wont be a lot of help you to, but will be very helpful to oracle support.

This is generally caused by an oracle bug, and from experience, there isn’t a lot you can do about them except raise a SR via metalink (this is the recommended solution from Oracle). They will try to replicate the issue and with any luck, if its a bug it will eventually find its way into a patch.

In the immediate term though (eg, days — months) the main realistic solution is work around it.

While raising the SR doesn’t really do alot to help you and can be a frustrating experience, its worth doing, as it might save someone else time once the bug is fixed.

answered Feb 6, 2009 at 4:01

Matthew Watson's user avatar

Matthew WatsonMatthew Watson

14.1k9 gold badges62 silver badges82 bronze badges

0

These bugs are usually related to the optimizer. I think even the smallest change in the query like switching the order of table1 and table2 in the FROM clause might force the optimizer to choose a different plan that will not encounter this error.

answered Feb 4, 2009 at 16:12

Tal's user avatar

My solution:

Problem

enter image description here

THIS DIDNT WORK WAS GETTING ERROR [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], [], [], [], [], [], [], []`

HERE IS MY SOLUTION TO THE PROBLEM:

    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.

FINALLY IT WORKED:

enter image description here

answered Jan 23, 2014 at 3:23

z atef's user avatar

z atefz atef

7,1383 gold badges55 silver badges50 bronze badges

ORA-00600 generally means that there is something highly unexpected and it might be linked to the database corruption. The symptoms can be that query works or not depending on how it is formulated.

Life example:

  • LOB field update went wrong for a particular row with id=<ID>
  • The row is not visible with SELECT * FROM <table>
  • But: SELECT * FROM <table> WHERE id=<ID> fails to execute and gives ORA-006000.

(Possible) Solution used to the above example

  • export all accessible table contents
  • delete table
  • reimport the contents

Good Luck!

answered Jan 23, 2019 at 9:57

Witold Kaczurba's user avatar

Witold KaczurbaWitold Kaczurba

9,8753 gold badges58 silver badges67 bronze badges

I have seen errors like this when there are XMLTYPE columns in the table, using PL/SQL Developer. It wouldn’t happen if I had PL/SQL Developer create the query skeleton for me because it would add some syntax to the XMLTYPE column request, I can’t remember exactly what.

answered Feb 4, 2009 at 14:23

Dave Swersky's user avatar

Dave SwerskyDave Swersky

34.5k9 gold badges78 silver badges118 bronze badges

1

I encountered this in a situation with a record type that involved USER_TAB_COLS. I had used VARCHAR2(128) for the field in the record that was supposed to hold USER_TAB_COLS.DATA_DEFAULT. Well, that’s a LONG, for whatever reason, and while this mapping worked OK when I ran the code in a command window (PL/SQL Developer), it failed when I embedded the very same in an umbrella script that did all sorts of tasks. Once I set the data type of the record correctly to use an anchored type (USER_TAB_COLS.DATA_DEFAULT%TYPE) instead of VARCHAR2(128), the sp that does the work runs in either context. I was buffaloed by the fact that it worked ‘stand-alone’ but not when called from another script.
Here is the record type I was using:

TYPE PON_DICT_RECORD_TYPE Is RECORD(
    TABLE_NAME USER_TAB_COLS.TABLE_NAME%TYPE,
    PK         NUMBER(1),
    REQUIRED   NUMBER(1),
    COL_ORDER  NUMBER(3),
    COL_NAME   USER_TAB_COLS.COLUMN_NAME%TYPE,
    DATA_TYPE  USER_TAB_COLS.DATA_TYPE%TYPE,
    LENGTH     NUMBER(4),
    SCALE      NUMBER(2),
    DEF_VALUE  USER_TAB_COLS.data_default%TYPE, -- a LONG in U T C
    ID         NUMBER(1),
    FORCE_DEF  NUMBER(1),
    ACTIVE_PK NUMBER(1),
    NEW_COL_OLD_TABLE NUMBER(1),
    REPLACEMENT_KEY NUMBER(1)
    );

  TYPE PON_DICT_TABLE_TYPE IS TABLE OF PON_DICT_RECORD_TYPE;

  pdtab PON_DICT_TABLE_TYPE;

where you can see the definition of field DEF_VALUE is now an anchored type.

This was bizarre, I have to say. I would have expected it to fail in both contexts.

answered Jun 14 at 18:56

Allen's user avatar

AllenAllen

5465 silver badges12 bronze badges

Ошибка ORA-0600 является внутренним кодом ошибки для программных исключений Oracle. Её возникновение указывает на то, что процесс столкнулся на низком уровне с неожиданным условием.

Ошибка ORA-0600 включает список аргументов в квадратных скобках:

ORA-00600 "internal error code, arguments: [%a], [%b], [%c], [%d], [%e]"

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

В зависимости от вида первого аргумента, в Oracle имеются два типа ошибок ORA-0600:

  • первый аргумент является числом, которое отражает исходный компонент или слой, в котором происходит ошибка.
  • первый аргумент является мнемоникой, которая указывает на исходный модуль, где произошла ошибка. Этот  тип внутренней ошибки более предпочтителен в настоящее время.

Категории ошибок ORA-0600 ранжированные по номеру

В следующей таблице приведена информация относительно внутренних числовых кодов ошибок ORA-0600, используемых в Oracle.

Читать далее…

Категории ошибок ORA-0600 ранжированные по мнемонике

Следующая таблица детализирует возможные мнемоники ошибок ORA-0600.

Читать далее…

Справочник ошибок ORA-0600

ORA-00600: internal error code, arguments: [1113]

Последствия:

Сбой процесса, возможный сбой экземпляра.

Версия:

от 6.0 до 9.2

Причины возникновения:

Попытка освободить state object, хотя он уже находиться в свободных списках. Нарушение целостности в памяти SGA или из-за bug в плохом управлении state objects.

Действия:

Проанализировать дамп PMON, установить заплатки на bug.

ORA-00600: internal error code, arguments: [4193], [a], [b]

Аргументы:

[a] – Номер изменения (SCN) записи в серменте отката (Undo), [b] SCN записи в журнале повторного выполнения (Redo)

Последствия:

Сбой процесса, возможное повреждение сегмента отката, невозможность продолжения наката журналов на STANDBY.

Версия:

от 6.0 до 10.1

Источник:

KERNEL TRANSACTION UNDO

Причины возникновения:

Было обнаружено несоответствие между журнальной записью и записью в сегменте отката.

Действия:

Перейти на новую версию Oracle (10.2.0.5, 11.2.0.1); Восстановить экземпляр из резервной копии.

ORA-00600: internal error code, arguments: [12333], [a], [b],[c],[d]

Последствия:

Отказ процесса. Физического искажения нет.

Версия:

от 6.0 до 9.2

Источник:

USER/ORACLE INTERFACE LAYER

Причины возникновения:

В результате сетевой ошибки получены плохие данные, приложение клиента послало неправильные данные, данные в сетевом буфере были записаны поверх, всевозможные bug (столбцы LONG).

Действия:

Проверить сетевое соединение и настройки NLS, заменить версию клиента Net на более новую.

ORA-00600: internal error code, arguments: [13001]

Последствия:

Физического искажения нет.

Версия:

от 8.0 до 10.2

Причины возникновения:

Возникает при удалении строк из таблицы, в случаях когда запись уже удалена. Такое обычно происходит если в таблице есть внешний ключ на столбец в этой же таблице. По своей сути не является полноценной ошибкой.

Действия:

Переделать внешний ключ.

ORA-00600: internal error code, arguments: [15419], [a]

Последствия:

Отказ процесса. Физического искажения нет.

Версия:

от 7.0 до 10.1

Источник:

Kernel Kompilation pl/sql Compiler

Причины возникновения:

Всевозможные bug. Для большей информации смотреть дополнительные ошибки в trc файле. Bug: 2829071, 2588469, 2437995

Действия:

Установить заплатки на bug. Если не помогает, модифицируйте PL/SQL код.

ORA-00600: internal error code, arguments: [15735], [a], [b]

Аргумент:

[a] — значение parallel_execution_message_size в котором нуждается запрос, [b] — текущее значение parallel_execution_message_size

Последствия:

Ошибка с записью в trace файл. Физического искажения нет.

Версия:

от 10.1 до 10.2

Причины возникновения:

BUG:5462624.

Действия:

Открыть trc файл ошибки. Найти sql оператор. Для таблиц этого оператора выполнить запрос select table_name, degree from dba_tables where table_name = ». Выбрать таблицы у которых degree ‘1’. Выполнить для каждой таблицы команду alter table noparallel. В качестве второго способа можно порекомендовать увеличить значение параметра parallel_execution_message_size.

ORA-00600: internal error code, arguments: [16607]

Последствия:

Сбой процесса, повреждения данных нет.

Версия:

от 8.0 до 10.1

Источник:

Kernel Generic Library cache Subordinate set/cache manager

Причины возникновения:

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

Действия:

Установить заплатки на bug.

ORA-00600: internal error code, arguments: [17090],[a], [b],[c],[d]

Последствия:

Отказ процесса. Физического искажения нет.

Версия:

от 7.0 до 8.1

Источник:

GENERIC CODE LAYER

Причины возникновения:

Всевозможные bug.

Действия:

Уничтожьте сеанс и связанный с ним процесс.

ORA-00600: internal error code, arguments: [17271], [instantiation space leak]

Последствия:

Сбой процесса.  Повреждения данных нет.

Версия:

до 10.2.0.5

Источник:

Kernel Generic Instantiation manager

Причины возникновения:

Исключение возникает при попытке Oracle деинстанцировать (уничтожить экземпляр) разделяемый объект (курсор) во время выхода из сеанса. В этот момент, Oracle проходит связанный список разделяемых объектов для деинстанцирования,  и находит, что объект был помечен как не разделяемый. Этого не должно быть,  поэтому возникает исключение. Может проявляться при работе с распределёнными базами данных.

Действия:

Игнорировать ошибку. Если ошибка повторяется, то идентифицировать курсор в trace файле и переделать, или поставить последний патч Oracle закрывающий баги.

ORA-00600: internal error code, arguments: [25012], [a], [b]

Аргумент:

[a] — номер табличного пространства, [b] — относительный номер файла БД

Последствия:

Возможно физическое искажение.

Версия:

от 8.0 до 10.1

Источник:

KERNEL FILE MANAGEMENT TABLESPACE COMPONENT

Причины возникновения:

Всевозможные bug ( 4305391, 3915343, 3900237, 3771508, 3751874, 3430832, 3258674, 3150268, 3070856, 2531519, 2526334, 2287815, 2214167, 2212389, 2189615, 2184731, 1968815, 1949273, 1872985).

Действия:

Установить заплатки на bug.

ORA-00600: internal error code, arguments:  [ktspgsb-1]

Последствия:

Повреждение данных.

Версия:

До 10.2.0.5

Причины возникновения:

Ошибка возникает если в объекте (таблице) присутствуют логически повреждённые блоки.  Выполнение команд (TRUNCATE, INSERT и т.д.) применительно к  объекту приводит к этой ошибке.

Действия:

Пересоздание объекта.

ORA-00600: internal error code, arguments: [pfri.c: pfri8: plio mismatch ]

Причины возникновения:

Несоответствие создания экземпляра PL/SQL объекта. Вероятнее всего возникает из-за инвалидации PL/SQL объекта  (bug 9691456, зафиксирован в 11.2.0.2). Проявлялась в триггере на версии 10.2.0.5.

Действия:

Приведение PL/SQL объекта в нормальный статус.

I have SQL SELECT statement that returns:

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

If I narrow my results by adding one more condition in WHERE clause everything is ok.

Anyone knows what is happening?

EDIT:

    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 

EDIT2:

My DB admin suggested solution that works:

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

OMG Ponies's user avatar

OMG Ponies

326k82 gold badges523 silver badges502 bronze badges

asked Feb 4, 2009 at 14:19

Chobicus's user avatar

2

The ORA-0600 error indicates an internal error in Oracle itself. You’re most likely hitting an Oracle bug.

If you go to http://metalink.oracle.com, you can look up the exact bug, if it is known, by pasting the «arguments» and full stack trace into the ORA-0600 lookup tool. See metalink note 153788.1.

If there’s a known bug with that description, it’s likely that there’s already a patch available for you to download and install. If it’s not a known bug, contact support.

answered Feb 4, 2009 at 14:29

Apocalisp's user avatar

ApocalispApocalisp

34.8k8 gold badges106 silver badges156 bronze badges

Good luck with getting support from Oracle…

Seriously though, every time I hit this problem, rearranging the query a little bit usually helps. Maybe fiddling around with the indexes a bit.

answered Feb 4, 2009 at 14:40

Tamas Czinege's user avatar

Tamas CzinegeTamas Czinege

119k40 gold badges151 silver badges176 bronze badges

4

ORA-00600 basically means you’ve crash the oracle server (not the instance, just the server servicing your request).

There will almost always be a trace file in your bdump location. This likely wont be a lot of help you to, but will be very helpful to oracle support.

This is generally caused by an oracle bug, and from experience, there isn’t a lot you can do about them except raise a SR via metalink (this is the recommended solution from Oracle). They will try to replicate the issue and with any luck, if its a bug it will eventually find its way into a patch.

In the immediate term though (eg, days — months) the main realistic solution is work around it.

While raising the SR doesn’t really do alot to help you and can be a frustrating experience, its worth doing, as it might save someone else time once the bug is fixed.

answered Feb 6, 2009 at 4:01

Matthew Watson's user avatar

Matthew WatsonMatthew Watson

14.1k9 gold badges62 silver badges82 bronze badges

0

These bugs are usually related to the optimizer. I think even the smallest change in the query like switching the order of table1 and table2 in the FROM clause might force the optimizer to choose a different plan that will not encounter this error.

answered Feb 4, 2009 at 16:12

Tal's user avatar

My solution:

Problem

enter image description here

THIS DIDNT WORK WAS GETTING ERROR [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], [], [], [], [], [], [], []`

HERE IS MY SOLUTION TO THE PROBLEM:

    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.

FINALLY IT WORKED:

enter image description here

answered Jan 23, 2014 at 3:23

z atef's user avatar

z atefz atef

7,1383 gold badges55 silver badges50 bronze badges

ORA-00600 generally means that there is something highly unexpected and it might be linked to the database corruption. The symptoms can be that query works or not depending on how it is formulated.

Life example:

  • LOB field update went wrong for a particular row with id=<ID>
  • The row is not visible with SELECT * FROM <table>
  • But: SELECT * FROM <table> WHERE id=<ID> fails to execute and gives ORA-006000.

(Possible) Solution used to the above example

  • export all accessible table contents
  • delete table
  • reimport the contents

Good Luck!

answered Jan 23, 2019 at 9:57

Witold Kaczurba's user avatar

Witold KaczurbaWitold Kaczurba

9,8753 gold badges58 silver badges67 bronze badges

I have seen errors like this when there are XMLTYPE columns in the table, using PL/SQL Developer. It wouldn’t happen if I had PL/SQL Developer create the query skeleton for me because it would add some syntax to the XMLTYPE column request, I can’t remember exactly what.

answered Feb 4, 2009 at 14:23

Dave Swersky's user avatar

Dave SwerskyDave Swersky

34.5k9 gold badges78 silver badges118 bronze badges

1

I encountered this in a situation with a record type that involved USER_TAB_COLS. I had used VARCHAR2(128) for the field in the record that was supposed to hold USER_TAB_COLS.DATA_DEFAULT. Well, that’s a LONG, for whatever reason, and while this mapping worked OK when I ran the code in a command window (PL/SQL Developer), it failed when I embedded the very same in an umbrella script that did all sorts of tasks. Once I set the data type of the record correctly to use an anchored type (USER_TAB_COLS.DATA_DEFAULT%TYPE) instead of VARCHAR2(128), the sp that does the work runs in either context. I was buffaloed by the fact that it worked ‘stand-alone’ but not when called from another script.
Here is the record type I was using:

TYPE PON_DICT_RECORD_TYPE Is RECORD(
    TABLE_NAME USER_TAB_COLS.TABLE_NAME%TYPE,
    PK         NUMBER(1),
    REQUIRED   NUMBER(1),
    COL_ORDER  NUMBER(3),
    COL_NAME   USER_TAB_COLS.COLUMN_NAME%TYPE,
    DATA_TYPE  USER_TAB_COLS.DATA_TYPE%TYPE,
    LENGTH     NUMBER(4),
    SCALE      NUMBER(2),
    DEF_VALUE  USER_TAB_COLS.data_default%TYPE, -- a LONG in U T C
    ID         NUMBER(1),
    FORCE_DEF  NUMBER(1),
    ACTIVE_PK NUMBER(1),
    NEW_COL_OLD_TABLE NUMBER(1),
    REPLACEMENT_KEY NUMBER(1)
    );

  TYPE PON_DICT_TABLE_TYPE IS TABLE OF PON_DICT_RECORD_TYPE;

  pdtab PON_DICT_TABLE_TYPE;

where you can see the definition of field DEF_VALUE is now an anchored type.

This was bizarre, I have to say. I would have expected it to fail in both contexts.

answered Jun 14 at 18:56

Allen's user avatar

AllenAllen

5465 silver badges12 bronze badges

Работая с базой данных Oracle в режиме действующего Standby сервера, вы можете столкнуться с появлением ошибок ORA-600 [3020] и ORA-752. Что это такое и как с этим бороться? Об этом и поговорим в данной статье.



Что такое  ПОТЕРЯННАЯ ЗАПИСЬ (LOST WRITE) в Oracle?

Потеря записи происходит, когда подсистема ввода-вывода подтверждает завершение блочной записи, даже если записи не выполнялись изначально. Другая ситуация — когда прежняя копия блока перезаписывает текущее его содержимое.

Признаки возникновения ошибки

Ошибка ORA-600 [3020] stuck recovery error могла произойти в Standby базе данных по нескольким причинам, включая ORA-752 на основном сервере.

ВАЖНОЕ ЗАМЕЧАНИЕ! НЕ восстанавливайте Standby сервер из резервной копии, взятой с основного сервера, так как это также приведет к повреждению Standby !

Возможные решения

Во-первых, немедленно откройте обращение в службу поддержки Oracle!

  • Ошибка ORA-752 однозначно определяет потерю записи на Основном сервере. Рассмотрите возможность немедленного переключения на Standby, если целостность данных критична и возможны некоторые потери данных.
  • Просмотрите файл журнала предупреждений (alert log) для получения дополнительной информации (сделайте резервную копию файла журнала предупреждений на удаленное место).
  • Просмотрите файлы трассировки, созданные с помощью представления:
SQL> select originating_timestamp, detailed_location,message_level, message_text, problem_key 
from  V$diag_alert_ext 
   where message_level=1 and message_text like’%ORA-00600%’ 
     order by originating_timestamp desc;
  • Проверьте журналы ОС:
cd /var/log

ls -l message*
  • Сделайте несколько дампов для службы поддержки Oracle, чтобы помочь им разобраться в ситуации:

Дамп контрольных файлов (controlfiles):

SQL> alter session set events ‘immediate trace name controlf level xx’;

Дамп заголовков файлов данных:

SQL> alter session set events ‘immediate trace name file_hdrs level 10’;

Дамп заголовков журнала повторов:

SQL> alter session set events ‘immediate trace name redohdr level 10’;
  • В сообщении журнала предупреждений будет указан номер файла данных вместе с соответствующим номером блока (замените значения & file_number, & block_number на свои значения в запросе):
SQL> spool /exp/oraxx1/corrupted_file_info.txt

SQL> Select * from DBA_EXTENTS where FILE_ID=&file_number and  &block_number BETWEEN BLOCK_ID and BLOCK_ID+BLOCKS-1;

SQL> spool off;

SQL> spool /exp/oraxx1/object_number.txt

SQL> Select * from DBA_OBJECTS    where DATA_OBJECT_ID = &object_number;

SQL> spool off;
  • Если возможно, удалите и воссоздайте затронутые ошибкой объекты в Основной базе данных (проведите хороший анализ):

После воссоздания объектов используйте следующую процедуру, чтобы пропустить поврежденный блок в STANDBY базу:

Временно отключите защиту от потери записи в STANDBY:

SQL> ALTER SYSTEM SET DB_LOST_WRITE_PROTECT = NONE;

Позвольте восстановлению продолжаться, несмотря на повреждение блоков, запустив команду RECOVER с предложением ALLOW n CORRUPTION, где n — количество допустимых поврежденных блоков:

SQL> alter database recover automatic standby database
                            allow 1 corruption;

Как только журнал предупреждений покажет, что блоки помечены как поврежденные, перезапустите управляемое восстановление:

SQL> alter database recover cancel;

SQL> alter database recover managed standby database using current logfile disconnect;
  • Если затронутые объекты не могут быть воссозданы, активируйте резервную (стэндбай) базу данных. При активации STANDBY базы данных вы столкнетесь с потерей некоторых данных, но целостность данных будет обеспечена.

Выполните следующий оператор SQL в резервной базе данных, чтобы преобразовать ее в основную:

SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;

Затем немедленно создайте резервную копию базы данных.

Обнаружение и защита от утерянных записей (LOST WRITES)

Установите параметр инициализации DB_LOST_WRITE_PROTECT в значение TYPICAL в первичной и стэндбай базах данных, если ваша база данных 18c, вы можете использовать новую функцию «shadow tablespace».

*** Настройка shadow tablespace:

убедитесь, что для параметра совместимости установлен в значение 18.0:

SQL> show parameter compatible

NAME          TYPE        VALUE
————————————  ———–        ——————————
compatible    string      18.0.0

SQL> create bigfile tablespace SHADOW datafile ‘/orad04/oradbp02/shadow.dbf’ size 120M AUTOEXTEND ON lost write protection;

SQL> select tablespace_name 
     from dba_tablespaces where CONTENTS=’LOST 
       WRITE PROTECTION’;

SQL> select tablespace_name, status,bigfile, contents, logging, allocation_type, encrypted, lost_write_protect, chunk_tablespace 
     from dba_tablespaces 
       where tablespace_name=’SHADOW’;

....

// для активации LOST WRITE PROTECTION:

SQL> alter database enable lost write protection;

// для отключения LOST WRITE PROTECTION:

SQL> ALTER DATABASE DISABLE LOST WRITE PROTECTION;

SQL> select * from new_lost_write_datafiles$;

ПРИМЕЧАНИЕ: вы также можете включить теневую защиту от потери записи для табличного пространства или на  уровне файла данных.

Вас заинтересует / Intresting for you:

ORA-00600

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

Причина:

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

Действие:

Информируйте об этой ошибке как о программной вашего представителя Customer Support.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка 600 busy everywhere
  • Ошибка 60 c9ab0 2ab02lb5
  • Ошибка 6 при запуске айфон 6
  • Ошибка 6 неверный дескриптор что делать
  • Ошибка 5с20 canon mp540

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии