0

在执行以下查询时,我收到错误:

ORA-00600:内部错误代码,参数:[13013]、[5001]、[1675658]、[773963968]、[10]、[773963968]、[17]、[]

MERGE INTO nbfc_address_m t1
USING (SELECT a.col2, b.lesseeid
        FROM DT_AMRID a,
        LEA_AGREEMENT_DTL b
        WHERE a.agrid=b.agreementid) t2
ON (t1.bpid=t2.lesseeid)
WHEN MATCHED THEN
UPDATE SET t1.mobile=t2.col2

这是为了更新手机号码。

4

2 回答 2

3

具体的,不太有用的答案

在 5001 次尝试之后,Oracle 正在尝试获取一组稳定的行来更新并且无法更新。

以下是参数的含义:

  • [13013] ==> 表示问题是无法识别要更新的稳定行集
  • [5001] ==> Oracle 尝试的次数
  • [1675658] => 数据对象编号 ( SELECT * FROM DBA_OBJECTS WHERE DATA_OBJECT_ID = 1675658)
  • [773963968] => 表空间相关数据块地址
  • [10] ==> 行槽号
  • [773963968] ==> 正在更新的块的十进制相对数据块地址
  • [17] ==> 内部代码
  • [] ==> 未使用

尝试什么:

首先,检查表索引中的块损坏:ANALYZE TABLE <table_name> VALIDATE STRUCTURE CASCADE. 然后删除并重新创建显示问题的索引。

一般,更有用的答案

好的,我怎么知道以上所有内容(假设它甚至是正确的)?...

“ORA-00600”、“ORA-00700”和“ORA-07445”错误是内部Oracle 错误。唯一真正能够诊断/解释/修复它们的实体是甲骨文公司。为此,Oracle 在其支持网站http://support.oracle.com上提供了一个诊断工具。这是他们网站上的文档 ID 153788.1(尽管您也可以在他们的网站上搜索“ORA-600 工具”)。

使用该工具,您可以输入 ORA-00600 错误的详细信息(通常只是第一个参数 - 在您的情况下为“13013”),如果幸运的话,它会将您重定向到一个告诉您所有相关信息的注释。

于 2019-07-05T14:48:40.830 回答
0

这可能是由 Oracle 内存损坏引起的。

尝试 -

  1. 在查询中使用的两个表上删除并重新创建索引。
  2. 刷新数据库缓存内存
  3. 尝试在会话级别添加表所有者前缀

它必须帮助你。

干杯!!

于 2019-07-05T11:57:33.477 回答