集成过程中出现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版本为:

Oracle Database 11g Release 11.2.0.2.0

此错误是否可能发生在类型对话(char=>日期或char=>数字)期间?

我该如何修复该内部错误?是否需要将数据库回滚到以前的备份?

提前谢谢。

ORA-00600是Oracle的通用代码,用于发出意外内部行为(即错误)的信号。标准建议是联系Oracle支持部门,因为根据这些事情的性质,它们往往非常特定于数据库版本、平台和大量其他变量。很有可能你需要一个补丁来解决这个问题,或者只是升级到最新版本。

当然,如果你没有支持合同,那么这个建议并不是很有用。不幸的是,我们很难提供更多帮助。警报日志中应该有进一步的信息,并且可能还有跟踪文件。你可能需要请一位DBA来帮助你

否则,你可以尝试在互联网上搜索。第一个参数指示特定事件,即[kdtigetrow-2]。我确实在博客上找到了这篇文章,但作者的情景似乎与你的截然不同。

我们已经使用最新的补丁21将Oracle数据库升级到11.2.0.3。现在一切都很好:-)

这听起来像是索引损坏。禁用约束,删除索引,重新创建索引,然后再次启用约束。

最新更新