love wife & love life —Roger的Oracle&MySQL技术博客

Phone:18180207355 提供专业Oracle&MySQL数据恢复、性能优化、迁移升级、紧急救援等服务

bootstrap$核心对象数据不一致导致ORA-08102

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger的Oracle&MySQL技术博客

本文链接地址: bootstrap$核心对象数据不一致导致ORA-08102

昨天准备研究11g的query cache result 特性,准备用10g的老方法来直接通过
show parameter xxxx的方式来查看隐含参数,发现下面的创建视图语句居然报错ora-08102
如下是创建视图的脚本,后面是错误:


从上面的8102错误来看,很明显是数据字典信息不一致了,也就是说该记录在ind$可能已经被清除了,
而在obj$中还存在。我们来看看obj# 39是什么对象?


对于ora-08102错误,如果是发生在index上,那么我们直接drop index然后重建就ok了。
那我们来试试直接重建会怎么样?


到这里,可能有人会问,为什么使用event 38003或migrate 模式无法rebuild 该index呢?
很简单,该index的obj# <56, 换句话说,也就是对于bootstrap$核心对象是无法通过上面 的2种方式来完成重建的。

通常来说到这个地步,如果不使用其他手段的话,那么只能使用ODU或DUL进行抽取数据然后重建数据库了。
其实对于这个问题,我们可以借助BBED来进行修复。
既然是数据不一致,那么我就想知道到底是哪儿不一致了?metalink 提供处理ora-8102的方法:

从这里来看,_NEXT_OBJECT是ok的。那么我们重点就放在TEST01上了。
到这里,看到test01,我才想起这是很久以前做关于手工构造某个由于数据字典信息不一致而引发的某个600错误
而留下的隐患。

根据前面的报错,我们找到相应的trace,发现如下信息:


这里简单的进行说明:
ncol — 表示列数目
len — 表示长度
key: ():

关于ora-08012错误,大家可以参考

OERR: ORA-8102 “index key not found, obj# %s, file %s, block %s (%s)” [ID 8102.1]

下面我们继续,既然该block有问题,那么我就dump该block。

最后尝试创建视图,发现一切正常,如下:

10 Responses to “bootstrap$核心对象数据不一致导致ORA-08102”

  1. saints jerseys Says:

    There may be noticeably a bundle to know about this. I assume you made sure nice points in options also.

  2. Forex trading software Says:

    Lots of beneficial in a row. I give rise to bookmarked your place.

  3. Arnold Baldasaro Says:

    Good day! I just would like to offer you a huge thumbs up for your great info you have right here on this post. I will be returning to your website from my own http://how-to-break-up.tumblr.com for more soon.

  4. bootstrap$核心对象数据不一致导致ORA-08102 - Oracle - 开发者第994665个问答 Says:

    […] 原帖:http://www.killdb.com/?p=201   本文参考了dbsnake和老白的部分方法,再次感谢两位! […]

  5. hunt1574 Says:

    SELECT 2131+44+24*3 FROM dual;

    请问下这个44及24*3是怎么来的?

  6. xccheese Says:

    N+44+24*itl N是行数据的补偿 44是 kcbh(cache层)长度+ktbbh(事务层)长度 24是一个itl的长度 总共加起来其实就是行数据的offset

  7. hongfei Says:

    能否说明下modify /x 14 offset 2235 是怎么算出来的吗?

  8. yangjiawei Says:

    下面的兄弟你自己看一下,主要是ind$和obj$上对于这个索引的这个这个数据上的值不一样而已,呵呵~!

  9. How to recreate Bootstrap Index(I_OBJ1,I_USER1,I_FILE#_BLOCK#) to fix ORA-00701 ? | love wife & love life —Roger 的Oracle技术博客 Says:

    […] 几年前之前也写过一篇通过bbed来修复bootstrap 核心数据index创建时出现ora-08102错误的例子:bootstrap$核心对象数据不一致导致ORA-08102 […]

  10. desert_xu Says:

    2253-2247=6 ,需要修改 的数据 c3 08 23 0a => c3 08 23 14 ,即 把0a 改成 14 ,0a 的位置偏移量为 6

    2247 2248 2249 2250 2251 2252 2253

    01 03 04 c3 08 23 0a

Leave a Reply

You must be logged in to post a comment.