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.vnqiangxi.cn/?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.

百度彩票APP