BBED printf命令
BBED> set dba 1,33129DBA 0x00408169 (4227433 1,33129)
BBED> p kcbh.type_kcbh
ub1 type_kcbh @0 0x06
可以通过print 输出指定名称的block structures。
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 0x00408169
ub4 bas_kcbh @8 0x0013670e
ub2 wrp_kcbh @12 0x0000
ub1 seq_kcbh @14 0x06
ub1 flg_kcbh @15 0x06 (KCBHFDLC, KCBHFCKV)
ub2 chkval_kcbh @16 0xd515
ub2 spare3_kcbh @18 0x0000
如果我们想确定block 中row的数量,可以print data header structure 或者kdbh。
BBED> p kdbh
struct kdbh, 14 bytes @92
ub1 kdbhflag @92 0x00 (NONE)
sb1 kdbhntab @93 1
sb2 kdbhnrow @94 2
sb2 kdbhfrre @96 -1
sb2 kdbhfsbo @98 22
sb2 kdbhfseo @100 8084
sb2 kdbhavsp @102 8056
sb2 kdbhtosp @104 8056
也可以指定某个具体的structure元素进行print
BBED> p kdbhnrow
sb2 kdbhnrow @94 2
kdbr 里保存的是row directory 的信息。
BBED> p kdbr
sb2 kdbr @110 8090
sb2 kdbr @112 8084
在这个数据块里有2行记录。 每行的pointer 需要2个bytes来存储。 这2行row的offset 从110 到112.
我们可以使用kdbr 作为一个指针来print 它对应的内容。这个kdbr 是一个本地的data structure,我们print 需要加*号前缀。
BBED> p *kdbr
rowdata
----------
ub1 rowdata @8182 0x2c
通过这个信息,我们可以知道该行记录的偏移量是8162. 我们就dump 它的具体信息。
BBED> d /v dba 1,33129 offset 8182 count 128
File: /u01/app/oracle/oradata/omrep/system01.dbf (1)
Block: 33129 Offsets: 8182 to 8191Dba:0x00408169
-------------------------------------------------------
2c010102 c1020606 0e67 l ,...á....g
<16 bytes per line>
print命令也可以直接输出一个绝对的offset内容。
BBED> p offset 8182
rowdata
----------
ub1 rowdata @8182 0x2c
BBED> p /d offset 8182
rowdata
----------
ub1 rowdata @8182 44
页:
[1]