Email: service@parnassusdata.com 7 x 24 online support!

    You are here

    • You are here:
    • Home > Blogs > PDSERVICE's blog > Oracle ORA-8102 损坏索引,ORA-1499 即使在drop并重建索引后 ORA-08102: 未找到索引关键字, 对象号 , 文件 , 块 ()

Oracle ORA-8102 损坏索引,ORA-1499 即使在drop并重建索引后 ORA-08102: 未找到索引关键字, 对象号 , 文件 , 块 ()

Oracle ORA-8102 损坏索引,ORA-1499 即使在drop并重建索引后 ORA-08102: 未找到索引关键字, 对象号 , 文件 , 块 ()

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

ORA-08102: 未找到索引关键字, 对象号 , 文件 , 块  ()

 

ORA-08102
oerr ora 8102
08102, 00000, "index key not found, obj# %s, file %s, block %s (%s)"
// *Cause: Internal error: possible inconsistency in index
// *Action: Send trace file to your customer support representative, along
// with information on reproducing the error


ORA-01499
oerr ora 1499
01499, 00000, "table/index cross reference failure - see trace file"
// *Cause:
// *Action:

 

 

 

问题摘要行:

=====================

ORA-8102, ORA-1499 EVEN AFTER DROPPING AND RECREATING INDEX

 

Problem Description:

====================

ORA-8102 occurs when accessing a table.

 

08102, 00000, “index key not found, obj# %s, dba %s (%s)”

// *Cause:  Internal error: possible inconsistency in index

// *Action:  Send trace file to your customer support representative, along

//with information on reproducing the error

 

通过使用OBJ#从错误消息中找出有问题的对象:

 

select OWNER,OBJECT_NAME, OBJECT_TYPE from DBA_OBJECTS

where OBJECT_ID=<object#_from_error>;

 

如果返回的对象是一个索引,使用上述查询返回的值,通过以下查询找出与其相关联的表:

 

SELECT TABLE_NAME FROM DBA_INDEXES

WHERE INDEX_NAME=<object_name> AND OWNER=<owner>;

 

接着,分析表来确定索引中不一致的类型:

 

ANALYZE TABLE <owner>.<table_name> VALIDATE STRUCTURE CASCADE;

 

使用CASCADE子句是很重要的,因为分别验证的表和索引结构不会显示不一致性。

 

analyze 命令返回ORA-1499

01499, 00000, “table/index cross reference failure – see trace file”

 

检查在user_dump_dest 中生成的跟踪文件,显示cross reference 失败的类型。在这个情况中,类型是”row not found in index”。

Oracle Support 能帮助你确定哪个索引有丢失行条目。

 

普通的drop并创建索引的解决方法不适用于这种情况。使用VALIDATE STRUCTURE CASCADE 分析表仍返回ORA-1499,即使在重建了索引之后。

=====================

 

通过export/import 重建表,然后重建解决问题的索引。

 

 

说明:

============

 

There was a row in the table without a corresponding index entry. The normal

way to resolve this is to drop and recreate the index.  IMPORTANT: Rebuilding

the index will NOT resolve this error as the existing index, which is missing

the row, will be used to rebuild the index.  Dropping and recreating the index

forces Oracle to recreate the index from the table data.  This was most likely

caused by some type of hardware problem as the problem failed to be reproduced

in house.

 

在表中有一行没有对应的索引条目。解决的正常方法这是drop并重建索引。重要提示:重建该索引将不会解决这个错误,因为现有的丢失行的索引将用于重建索引。drop并重建索引强制Oracle从表数据重建索引。这最有可能是由某种类型的硬件问题引起的,因为问题未能被再现。