我正面临这个错误,由于这个错误,整个系统似乎正在下降。在检查了所有日志之后,我发现一个目标表可能是问题所在。
这是错误:
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)?
我该如何修复该内部错误?我需要将数据库回滚到以前的备份吗?
提前致谢。