鱼C论坛

 找回密码
 立即注册
查看: 2573|回复: 0

[Oracle] BBED printf命令

[复制链接]
发表于 2013-9-8 22:38:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
BBED> set dba 1,33129

        DBA             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[0]                                 @110      8090
sb2 kdbr[1]                                 @112      8084

在这个数据块里有2行记录。 每行的pointer 需要2个bytes来存储。 这2行row的offset 从110 到112.
我们可以使用kdbr[0] 作为一个指针来print 它对应的内容。这个kdbr[0] 是一个本地的data structure,我们print 需要加*号前缀。

BBED> p *kdbr[0]
rowdata[6]
----------
ub1 rowdata[6]                              @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 8191  Dba:0x00408169
-------------------------------------------------------
2c010102 c1020606 0e67              l ,...á....g

<16 bytes per line>

print命令也可以直接输出一个绝对的offset内容。

BBED> p offset 8182
rowdata[6]
----------
ub1 rowdata[6]                              @8182     0x2c

BBED> p /d offset 8182
rowdata[6]
----------
ub1 rowdata[6]                              @8182     44

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-3 21:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表