如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
Oracle Server – 标准版 – 版本: 10.1.0.3
该问题会发生在任何平台.
症状
在索引组织表(IOT)中试图删除行时会报告ORA-8102错误(Index Key Not Found)
它产生了带有相似条目的跟踪文件
ORA-08102: index key not found, obj# <object_id>, file <file#>, block <block#>
(3) delete from <table> where <primary key> = <value>
‘分析表验证结构‘ 和 ‘分析表验证结构‘ 成功,没有出现错误
跟踪文件的例子如下
oer 8102.3 – obj# 192539, rdba: 0x03418552(afn 13, blk# 99666)
原因
错误: 4904810 ORA-8102 CORRUPTION REPEATED ON SAME TABLE/INDEX 报告同一个问题。
这个问题好像是IOT的导入导出中保持的原始 IOT的不一致性,不知为何,它和导入过程中IOT表上的唯一限制的创建有关,如果该表用 CONSTRAINTS=N导入,错误就不会再次出现,即使导入完成后,唯一限制被增加到表上。 同时,如果表和唯一限制预先创建,用IGNORE=Y运行导入,错误再也不会重新产生,同样地,如果表和唯一限制在另一种模式下创建,在运行选择时插入,错误也不会再次出现。
解决方法
通常情况下解决此错误的行动方案是删除并重新创建索引,但由于这是一个IOT,所以是不可能的。
解决方法:
通过指定IOT表的主键的两个组成部分删除个别行。
即,
光标 : select <primary key> from <table> where <primary key> = :val ( 相同的值导致删除失败)
循环中的光标: delete from <table> where <primary key> = cursor.<primary key>;
参考文献
BUG:5020090 – Ora-8102 (Index Key Not Found) During A Delete
Leave a Reply