使用BBED幫助理解Oracle資料塊結構
by
[@more@]BBED是Oracle提供的塊編輯器,藉助BBED,可以幫助我們更好的理解Oracle的Block的結構。當然,反過來說,也只有更加理解塊的結構,才能更好的利用BBED完成某些特殊情況下的災難恢復。
Oracle Data Block的結構簡圖如下,其中從Data header到Row Data部分合稱Data Layer:
--------------------- - Cache Layer - --------------------- - Transaction Layer - --------------------- - Data Header - --------------------- - Table Directory - --------------------- - Row Directory - --------------------- - Free Space - --------------------- - Row Data - --------------------- - Tailchk - ---------------------
透過bbed的map命令,可以看到資料塊內部的一些資料結構名:
BBED> map File: /u01/oracle/oradata/dbmon/system.dbf (1) Block: 31729 Dba:0x00407bf1 ------------------------------------------------------------ KTB Data Block (Table/Cluster) struct kcbh, 20 bytes @0 struct ktbbh, 72 bytes @20 struct kdbh, 14 bytes @92 struct kdbt[1], 4 bytes @106 sb2 kdbr[336] @110 ub1 freespace[821] @782 ub1 rowdata[6585] @1603 ub4 tailchk @8188
Cache Layer:Block的第一部分,長度為20位元組,內部資料結構名為kcbh,包括
type_kcbh:塊型別(table/index,rollback segment,temporary segment等)
frmt_kcbh:塊格式(v6,v7,v8)
rdba_kcbh:塊地址DBA
bas_kcbh/wrp_kcbh:SCN(用於做recovery時排序)
seq_kcbh:塊的序列號(sequnce number)
flg_kcbh:塊的標誌
BBED> p kcbh struct kcbh, 20 bytes @0 ub1 type_kcbh @0 0x06 ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00407bf1 ub4 bas_kcbh @8 0xd6449de8 ub2 wrp_kcbh @12 0x0595 ub1 seq_kcbh @14 0x03 ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x9130 ub2 spare3_kcbh @18 0x0000
Transaction Layer:內部結構名kcbbh。分成兩部分,第一部分為固定長度,長度為24位元組,包含事務相關的一些基本資訊。第二部分為可變長度,包含itl,長度根據itl條目的個數變化,每個itl長度為24位元組,內部結構名ktbbhitl。
BBED> p ktbbh struct ktbbh, 72 bytes @20 ub1 ktbbhtyp @20 0x01 (KDDBTDATA) union ktbbhsid, 4 bytes @24 ub4 ktbbhsg1 @24 0x000050fc ub4 ktbbhod1 @24 0x000050fc struct ktbbhcsc, 8 bytes @28 ub4 kscnbas @28 0xd6449de7 ub2 kscnwrp @32 0x0595 b2 ktbbhict @36 2 ub1 ktbbhflg @38 0x02 (NONE) ub1 ktbbhfsl @39 0x00 ub4 ktbbhfnx @40 0x00000000 struct ktbbhitl[0], 24 bytes @44 struct ktbitxid, 8 bytes @44 ub2 kxidusn @44 0x0008 ub2 kxidslt @46 0x000c ub4 kxidsqn @48 0x0000e991 struct ktbituba, 8 bytes @52 ub4 kubadba @52 0x0080222e ub2 kubaseq @56 0x03a4 ub1 kubarec @58 0x22 ub2 ktbitflg @60 0x8000 (KTBFCOM) union _ktbitun, 2 bytes @62 b2 _ktbitfsc @62 1429 ub2 _ktbitwrp @62 0x0595 ub4 ktbitbas @64 0xd6449de6 struct ktbbhitl[1], 24 bytes @68 struct ktbitxid, 8 bytes @68 ub2 kxidusn @68 0x0008 ub2 kxidslt @70 0x0015 ub4 kxidsqn @72 0x0000e992 struct ktbituba, 8 bytes @76 ub4 kubadba @76 0x0080222e ub2 kubaseq @80 0x03a4 ub1 kubarec @82 0x23 ub2 ktbitflg @84 0x0001 (NONE) union _ktbitun, 2 bytes @86 b2 _ktbitfsc @86 0 ub2 _ktbitwrp @86 0x0000 ub4 ktbitbas @88 0x00000000
Data Layer:包括Data Header,Table Directory,Row Directory,Free Space和Row Data。其中
Data Header:長度14位元組,內部資料結構名kdbh
BBED> p kdbh struct kdbh, 14 bytes @92 ub1 kdbhflag @92 0x00 (NONE) b1 kdbhntab @93 1 b2 kdbhnrow @94 336 sb2 kdbhfrre @96 -1 sb2 kdbhfsbo @98 690 sb2 kdbhfseo @100 1511 b2 kdbhavsp @102 821 b2 kdbhtosp @104 821
Table Directory: 一般table只有一個條目,cluster則有一個或多個條目。每個條目長4位元組,內部資料結構名kdbt。
BBED> p kdbt struct kdbt[0], 4 bytes @106 b2 kdbtoffs @106 0 b2 kdbtnrow @108 336
Row Directory:數目由塊中資料的行數決定,每個條目長2位元組,內部資料結構名kdbr
BBED> p kdbr sb2 kdbr[0] @110 7998 sb2 kdbr[1] @112 8017 ... sb2 kdbr[335] @780 1511
Free Space:表示資料塊中可用空間,內部資料結構名freespace
Row Data:表示實際的資料,內部資料結構名rowdata
Tailchk:儲存在塊結尾用於校驗的資料,長度4個位元組,內部結構名tailchk。
BBED>p tailchk ub4 tailchk @8188 0x9de80603
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8193225/viewspace-1028930/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20210906]bbed讀取資料塊(bbed-wrap.sh).txt
- [20210318]bbed讀取資料塊.txt
- oracle asm 資料塊重構恢復OracleASM
- [20210401]使用bbed讀取資料塊恢復注意6.txt
- Oracle 之利用BBED修改資料塊SCN----沒有備份資料檔案的資料恢復Oracle資料恢復
- chan資料結構與理解資料結構
- 【kingsql分享】使用BBED修改Oracle資料檔案頭推進SCNSQLOracle
- 大資料尋求幫助!大資料
- [20210831]bbed讀取資料塊6.txt
- [20210323]bbed讀取資料塊5.txt
- [20210318]bbed讀取資料塊2.txt
- [20210319]bbed讀取資料塊3.txt
- Oracle資料塊格式Oracle
- 資料結構之Stack | 讓我們一塊來學習資料結構資料結構
- 資料結構之Queue | 讓我們一塊來學習資料結構資料結構
- 資料結構之Set | 讓我們一塊來學習資料結構資料結構
- 資料結構之LinkedList | 讓我們一塊來學習資料結構資料結構
- Agile PLM資料庫表結構(Oracle)資料庫Oracle
- 【SqlServer】 理解資料庫中的資料頁結構SQLServer資料庫
- go中map的資料結構理解Go資料結構
- [20210930]bbed讀取資料塊7 fffext.sh.txt
- 網頁抓取如何幫助資料分析?網頁
- 【許曉笛】EOS 區塊資料結構資料結構
- 深入理解Redis 資料結構—雙連結串列Redis資料結構
- 亞馬遜雲科技幫助BMW Financial Services設計和構建資料架構亞馬遜NaN架構
- [20220223]bbed讀取資料塊mssm與assm 2.txtSSM
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- 理解 Golang 的 map 資料結構設計Golang資料結構
- Oracle redo解析之-2、BBED & DUMP工具使用Oracle Redo
- 【BBED】Oracle bbed常用命令參考Oracle
- 2.作業系統的理解幫助後續理解作業系統
- 華為雲大資料,幫助企業搭好資料底座大資料
- MT和MPT—區塊鏈的資料結構區塊鏈資料結構
- ORACLE 資料塊格式深入解析Oracle
- 深入理解MySQL索引底層資料結構MySql索引資料結構
- Pandas之:深入理解Pandas的資料結構資料結構
- 如何使用macOS幫助選單Mac
- NineData幫助開發者用好資料和雲
- 12_深入解析Oracle FLM段頭塊結構Oracle