使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle bbed修改資料塊的例子Oracle
- oracle資料塊理解Oracle
- oracle block資料塊結構之itcOracleBloC
- oracle block資料塊結構續(一)OracleBloC
- ORACLE空間管理實驗8:資料塊格式分析--DUMP結合BBEDOracle
- BBED (Oracle Block Brower and EDitor Tool) :資料塊修復工具OracleBloC
- 資料庫幫助類資料庫
- 使用BBED破壞資料(oracle11g)Oracle
- bbed_recover:恢復資料塊資料庫資料庫
- 【BBED】使用bbed修改數字型別資料型別
- 【BBED】使用bbed修改字元型別資料字元型別
- oracle bbed使用Oracle
- 大資料尋求幫助!大資料
- Oracle的邏輯結構(表空間、段、區間、塊)——Oracle資料塊(二)Oracle
- --bbed_recover:恢復資料塊資料庫(mybbed)資料庫
- bbed_recover:恢復資料塊資料庫(續)資料庫
- oracle資料塊格式小結Oracle
- chan資料結構與理解資料結構
- MySQL幫助使用MySql
- [20170419]bbed探究資料塊.txt
- 【BBED】使用bbed 修改日期型別的資料型別
- Linux環境配置DBD::Oracle,幫助Perl連線Oracle資料庫LinuxOracle資料庫
- Oracle 資料庫 結構Oracle資料庫
- 使用DUMP資料塊與BBED檢視BLOCK對比資料庫修改時的SCNBloC資料庫
- oracle rac srvctl 幫助大全Oracle
- Oracle 之利用BBED修改資料塊SCN----沒有備份資料檔案的資料恢復Oracle資料恢復
- 資料塊內部結構dump解析
- oracle asm 資料塊重構恢復OracleASM
- NineData幫助開發者用好資料和雲
- 網頁抓取如何幫助資料分析?網頁
- 資料結構之Stack | 讓我們一塊來學習資料結構資料結構
- 資料結構之Queue | 讓我們一塊來學習資料結構資料結構
- 資料結構之Set | 讓我們一塊來學習資料結構資料結構
- oracle block資料塊結構續(二)之dml_ckptq_fileq_objqOracleBloCOBJ
- 亞馬遜雲科技幫助BMW Financial Services設計和構建資料架構亞馬遜NaN架構
- Oracle bbed工具的使用Oracle
- 【SqlServer】 理解資料庫中的資料頁結構SQLServer資料庫
- go中map的資料結構理解Go資料結構