@H_404_0@Oracle写丢失错误恢复后的全局索引和分区索引的处理方式
@H_404_0@
@H_404_0@从掉电中恢复过来后,数据库的一些表能访问但是不能insert,update,以我的经验来判断很有可能表上的全局索引和影响到的那个分区的分区索引出现了问题,
@H_404_0@我的处理方式是:
@H_404_0@1、在恢复的时候有备份的那就按照备份来;
@H_404_0@2、有时候当前redo坏掉了,数据库能起来,但是数据还是会丢,除非只是用备份,以及一致的归档日志;
@H_404_0@3、不然数据还是会丢,并且出现不一致的情况,那么索引也是如此;
@H_404_0@4、具体我的处理是,rebuild全局索引,rebuild某个分区的索引,意思是说分区索引只rebuild一个分区;
@H_404_0@alter index g_index rebuild online;
@H_404_0@alter index p_index rebuild partition p_name;
@H_404_0@一般报的错就能意识到。
@H_404_0@如果幸运的话,那么以上重建后也就好了。
@H_404_0@有时候还会出现对象不存在的情况,出问题的分区也无法truncate,会报对象不存在的错误,很莫名其妙。
@H_404_0@这个是Oracle会去检查对象号和对象类型的一致性,有时候调整参数"_db_block_check_objtyp"参数为false就解决了,
@H_404_0@如果解决了的话还算比较幸运的,我碰到的情况又出现了别的问题,后来我只能完全重建了一个表,将数据导入到新表,
@H_404_0@然后rename表,将问题解决。