Ошибка 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. Теперь все работает хорошо:-)
Это звучит как повреждение индекса. Отключите ограничение, удалите индекс, заново создайте индекс и снова включите ограничение.