BBED> set dba 1,58914 DBA 0x0040e622 (4253218 1,58914) BBED> map File: /u01/app/oracle/oradata/qxptfh01/system01.dbf (1) Block:58914 Dba:0x0040e622 ------------------------------------------------------------ KTB Data Block (Table/Cluster) struct kcbh,20 bytes @0 -- - Cache Layer - struct ktbbh,72 bytes @20 --- Transaction Layer - struct kdbh,14 bytes @92 -- Data Header - struct kdbt[1], 4 bytes @106 -- Table Directory - sb2 kdbr[3] @110 - Row Directory - ub1 freespace[8041] @116 - Free Space - ub1 rowdata[31] @8157 - Row Data - ub4 tailchk @8188 -- Tailchk -
成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供雞澤網(wǎng)站建設(shè)、雞澤做網(wǎng)站、雞澤網(wǎng)站設(shè)計(jì)、雞澤網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、雞澤企業(yè)網(wǎng)站模板建站服務(wù),10余年雞澤做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
從Data header到Row Data部分合稱(chēng)Data Layer。
Cache Layer:Block的第一部分,長(zhǎng)度為20字節(jié),內(nèi)部數(shù)據(jù)結(jié)構(gòu)名為kcbh,包括
下列幾部分
BBED> p kcbh struct kcbh,20 bytes @0 ub1 type_kcbh @0 0x06 --塊類(lèi)型(table/index,rollback segment,temporary segment等) ub1 frmt_kcbh @1 0xa2 --塊格式(v6,v7,v8) ub1 spare1_kcbh @2 0x00 --保留 ub1 spare2_kcbh @3 0x00 --保留 ub4 rdba_kcbh @4 0x0040e622 --塊地址DBA ub4 bas_kcbh @8 0x01a9b470 --scn base ub2 wrp_kcbh @12 0x0000 --scn wrap ub1 seq_kcbh @14 0x07 --塊的序列號(hào),設(shè)置為0xff,則認(rèn)為是壞塊。 ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV) --塊的標(biāo)志,即塊的屬性。 ub2 chkval_kcbh @16 0x153c --校驗(yàn)值,db_block_checksum=true,才有值。 ub2 spare3_kcbh @18 0x0000 --保留
flg_kcbh:
define KCBHFNEW 0×01 /* new block - zeroed data area */
#define KCBHFDLC 0×02 /* Delayed Logging Change advance SCN/seq */
#define KCBHFCKV 0×04 /* ChecK Value saved-block xor’s to zero */
#define KCBHFTMP 0×08 /* Temporary block */
這是一個(gè)可以組合的值 也就是說(shuō)有為 6 的時(shí)候是 2,4 兩種情況的組合
type_kcbh:
Transaction Layer:內(nèi)部結(jié)構(gòu)名kcbbh。分成兩部分:
第一部分為固定長(zhǎng)度,長(zhǎng)度為24字節(jié),包含事務(wù)相關(guān)的一些基本信息。
第二部分為可變長(zhǎng)度,包含itl,長(zhǎng)度根據(jù)itl條目的個(gè)數(shù)變化,每個(gè)itl長(zhǎng)度為24字節(jié),內(nèi)部結(jié)構(gòu)名ktbbhitl。
BBED> p ktbbh struct ktbbh,72 bytes @20 ub1 ktbbhtyp @20 0x01 (KDDBTDATA) --塊類(lèi)型。1為表,2為索引 union ktbbhsid, 4 bytes @24 --段或者對(duì)象的ID,也就是下邊的0x00016f66轉(zhuǎn)換為10進(jìn)制就是 ub4 ktbbhsg1 @24 0x00016f66 --段號(hào) ub4 ktbbhod1 @24 0x00016f66 --對(duì)象號(hào) struct ktbbhcsc,8 bytes @28 --最后一次塊清除的SCNub4 kscnbas @28 0x01a9b461 --scn base ub2 kscnwrp @32 0x0000 --scn wrap b2 ktbbhict @36 2 --事務(wù)槽個(gè)數(shù)(ITL NUMBER) ub1 ktbbhflg @38 0x03 (KTBFONFL) --0 = ON THE FREELIST ub1 ktbbhfsl @39 0x00 --ITL TX FREELIST SLOT ub4 ktbbhfnx @40 0x00000000 --下一個(gè)空閑塊的地址 dba struct ktbbhitl[0], 24 bytes @44 --事務(wù)槽1 struct ktbitxid,8 bytes @44 --xid ub2 kxidusn @44 0x0007 --usn ub2 kxidslt @46 0x002d --slot ub4 kxidsqn @48 0x0000150a --seq struct ktbituba,8 bytes @52 --uba ub4 kubadba @52 0x008008b0 --dba ub2 kubaseq @56 0x145d --seq ub1 kubarec @58 0x36 --ubarec ub2 ktbitflg @60 0x2003 (KTBFUPB) union _ktbitun, 2 bytes @62 b2 _ktbitfsc @62 0 ub2 _ktbitwrp @62 0x0000 ub4 ktbitbas @64 0x01a9b470 struct ktbbhitl[1], 24 bytes @68 --事務(wù)槽2 struct ktbitxid,8 bytes @68 ub2 kxidusn @68 0x0000 ub2 kxidslt @70 0x0000 ub4 kxidsqn @72 0x00000000 struct ktbituba,8 bytes @76 ub4 kubadba @76 0x00000000 ub2 kubaseq @80 0x0000 ub1 kubarec @82 0x00 ub2 ktbitflg @84 0x0000 (NONE) union _ktbitun, 2 bytes @86 b2 _ktbitfsc @86 0 ub2 _ktbitwrp @86 0x0000 ub4 ktbitbas @88 0x00000000
下面通過(guò)ub4 ktbbhod1@24 0x00016f66 查詢(xún)對(duì)應(yīng)的是哪個(gè)對(duì)象:
SQL> select to_number('00016f66','xxxxxxxx') from dual; TO_NUMBER('00016F66','XXXXXXXX')-------------------------------- 94054 SQL> col OBJECT_NAME FORMAT A15; SQL> COL OBJECT_TYPE FORMAT A15 SQL> select object_name,object_type from dba_objects where object_id='94054'; OBJECT_NAME OBJECT_TYPE--------------- --------------- T1 TABLE
Data Layer:包括Data Header,Table Directory,Row Directory,F(xiàn)ree Space和Row Data。其中
Data Header:長(zhǎng)度14字節(jié),內(nèi)部數(shù)據(jù)結(jié)構(gòu)名kdbh
BBED> p kdbh struct kdbh,14 bytes @92 ub1 kdbhflag @92 0x00 (NONE) --標(biāo)志位 (N:pctfree hit. F:do not put on freelist. K:flushable cluster keys) b1 kdbhntab @93 1 --表的個(gè)數(shù) b2 kdbhnrow @94 3 --這個(gè)塊的行數(shù) sb2 kdbhfrre @96 -1 --是否在空閑列表。-1:不在空閑列表 sb2 kdbhfsbo @98 24 --空閑空間的開(kāi)始o(jì)ffset sb2 kdbhfseo @100 8065 --空閑空間的結(jié)束offset b2 kdbhavsp @102 8041 --塊的平均空間 b2 kdbhtosp @104 8041 --總共可以用的空間
Table Directory: 一般table只有一個(gè)條目,cluster則有一個(gè)或多個(gè)條目。每個(gè)條目長(zhǎng)4字節(jié),內(nèi)部數(shù)據(jù)結(jié)構(gòu)名kdbt。
BBED> p kdbt struct kdbt[0], 4 bytes @106 b2 kdbtoffs @106 0 b2 kdbtnrow @108 3
Row Directory:數(shù)目由塊中數(shù)據(jù)的行數(shù)決定,每個(gè)條目長(zhǎng)2字節(jié),內(nèi)部數(shù)據(jù)結(jié)構(gòu)名kdbr
BBED> p kdbr sb2 kdbr[0] @110 8085 sb2 kdbr[1] @112 8075 sb2 kdbr[2] @114 8065
Free Space:表示數(shù)據(jù)塊中可用空間,內(nèi)部數(shù)據(jù)結(jié)構(gòu)名freespace
Row Data:表示實(shí)際的數(shù)據(jù),內(nèi)部數(shù)據(jù)結(jié)構(gòu)名rowdata
BBED> p freespace ub1 freespace[0] @116 0x00 ub1 freespace[1] @117 0x00 ub1 freespace[2] @118 0x00 ub1 freespace[3] @119 0x00 .........................................................
BBED> p rowdata ub1 rowdata[0] @8157 0x2c ub1 rowdata[1] @8158 0x01 ub1 rowdata[2] @8159 0x02 ub1 rowdata[3] @8160 0x02 ub1 rowdata[4] @8161 0xc1 ub1 rowdata[5] @8162 0x04 ub1 rowdata[6] @8163 0x03 ub1 rowdata[7] @8164 0x78 ub1 rowdata[8] @8165 0x6e...........................................................................................
Tailchk:保存在塊結(jié)尾用于校驗(yàn)的數(shù)據(jù),長(zhǎng)度4個(gè)字節(jié),內(nèi)部結(jié)構(gòu)名tailchk。
tailchk=bas_kcbh最后兩2字節(jié)(b470)+type_kcbh(06)+seq_kcbh(07).
BBED> p tailchk ub4 tailchk @8188 0xb4700607 --尾部校驗(yàn)碼。
下面是文件頭塊信息:
BBED> set dba 1,1 DBA 0x00400001 (4194305 1,1) BBED> map File: /u01/app/oracle/oradata/qxptfh01/system01.dbf (1) Block:1 Dba:0x00400001 ------------------------------------------------------------ Data File Header struct kcvfh,676 bytes @0 ub4 tailchk @8188 BBED> p kcvfh struct kcvfh,676 bytes @0 struct kcvfhbfh,20 bytes @0 ub1 type_kcbh @0 0x0b -----數(shù)據(jù)的塊類(lèi)型 11可以看出是否是數(shù)據(jù)文件頭 ub1 frmt_kcbh @1 0xa2 -----數(shù)據(jù)塊的格式。1=oracle7 ,2=oracle8+ ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00400001 ub4 bas_kcbh @8 0x00000000 ---SCN BASE ub2 wrp_kcbh @12 0x0000 ---SCN WRAP ub1 seq_kcbh @14 0x01 ---SCN序列號(hào) ub1 flg_kcbh @15 0x04 (KCBHFCKV) ----塊屬性 ub2 chkval_kcbh @16 0x5064 ---檢驗(yàn)值 ub2 spare3_kcbh @18 0x0000 struct kcvfhhdr,76 bytes @20 ---此結(jié)構(gòu)存儲(chǔ)這個(gè)數(shù)據(jù)文件的屬性 ub4 kccfhswv @20 0x00000000 ub4 kccfhcvn @24 0x0a200500 ---文件創(chuàng)建的版本號(hào) ub4 kccfhdbi @28 0x783cfa8c ---數(shù)據(jù)庫(kù)的DBID text kccfhdbn[0] @32 Q ---所屬實(shí)例的名字 text kccfhdbn[1] @33 X text kccfhdbn[2] @34 P text kccfhdbn[3] @35 T text kccfhdbn[4] @36 F text kccfhdbn[5] @37 H text kccfhdbn[6] @38 0 text kccfhdbn[7] @39 1 ub4 kccfhcsq @40 0x00003db5 ---控制序列,控制文件事務(wù)會(huì)增加此值 ub4 kccfhfsz @44 0x0000f000 ---文件當(dāng)前所包含數(shù)據(jù)塊的個(gè)數(shù) s_blkz kccfhbsz @48 0x00 ---文件存放的塊大小,關(guān)閉數(shù)據(jù)庫(kù)有值 ub2 kccfhfno @52 0x0001 ---文件號(hào) ub2 kccfhtyp @54 0x0003 ---文件類(lèi)型,03代表數(shù)據(jù)文件,06表示undo文件 ub4 kccfhacid @56 0x00000000 ---活動(dòng)ID ub4 kccfhcks @60 0x00000000 ---創(chuàng)建檢查點(diǎn)的SCN text kccfhtag[0] @64 text kccfhtag[1] @65 text kccfhtag[2] @66 text kccfhtag[3] @67 text kccfhtag[4] @68 text kccfhtag[5] @69 text kccfhtag[6] @70 text kccfhtag[7] @71 text kccfhtag[8] @72 text kccfhtag[9] @73 text kccfhtag[10] @74 text kccfhtag[11] @75 text kccfhtag[12] @76 text kccfhtag[13] @77 text kccfhtag[14] @78 text kccfhtag[15] @79 text kccfhtag[16] @80 text kccfhtag[17] @81 text kccfhtag[18] @82 text kccfhtag[19] @83 text kccfhtag[20] @84 text kccfhtag[21] @85 text kccfhtag[22] @86 text kccfhtag[23] @87 text kccfhtag[24] @88 text kccfhtag[25] @89 text kccfhtag[26] @90 text kccfhtag[27] @91 text kccfhtag[28] @92 text kccfhtag[29] @93 text kccfhtag[30] @94 text kccfhtag[31] @95 ub4 kcvfhrdb @96 0x00400179 ---ROOT DBA struct kcvfhcrs,8 bytes @100 ---文件創(chuàng)建的SCN ub4 kscnbas @100 0x00000007 ---SCN BASE ub2 kscnwrp @104 0x0000 ---SCN WRAP ub4 kcvfhcrt @108 0x2ab9923a ---文件創(chuàng)建的時(shí)間戳 ub4 kcvfhrlc @112 0x30f3d1cf ---resetlogs的次數(shù) struct kcvfhrls,8 bytes @116 ---resetlogs的SCN ub4 kscnbas @116 0x0005eca9 ---SCN BASE ub2 kscnwrp @120 0x0000 ---SCN WRAP ub4 kcvfhbti @124 0x00000000 struct kcvfhbsc,8 bytes @128 ---備份的SCN ub4 kscnbas @128 0x00000000 ---SCN BASE ub2 kscnwrp @132 0x0000 ---SCN WRAP ub2 kcvfhbth @136 0x0000 ub2 kcvfhsta @138 0x2004 (KCVFHOFZ) ---數(shù)據(jù)文件狀態(tài):04為正常,00為關(guān)閉,01為begin backup struct kcvfhckp,36 bytes @484 ---檢查點(diǎn)checkpoint struct kcvcpscn,8 bytes @484 ---數(shù)據(jù)文件改變的檢查點(diǎn)SCN ub4 kscnbas @484 0x01a947ff --SCN BASE ub2 kscnwrp @488 0x0000 --SCN WRAP ub4 kcvcptim @492 0x338a07e7 --最后改變的時(shí)間 ub2 kcvcpthr @496 0x0001 --resetlogs的線(xiàn)程號(hào) union u, 12 bytes @500 struct kcvcprba,12 bytes @500 ub4 kcrbaseq @500 0x000005a0 --序列號(hào) ub4 kcrbabno @504 0x00000002 --塊號(hào) ub2 kcrbabof @508 0x0010 --偏移量offset ub1 kcvcpetb[0] @512 0x02 --最大線(xiàn)程數(shù) ub1 kcvcpetb[1] @513 0x00 ub1 kcvcpetb[2] @514 0x00 ub1 kcvcpetb[3] @515 0x00 ub1 kcvcpetb[4] @516 0x00 ub1 kcvcpetb[5] @517 0x00 ub1 kcvcpetb[6] @518 0x00 ub1 kcvcpetb[7] @519 0x00 ub4 kcvfhcpc @140 0x00000619 --數(shù)據(jù)文件發(fā)生checkpoint的次數(shù) ub4 kcvfhrts @144 0x3348a98a --resetlogs的次數(shù) ub4 kcvfhccc @148 0x00000618 --控制文件記錄的檢查點(diǎn)次數(shù) struct kcvfhbcp,36 bytes @152 struct kcvcpscn,8 bytes @152 ub4 kscnbas @152 0x00000000 ub2 kscnwrp @156 0x0000 ub4 kcvcptim @160 0x00000000 ub2 kcvcpthr @164 0x0000 union u, 12 bytes @168 struct kcvcprba,12 bytes @168 ub4 kcrbaseq @168 0x00000000 ub4 kcrbabno @172 0x00000000 ub2 kcrbabof @176 0x0000 ub1 kcvcpetb[0] @180 0x00 ub1 kcvcpetb[1] @181 0x00 ub1 kcvcpetb[2] @182 0x00 ub1 kcvcpetb[3] @183 0x00 ub1 kcvcpetb[4] @184 0x00 ub1 kcvcpetb[5] @185 0x00 ub1 kcvcpetb[6] @186 0x00 ub1 kcvcpetb[7] @187 0x00 ub4 kcvfhbhz @312 0x00000000 struct kcvfhxcd,16 bytes @316 ub4 space_kcvmxcd[0] @316 0x00000000 ub4 space_kcvmxcd[1] @320 0x00000000 ub4 space_kcvmxcd[2] @324 0x00000000 ub4 space_kcvmxcd[3] @328 0x00000000 word kcvfhtsn @332 0 --表空間號(hào) ub2 kcvfhtln @336 0x0006 text kcvfhtnm[0] @338 S --表空間的名字,最長(zhǎng)為30字符 text kcvfhtnm[1] @339 Y text kcvfhtnm[2] @340 S text kcvfhtnm[3] @341 T text kcvfhtnm[4] @342 E text kcvfhtnm[5] @343 M text kcvfhtnm[6] @344 text kcvfhtnm[7] @345 text kcvfhtnm[8] @346 text kcvfhtnm[9] @347 text kcvfhtnm[10] @348 text kcvfhtnm[11] @349 text kcvfhtnm[12] @350 text kcvfhtnm[13] @351 text kcvfhtnm[14] @352 text kcvfhtnm[15] @353 text kcvfhtnm[16] @354 text kcvfhtnm[17] @355 text kcvfhtnm[18] @356 text kcvfhtnm[19] @357 text kcvfhtnm[20] @358 text kcvfhtnm[21] @359 text kcvfhtnm[22] @360 text kcvfhtnm[23] @361 text kcvfhtnm[24] @362 text kcvfhtnm[25] @363 text kcvfhtnm[26] @364 text kcvfhtnm[27] @365 text kcvfhtnm[28] @366 text kcvfhtnm[29] @367 ub4 kcvfhrfn @368 0x00000001 --相對(duì)文件號(hào) struct kcvfhrfs,8 bytes @372 --文件SCN ub4 kscnbas @372 0x00000000 --SCN BASE ub2 kscnwrp @376 0x0000 --SCN WRAP ub4 kcvfhrft @380 0x00000000 struct kcvfhafs,8 bytes @384 --絕對(duì)文件號(hào) ub4 kscnbas @384 0x00000000 --SCN BASE ub2 kscnwrp @388 0x0000 --SCN WRAP ub4 kcvfhbbc @392 0x00000000 ub4 kcvfhncb @396 0x00000000 ub4 kcvfhmcb @400 0x00000000 ub4 kcvfhlcb @404 0x00000000 ub4 kcvfhbcs @408 0x00000000 ub2 kcvfhofb @412 0x000a ub2 kcvfhnfb @414 0x000a ub4 kcvfhprc @416 0x2ab99238 --上個(gè)resetlogs的次數(shù) struct kcvfhprs,8 bytes @420 --上個(gè)resetlogs的SCN ub4 kscnbas @420 0x00000001 ub2 kscnwrp @424 0x0000 struct kcvfhprfs,8 bytes @428 ub4 kscnbas @428 0x00000000 ub2 kscnwrp @432 0x0000 ub4 kcvfhtrt @444 0x00000000 BBED>
type_kcbh:數(shù)據(jù)的塊類(lèi)型