BBED使用原则
A.确认大端、小端问题。这个确认后,更改数据后才不会出错。如何判断大端、小端?
B.在正确的位置修改正确的值。确认需要修改的值的位置,确认你需要修改什么成什么值。
BBED> p kcvfhbfh
struct kcvfhbfh, 20 bytes @0
ub1 type_kcbh @0 0x0b
ub1 frmt_kcbh @1 0xa2
ub1 spare1_kcbh @2 0x00
ub1 spare2_kcbh @3 0x00
ub4 rdba_kcbh @4 0x00400001
ub4 bas_kcbh @8 0x00000000
ub2 wrp_kcbh @12 0x0000
ub1 seq_kcbh @14 0x01
ub1 flg_kcbh @15 0x04 (KCBHFCKV)
ub2 chkval_kcbh @16 0x7c2e
ub2 spare3_kcbh @18 0x0000
BBED> d/v count 20
File: /oradata/ora10/system01.dbf (1)
Block: 1 Offsets: 0 to 19 Dba:0x00400001
-------------------------------------------------------
0ba20000 01004000 00000000 00000104 l ....@.........
2e7c0000 l .|..
<16 bytes per line>
BBED>
如果红色部分显示的内容一样,则说明是大端,如果不一样,则是小端
如果是Little Endian,如果将0x00400001修改为0x00400002,应该用m/x 02004000 offset 4
如果是Big Endian, 如果将0x00400001修改为0x00400002,应该用m/x 00400002 offset 4
10g块头结构
BBED> p kcvfh struct kcvfh, 676 bytes @0 struct kcvfhbfh, 20 bytes @0 ub1 type_kcbh @0 0x0b ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00400001 ub4 bas_kcbh @8 0x00000000 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0x01 ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x73a8 ub2 spare3_kcbh @18 0x0000 struct kcvfhhdr, 76 bytes @20 ub4 kccfhswv @20 0x00000000 ub4 kccfhcvn @24 0x0a200100 ub4 kccfhdbi @28 0x3526cf91 text kccfhdbn[0] @32 O text kccfhdbn[1] @33 R text kccfhdbn[2] @34 A text kccfhdbn[3] @35 1 text kccfhdbn[4] @36 0 text kccfhdbn[5] @37 text kccfhdbn[6] @38 text kccfhdbn[7] @39 ub4 kccfhcsq @40 0x0000018e ub4 kccfhfsz @44 0x0000f000 s_blkz kccfhbsz @48 0x00 ub2 kccfhfno @52 0x0001 ub2 kccfhtyp @54 0x0003 ub4 kccfhacid @56 0x00000000 ub4 kccfhcks @60 0x00000000 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 struct kcvfhcrs, 8 bytes @100 ub4 kscnbas @100 0x00000008 ub2 kscnwrp @104 0x0000 ub4 kcvfhcrt @108 0x221e01bf ub4 kcvfhrlc @112 0x36303713 struct kcvfhrls, 8 bytes @116 ub4 kscnbas @116 0x00080634 ub2 kscnwrp @120 0x0000 ub4 kcvfhbti @124 0x00000000 struct kcvfhbsc, 8 bytes @128 ub4 kscnbas @128 0x00000000 ub2 kscnwrp @132 0x0000 ub2 kcvfhbth @136 0x0000 ub2 kcvfhsta @138 0x2000 (NONE) struct kcvfhckp, 36 bytes @484 struct kcvcpscn, 8 bytes @484 ub4 kscnbas @484 0x00088742 ub2 kscnwrp @488 0x0000 ub4 kcvcptim @492 0x36304031 ub2 kcvcpthr @496 0x0001 union u, 12 bytes @500 struct kcvcprba, 12 bytes @500 ub4 kcrbaseq @500 0x00000002 ub4 kcrbabno @504 0x00015b11 ub2 kcrbabof @508 0x0010 ub1 kcvcpetb[0] @512 0x02 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 0x00000033 ub4 kcvfhrts @144 0x3630370c ub4 kcvfhccc @148 0x00000032 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 ub2 kcvfhtln @336 0x0006 text kcvfhtnm[0] @338 S 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 struct kcvfhrfs, 8 bytes @372 ub4 kscnbas @372 0x00000000 ub2 kscnwrp @376 0x0000 ub4 kcvfhrft @380 0x00000000 struct kcvfhafs, 8 bytes @384 ub4 kscnbas @384 0x00000000 ub2 kscnwrp @388 0x0000 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 0x221e01a8 struct kcvfhprs, 8 bytes @420 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>
SET帮助信息
BBED> help set
SET DBA [ dba | file#, block# ] --设置块的地址
SET FILENAME 'filename' --设置要查看的数据文件名字
SET FILE file# --设置要查看的文件编号
SET BLOCK [+/-]block# --设置块的编号
BBED> set block +4 BLOCK# 5 BBED> set block -1 BLOCK# 4 BBED>
SET OFFSET [ [+/-]byte offset | symbol | *symbol ] --设置在当前块中偏移量
BBED> set offset -10 OFFSET 10 BBED> set offset +40 OFFSET 50 BBED>
SET BLOCKSIZE bytes --设置块大小
SET LIST[FILE] 'filename' --设置包含数据文件的文件列表
SET WIDTH character_count --设置每行显示的字符宽度
SET COUNT bytes_to_display --设置显示字符的个数
SET IBASE [ HEX | OCT | DEC ] --设置输入的模式,16/8/10进制
SET OBASE [ HEX | OCT | DEC ] --设置输出的模式,16/8/10进制
SET MODE [ BROWSE | EDIT ] --设置模式,只读或编辑
SET SPOOL [ Y | N ] --设置为Y,会把输入写入bbed.log
SHOW [ <SET parameter> | ALL ]
显示当前BBED相关配置信息
BBED> show FILE# 1 BLOCK# 1 OFFSET 0 DBA 0x00400001 (4194305 1,1) FILENAME /oradata/ora10/system01.dbf BIFILE bifile.bbd LISTFILE files.txt BLOCKSIZE 8192 MODE Browse EDIT Unrecoverable IBASE Dec OBASE Dec WIDTH 80 COUNT 10 LOGFILE log.bbd SPOOL No BBED>
INFO
显示当前的listfile内容,列出要查看或编辑的文件列表
BBED> info File# Name Size(blks) ----- ---- ---------- 1 /oradata/ora10/system01.dbf 0 2 /oradata/ora10/undotbs01.dbf 0 3 /oradata/ora10/sysaux01.dbf 0 4 /oradata/ora10/users01.dbf 0 5 /oradata/ora10/example01.dbf 0 BBED>
MAP[/v] [ DBA | FILENAME | FILE | BLOCK ]
显示当前块结构并显示结构体的每个字段,用/v会显示更详细。会显示部分块类型的结构,比如数据文件头部,table/index/undo块等信息
BBED> map /v File: /oradata/ora10/system01.dbf (1) Block: 1 Dba:0x00400001 ------------------------------------------------------------ Data File Header struct kcvfh, 676 bytes @0 struct kcvfhbfh, 20 bytes @0 struct kcvfhhdr, 76 bytes @20 ub4 kcvfhrdb @96 struct kcvfhcrs, 8 bytes @100 ub4 kcvfhcrt @108 ub4 kcvfhrlc @112 struct kcvfhrls, 8 bytes @116 ub4 kcvfhbti @124 struct kcvfhbsc, 8 bytes @128 ub2 kcvfhbth @136 ub2 kcvfhsta @138 struct kcvfhckp, 36 bytes @484 ub4 kcvfhcpc @140 ub4 kcvfhrts @144 ub4 kcvfhccc @148 struct kcvfhbcp, 36 bytes @152 ub4 kcvfhbhz @312 struct kcvfhxcd, 16 bytes @316 word kcvfhtsn @332 ub2 kcvfhtln @336 text kcvfhtnm[30] @338 ub4 kcvfhrfn @368 struct kcvfhrfs, 8 bytes @372 ub4 kcvfhrft @380 struct kcvfhafs, 8 bytes @384 ub4 kcvfhbbc @392 ub4 kcvfhncb @396 ub4 kcvfhmcb @400 ub4 kcvfhlcb @404 ub4 kcvfhbcs @408 ub2 kcvfhofb @412 ub2 kcvfhnfb @414 ub4 kcvfhprc @416 struct kcvfhprs, 8 bytes @420 struct kcvfhprfs, 8 bytes @428 ub4 kcvfhtrt @444 ub4 tailchk @8188 BBED>
DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ]
显示数据库的内容,/v显示更易读
BBED> d/v dba 1,1 count 16 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 0 to 15 Dba:0x00400001 ------------------------------------------------------- 0ba20000 01004000 00000000 00000104 l ....@......... <16 bytes per line> BBED> d/v filename '/oradata/ora10/system01.dbf' count 16 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 0 to 15 Dba:0x00400001 ------------------------------------------------------- 0ba20000 01004000 00000000 00000104 l ....@......... <16 bytes per line> BBED> dump /v file 1 count 16 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 0 to 15 Dba:0x00400001 ------------------------------------------------------- 0ba20000 01004000 00000000 00000104 l ....@......... <16 bytes per line> BBED> dump/v block 1 count 16 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 0 to 15 Dba:0x00400001 ------------------------------------------------------- 0ba20000 01004000 00000000 00000104 l ....@......... <16 bytes per line> BBED> d/v offset 0 count 16 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 0 to 15 Dba:0x00400001 ------------------------------------------------------- 0ba20000 01004000 00000000 00000104 l ....@......... <16 bytes per line> BBED>
PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]
显示数据块中offset位置/指定位置的信息
x - hexadecimald - decimal
u - unsigned decimal
o - octal
c - character (native)
以16进制,10进制,8进制,字符显示
DBA | FILE | FILENAME | BLOCK | OFFSET可参照以上dump用法
BBED> p kcvfhbfh.rdba_kcbh ub4 rdba_kcbh @4 0x00400001 BBED> p *kcvfhbfh.rdba_kcbh BBED-00206: out of range offset (4194305) BBED> p *kcvfhtnm kcvfh.kcvfhhdr.kccfhtag[0].kccfhtag[19] --------------------------------------- text kccfhtag[19] @83 BBED> p *kcvfhtnm[1] kcvfh.kcvfhhdr.kccfhtag[0].kccfhtag[25] --------------------------------------- text kccfhtag[25] @89 BBED>
EXAMINE[/Nuf] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]
用不同进制显示不同单位的数据
</Nuf>:N - a number which specifies a repeat count. --命令重复的次数
u - a letter which specifies a unit size: --指定显示的单位
b - b1, ub1 (byte)
h - b2, ub2 (half-word)
w - b4, ub4(word)
r - Oracle table/index row
f - a letter which specifies a display format: --指定显示的格式
x - hexadecimal
d - decimal
u - unsigned decimal
o - octal
c - character (native)
n - Oracle number
t - Oracle date
i - Oracle rowid
BBED> x/4bc offset 338 --显示在偏移量为338处的4个字符 pad @338 --- SYST BBED> x/6bc offset 338 --显示在偏移量为338处的6个字符 pad @338 --- SYSTEM BBED>
FIND[/x|d|u|o|c] numeric/character string [ TOP | CURR ]
以指定的格式查找信息
BBED> f/c SYSTEM File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 338 to 347 Dba:0x00400001 ------------------------------------------------------------------------ 53595354 454d0000 0000 <32 bytes per line> BBED> BBED> f/c S File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 338 to 347 Dba:0x00400001 ------------------------------------------------------------------------ 53595354 454d0000 0000 <32 bytes per line> BBED> f --重复执行上次执行的查找命令 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 340 to 349 Dba:0x00400001 ------------------------------------------------------------------------ 5354454d 00000000 0000 <32 bytes per line> BBED>
COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]
复制数据块至另一个数据块。这个命令很管用,如果某个块坏掉,可以从备份的文件中复制一个块
BBED> copy dba 4,1 to dba 1,1 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 15 to 24 Dba:0x00400001 ------------------------------------------------------------------------ 0435c700 00000000 0000 <32 bytes per line> BBED>
MODIFY[/x|d|u|o|c] numeric/character string
[ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]
以指定的格式修改数据块内容
BBED> p kcvfhbfh struct kcvfhbfh, 20 bytes @0 ub1 type_kcbh @0 0x0b ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00400001 ub4 bas_kcbh @8 0x00000000 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0x01 ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x73a8 ub2 spare3_kcbh @18 0x0000 BBED> d/v offset 0 count 20 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 0 to 19 Dba:0x00400001 ------------------------------------------------------- 0ba20000 01004000 00000000 00000104 l ....@......... a8730000 l ╯.. <16 bytes per line> BBED> m/x 02004000 offset 4 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 4 to 23 Dba:0x00400001 ------------------------------------------------------------------------ 02004000 00000000 00000104 a8730000 00000000 <32 bytes per line> BBED> d/v count 10 File: /oradata/ora10/system01.dbf (1) Block: 1 Offsets: 4 to 13 Dba:0x00400001 ------------------------------------------------------- 02004000 00000000 0000 l ..@....... <16 bytes per line> BBED> BBED> p/w kcvfh.kcvfhbfh.rdba_kcbh ------------------------ ub4 rdba_kcbh @4 0x00400002 BBED>
ASSIGN[/x|d|u|o] <target spec>=<source spec>
<target spec> : [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]
<source spec> : [ value | <target spec options> ]
SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ]
计算块的checksum值,请参考How to calculate checksum(chkval_kcbh)?
BBED> sum Check value for File 1, Block 1: current = 0x73a8, required = 0x73ab BBED>
PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ]
POP [ALL]
Push/Pop用于记录数据块地址,允许当前块暂时被保存,其它块可以被查看或修改。用堆栈保存dba,起到标签的作用
BBED> set dba 1,4 DBA 0x00400004 (4194308 1,4) BBED> m/x 3 File: /oradata/ora10/system01.dbf (1) Block: 4 Offsets: 0 to 9 Dba:0x00400004 ------------------------------------------------------------------------ 03a20000 04004000 0c00 <32 bytes per line> BBED> push dba 1,4 DBA 0x00400004 (4194308 1,4) OFFSET 0 BBED> set dba 1,6 DBA 0x00400006 (4194310 1,6) BBED> d/v File: /oradata/ora10/system01.dbf (1) Block: 6 Offsets: 0 to 9 Dba:0x00400006 ------------------------------------------------------- 1ea20000 06004000 1000 l ....@... <16 bytes per line> BBED> pop DBA 0x00400004 (4194308 1,4) OFFSET 0 BBED> d/v File: /oradata/ora10/system01.dbf (1) Block: 4 Offsets: 0 to 9 Dba:0x00400004 ------------------------------------------------------- 03a20000 04004000 0c00 l ....@... <16 bytes per line> BBED> BBED> pop DBA 0x00400004 (4194308 1,4) OFFSET 0 BBED> pop DBA 0x00400002 (4194306 1,2) OFFSET 0 BBED> pop DBA 0x00400001 (4194305 1,1) OFFSET 0 BBED> pop BBED-00211: location stack is empty BBED>
REVERT [ DBA | FILE | FILENAME | BLOCK ]
还原dba,file,filename,block到原始状态
BBED> m /x 3 dba 1,3 File: /oradata/ora10/system01.dbf (1) Block: 3 Offsets: 0 to 9 Dba:0x00400003 ------------------------------------------------------------------------ 03a20000 03004000 8483 <32 bytes per line> BBED> m /x 3 dba 1,4 File: /oradata/ora10/system01.dbf (1) Block: 4 Offsets: 0 to 9 Dba:0x00400004 ------------------------------------------------------------------------ 03a20000 04004000 0c00 <32 bytes per line> BBED> revert All changes made in this session will be rolled back. Proceed? (Y/N) y Reverted file '/oradata/ora10/system01.dbf', block 3 Reverted file '/oradata/ora10/system01.dbf', block 4 Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y BBED>
UNDO
撤销更改,再次执行会重做
BBED> d/v File: /oradata/ora10/system01.dbf (1) Block: 4 Offsets: 0 to 9 Dba:0x00400004 ------------------------------------------------------- 03a20000 04004000 0c00 l ....@... <16 bytes per line> BBED> undo BBED> modify /x 1E filename '/oradata/ora10/system01.dbf' block 4. offset 0. File: /oradata/ora10/system01.dbf (1) Block: 4 Offsets: 0 to 9 Dba:0x00400004 ------------------------------------------------------------------------ 1ea20000 04004000 0c00 <32 bytes per line> BBED> undo BBED> modify /x 03 filename '/oradata/ora10/system01.dbf' block 4. offset 0. File: /oradata/ora10/system01.dbf (1) Block: 4 Offsets: 0 to 9 Dba:0x00400004 ------------------------------------------------------------------------ 03a20000 04004000 0c00 <32 bytes per line>
HELP [ <bbed command> | ALL ]
显示帮助信息
BBED> help f FIND[/x|d|u|o|c] numeric/character string [ TOP | CURR ] BBED> help m MODIFY[/x|d|u|o|c] numeric/character string [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] BBED> help p PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] BBED> help x EXAMINE[/Nuf] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] </Nuf>: N - a number which specifies a repeat count. u - a letter which specifies a unit size: b - b1, ub1 (byte) h - b2, ub2 (half-word) w - b4, ub4(word) r - Oracle table/index row f - a letter which specifies a display format: x - hexadecimal d - decimal u - unsigned decimal o - octal c - character (native) n - Oracle number t - Oracle date i - Oracle rowid BBED>
VERIFY [ DBA | FILE | FILENAME | BLOCK ]
校验块的完整性
修改块后要重新计算chksum值。为了做测试,不应用新的chksum值,这时做校验,就会出现坏块
BBED> sum Check value for File 1, Block 1: current = 0x73a8, required = 0x73ab BBED> verify DBVERIFY - Verification starting FILE = /oradata/ora10/system01.dbf BLOCK = 1 Block 1 is corrupt Corrupt block relative dba: 0x00400001 (file 0, block 1) Bad header found during verification Data in bad block: type: 11 format: 2 rdba: 0x00400002 last change scn: 0x0000.00000000 seq: 0x1 flg: 0x04 spare1: 0x0 spare2: 0x0 spare3: 0x0 consistency value in tail: 0x00000b01 check value in block header: 0x73a8 computed block checksum: 0x3 DBVERIFY - Verification complete Total Blocks Examined : 1 Total Blocks Processed (Data) : 0 Total Blocks Failing (Data) : 0 Total Blocks Processed (Index): 0 Total Blocks Failing (Index): 0 Total Blocks Empty : 0 Total Blocks Marked Corrupt : 1 Total Blocks Influx : 0 BBED>
CORRUPT [ DBA | FILE | FILENAME | BLOCK ]
设置块为坏块,更改seq_kcbh(offset 14)为0xff
BBED> p kcvfhbfh struct kcvfhbfh, 20 bytes @0 ub1 type_kcbh @0 0x0b ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00400002 ub4 bas_kcbh @8 0x00000000 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0x01 ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x73a8 ub2 spare3_kcbh @18 0x0000 BBED> corrupt Block marked media corrupt. BBED> p kcvfhbfh struct kcvfhbfh, 20 bytes @0 ub1 type_kcbh @0 0x0b ub1 frmt_kcbh @1 0xa2 ub1 spare1_kcbh @2 0x00 ub1 spare2_kcbh @3 0x00 ub4 rdba_kcbh @4 0x00400001 ub4 bas_kcbh @8 0x00000000 ub2 wrp_kcbh @12 0x0000 ub1 seq_kcbh @14 0xff ub1 flg_kcbh @15 0x04 (KCBHFCKV) ub2 chkval_kcbh @16 0x73a8 ub2 spare3_kcbh @18 0x0000 BBED>
Reference
http://orafaq.com/papers/dissassembling_the_data_block.pdf
Understanding Datafile Header kcvfh structure