Ошибка kdtigetrow-2 при интеграции

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

Это ошибка:

MERGE INTO vacations vac
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kdtigetrow-2], [25], [40], [39],
[], [], [], [], [], [], [], []

Это исходная таблица:

    create table TEMP_VACATIONS
(
  idd       VARCHAR2(10),
  start_date   VARCHAR2(10),
  end_date     VARCHAR2(10),
  day_count    VARCHAR2(10),
  vac_type     VARCHAR2(10),
  arrival_date DATE
)

Это таблица назначения:

    create table VACATIONS
    (
      user_id       NUMBER(10) not null,
      start_date    DATE not null,
      end_date      DATE not null,
      days_count    NUMBER(3) not null,
      vacation_type INTEGER,
      arrival_date  VARCHAR2(20),
      idd        NUMBER(10)
    )
    alter table SPENT_VACATIONS
  add constraint SPENT_VACATIONS$PK primary key (USER_ID, START_DATE)
  using index 
  tablespace ARCV25
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 320K
    next 1M
    minextents 1
    maxextents unlimited
  );

и это сценарий:

MERGE INTO vacations vac
    USING temp_vacations tmpvac
    ON (vac.user_id = TO_NUMBER(tmpvac.idd) AND vac.start_date = TO_DATE(tmpvac.start_date, 'dd.mm.yyyy') AND vac.end_date = TO_DATE(tmpvac.end_date, 'dd.mm.yyyy'))
    WHEN NOT MATCHED THEN
         INSERT (vac.user_id, vac.start_date, vac.end_date, vac.days_count, vac.vacation_type, vac.arrival_date)
         VALUES (TO_NUMBER(tmpvac.idd), TO_DATE(tmpvac.start_date, 'dd.mm.yyyy'), TO_DATE(tmpvac.end_date, 'dd.mm.yyyy'), tmpvac.day_count, tmpvac.vac_type, TO_CHAR(tmpvac.arrival_date, 'dd.mm.yyyy'))
    LOG ERRORS INTO stara.migration_err('File: STARA_EHR.SPOLO.TXT => merge operation => annual_vacations')  REJECT LIMIT UNLIMITED;
COMMIT; 

Оракул версия:

Oracle Database 11g Release 11.2.0.2.0

Возможно ли, что эта ошибка возникает во время разговора типа (char => date или char => number)?

Как я могу исправить эту внутреннюю ошибку? Нужно ли откатывать базу данных на предыдущую резервную копию?

Заранее спасибо.

3 ответа

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

Конечно, если у вас нет контракта на поддержку, этот совет не очень полезен. К сожалению, нам трудно быть более полезным. В журнале оповещений должна быть дополнительная информация, а также может быть файл трассировки. Вам, вероятно, придется попросить администратора базы данных помочь вам с этим.

В противном случае вы можете попробовать поискать в интернете. Первый параметр указывает конкретное событие, т.е. [kdtigetrow-2], Я нашел его статью в блоге, но сценарий автора, похоже, сильно отличается от вашего.

Мы обновили базу данных Oracle до 11.2.0.3 с последним патчем 21. Теперь все работает хорошо:-)

Это звучит как повреждение индекса. Отключите ограничение, удалите индекс, заново создайте индекс и снова включите ограничение.

Другие вопросы по тегам