ora-08102

简介:

今天两次遇到ora-08102的错误,在删除表的数据时

 

在执行如下语句时:

delete from tb_ware w where w.issue like '%04%';

 

遇到下面的错;

 

ora-08102:index key not found,obj#57848,file 6, block 6324(2)

 

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

// *Action: Send trace file to your customer support representative, along
// with information on reproducing the error

*******************************************************************************


ora-08102这种错误说明索引或表出现了数据不一致的,索引上记录的键值和表里的数据不一致,引起
访问失败,一般重建下索引就可以解决


解决方法一:

 

SELECT owner, object_name, object_type
FROM Dba_Objects
WHERE object_id IN (57848);


可以查出object_name的名字,发现是表TB_WARE的索引,然后重建索引

 

alter index PK_TB_WARE rebuild online; (记得要用rebuild online ,因为他会重新读表来创建索引,而rebuild可能会读取原先的索引段而不会去读表)

 

 

注意,这个时候千万不要人为终止,如果你真的那样的话你会遇到ora-08104

 

如果还不能解决,就删除重新创建

 

select index_name,column_name from all_ind_columns 
where index_name='PK_TB_WARE';


drop index PK_TB_WARE;

 

create index PK_TB_WARE on tb_ware(id);

 

 

解决方法二:

 

analyze table t validate structure cascade

 

检查表里的行数据的完全性,并检查表或者索引的结构,并把分析过的结果写入INDEX_STATS 数据字典中


这个方法我没有尝试,我尝试再让问题重现,尝试好几次也没有在出现

 

 

---------------------------------

 

 

现在回到我的问题上,我在rebuild online一个索引后,它又提示下一个索引有问题,我索性就把这个表所有的索引都rebuild online

 

查出这个表的索引


select * from user_indexes t where t.table_name= upper('tb_ware')

 

 

组装成下面的语句执行:

 

alter index PK_TB_WARE rebuild online; 
alter index AK_TB_WARE rebuild online; 
alter index IDX_TB_WARE_PRINTSTATE rebuild online; 
alter index IDX_WARE_END_TIME rebuild online; 
alter index IDX_WARE_LOTTERY_ID rebuild online; 
alter index IDX_WARE_LOTTERY_STATE rebuild online; 
alter index IDX_WARE_TEAM_NAME rebuild online;


再次使用这个表,或到alert.log里就没有ora-08102的错误了

 


---end----











本文转自东方之子736651CTO博客,原文链接:http://blog.51cto.com/ecloud/1580072 ,如需转载请自行联系原作者





相关文章
|
网络协议
ORA-12557
ORA-12557
103 0
|
Oracle 关系型数据库 数据库
ORA-00742 ORA-00312特殊恢复
ORA-00742 ORA-00312特殊恢复
679 0
|
关系型数据库 Oracle
|
SQL 数据库 关系型数据库
|
Oracle 关系型数据库
|
SQL Oracle 关系型数据库
ORA-00704、ORA-39700处理
文章版权所有Jusin Hao(luckyfriends),支持原创,转载请注明。 原来的数据库11.2.0.1,现在安装的是11.2.0.3 SQL> alter database open; alter database open ...
1004 0
|
Oracle 关系型数据库 Go
ORA-32017 ORA-00096问题
<div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; font-size:14px; line-height:23px"> <div><br></div> <div><br></div> <div>1</div> <div><br></div> <div>SQL&gt; alter system se
3311 0
|
SQL
ORA-00604 ORA-14452 ORA-20783
<div class="Blog_tit4 Blog_tit5" style="word-wrap:break-word; border-bottom-width:0px; padding:0px 0px 11px"> <div class="Blog_tit4 Blog_tit5" style="word-wrap:break-word; border-bottom-width:0px
3143 0