0

我正面临这个错误,由于这个错误,整个系统似乎正在下降。在检查了所有日志之后,我发现一个目标表可能是问题所在。

这是错误:

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)?

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

提前致谢。

4

3 回答 3

3

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

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

否则,您可以尝试搜索互联网。第一个参数表示特定事件,即[kdtigetrow-2]。我确实在博客上找到了他的文章,但作者的情况似乎与您的情况大不相同。

于 2013-06-26T11:15:52.867 回答
2

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

于 2013-07-01T10:58:45.263 回答
0

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

于 2013-06-27T05:57:49.980 回答