使用bbed编辑研究oracle数据块结构(六)

2014-11-24 08:53:37 · 作者: · 浏览: 5
sb2 kdbr[1] @120 8072 BBED> print *kdbr[0] rowdata[0] ---------- ub1 rowdata[0] @8162 0x2c
Print 命令默认使用16进制显示数据,当然我们也可以指定bbed使用其他格式显示数据,如下所示:
Switch Display formatt
/x Hex
/d Signed decimal
/u Unsigned decimal
/o Octal
/c Character
/n Oracle number
/t Oracle date
/i Oracle rowid
BBED> print
rowdata[7]
----------
ub1 rowdata[7]                              @8169     0x6e


BBED> print /c
rowdata[7]
----------
ub1 rowdata[7]                              @8169    n


BBED> print /n
rowdata[7]
----------
ub1 rowdata[7]                              @8169     110
我们也可以指定数据结构的名称,来打印显示该结构的详细信息,如
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        0x01400014
   ub4 bas_kcbh                             @8        0x0006e7ae
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0xcc8e
   ub2 spare3_kcbh                          @18       0x0000

EXAMPLE

Example命令用来显示数据块中的数据,可以直接指定dba offset,也可以直接使用当前的dba offset。我们可以指定example按照不同的格式显示数据块数据,其中比较有意义的是我们可以使用example来查看数据记录。如下所示:
Switch Display format
/b B1 .ub1(byte)
/h B2,ub2 (half-word)
/w B4,ub4 (word)
/l B8,ub8 (long)(was b4/ub4 in oracle 7)
/r Oracle table/index row

数据表ta的结构和数据如下
SQL> desc scott.ta
 Name					   Null     Type
 ----------------------------------------- -------- ----------------------------
 ID						    NUMBER
 NAME						    VARCHAR2(10)
 RIQI						    DATE


SQL> select * from scott.ta;


	ID NAME       RIQI
---------- ---------- -------------------
	 1 nnn	      2014-10-07 13:19:00
	 2 b	      2014-10-07 13:19:00
	 3 ss	      2014-10-07 14:00:15
	 4 lll	      2014-10-07 14:03:09
使用bbed查看数据块数据:
BBED> map  
 File: /home/app/oraten/oradata/oraten/tbs101.dbf (5)
 Block: 21                                    Dba:0x01400015
------------------------------------------------------------
 KTB Data Block (Table/Cluster)


 struct kcbh, 20 bytes                      @0       


 struct ktbbh, 72 bytes                     @20      


 struct kdbh, 14 bytes                      @100     


 struct kdbt[1], 4 bytes                    @114     


 sb2 kdbr[2]                                @118     


 ub1 freespace[8031]                        @122     


 ub1 rowdata[35]                            @8153    


 ub4 tailchk                                @8188    
BBED> p *kdbr[0]
rowdata[18]
-----------
ub1 rowdata[18]                             @8171     0x2c


BBED> x /rnct
rowdata[18]                                 @8171    
-----------
flag@8171: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8172: 0x01
cols@8173:    3


col    0[2] @8174: 3 
col    1[2] @8177: ss
col    2[7] @8180: 2014-10-07 14:00:15 

BBED> x /b
rowdata[18]                                 @8171    
-----------
 0x2c 


BBED> x /h
rowdata[18]                                 @8171    
-----------
 0x012c 


BBED> x /w
rowdata[18]                                 @8171    
-----------
 0x0203012c 


BBED> x /l
rowdata[18]                                 @8171    
-----------
 0x0203012c 


BBED> set offset 8153
	OFFSET         	8153


BBED> x /2rnct
rowdata[0]                                  @8153    
----------
flag@8153: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8154: 0x02
cols@8155:    3


col    0[2] @8156: 4 
col    1[3] @8159: lll
col    2[7] @8163: 2014-10-07 14:03:09 


rowdata[18]                                 @8171    
-----------
flag@8171: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8172: 0x01
cols@8173:    3


col    0[2] @8174: 3 
col    1[2] @8177: ss
col    2[7] @8180: 2014-10-07 14:00:15 
Find

Find命令用来在数据块中查找数据,可以按照十进制、十六进制、八进制和字符格式进行查找,如

Switch Datatype
/x Hexadecimal
/d Decimal
/u Unsigned decimal
/o Octal
/c Character(native)
注意:目前不支持数字和日期类型的查找方式
BBED> find /c n
 File: /home/app/oraten/oradata/oraten/tbs101.dbf (5)
 Block: 20               Offsets: 8151 to 8191           Dba:0x01400014
-------------------------------------------