[20181227]bbed的使用問題.txt

lfree發表於2018-12-27

[20181227]bbed的使用問題.txt


--//bbed的print簡寫p命令用來顯示塊的資料結構.當與dba結合有一些小問題.透過測試說明問題.


BBED> help print

PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]


1.環境:

SCOTT@book> @ ver1

PORT_STRING         VERSION        BANNER

------------------- -------------- --------------------------------------------------------------------------------

x86_64/Linux 2.4.xx 11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production


SCOTT@book> select rowid,dept.* from dept;

ROWID                  DEPTNO DNAME          LOC

------------------ ---------- -------------- -------------

AAAVRCAAEAAAACHAAA         10 ACCOUNTING     NEW YORK

AAAVRCAAEAAAACHAAB         20 RESEARCH       DALLAS

AAAVRCAAEAAAACHAAC         30 SALES          CHICAGO

AAAVRCAAEAAAACHAAD         40 OPERATIONS     BOSTON


SCOTT@book> @ rowid AAAVRCAAEAAAACHAAA

    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT

---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------

     87106          4        135          0  0x1000087           4,135                alter system dump datafile 4 block 135 ;


2.使用bbed:


BBED> set dba 4,135

        DBA             0x01000087 (16777351 4,135)


--//一般使用dba可以有3種格式,

1.使用file#,block#格式 ,例子 4,135

2.使用十進位制數  例子  16777351

3.使用十六進位制數 例子 0x01000087


BBED> set dba 4,135

        DBA             0x01000087 (16777351 4,135)


BBED> set dba 16777351

        DBA             0x01000087 (16777351 4,135)


BBED> set dba 0x1000087

        DBA             0x01000087 (16777351 4,135)


--//三種格式都是一樣的.


3.但是print與dba結合在一起使用存在一些問題:

BBED> p dba 4,135 kdbr

sb2 kdbr[0]                                 @118      8062

sb2 kdbr[1]                                 @120      8040

sb2 kdbr[2]                                 @122      8020

sb2 kdbr[3]                                 @124      7996

--//使用file#,block#格式沒有問題.


BBED> p dba 0x1000087 kdbr

BBED-00207: invalid offset specifier (dba)



BBED> p dba 16777351 kdbr

BBED-00207: invalid offset specifier (dba)


$ oerr bbed 00207

0207,  1,  "invalid offset specifier (%s)"

// *Cause:  The specified symbol is not in the block or the indirect offset

//          value is out of range.


--//很奇怪第2,3種格式都存在問題,加入offset 引數才可以使用.

BBED> p dba 16777351 offset 118 kdbr

sb2 kdbr[0]                                 @118      8062

sb2 kdbr[1]                                 @120      8040

sb2 kdbr[2]                                 @122      8020

sb2 kdbr[3]                                 @124      7996


BBED> p dba 16777351 offset 118

kdbr[0]

-------

sb2 kdbr[0]                                 @118      8062


--//只要加入offset引數就可以,不管偏移如何.

BBED> p dba 16777351 offset 0 kdbr

sb2 kdbr[0]                                 @118      8062

sb2 kdbr[1]                                 @120      8040

sb2 kdbr[2]                                 @122      8020

sb2 kdbr[3]                                 @124      7996


BBED> p dba 0x01000087 offset 1 kdbr

sb2 kdbr[0]                                 @118      8062

sb2 kdbr[1]                                 @120      8040

sb2 kdbr[2]                                 @122      8020

sb2 kdbr[3]                                 @124      7996

--//也就是p 加入dba 模式如何使用第2,3種格式,必須加入offset引數.

--//也包括assign命令也是一樣.


BBED> assign dba 16777351  kdbr[0]=8062;

BBED-00207: invalid offset specifier (dba)


BBED> assign dba 0x01000087  kdbr[0]=8062;

BBED-00207: invalid offset specifier (dba)


BBED> assign dba 0x01000087  offset 0 kdbr[0]=8062;

BBED-00202: invalid parameter (kdbr[0])


--//這種方式僅僅修改偏移的資訊,而且僅僅1個位元組,例子:

BBED> x /rncc  *kdbr[0]

rowdata[66]                                 @8162

-----------

flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)

lock@8163: 0x01

cols@8164:    3


col    0[2] @8165: 10

col   1[10] @8168: ACCOUNTING

col    2[8] @8179: NEW YORK


BBED> assign dba 0x01000087 offset 8162 = 0x2c01

BBED-00217: unable to assign: (11265) is out of range (0, 255)


BBED> assign dba 0x01000087 offset 8162 = 0x2c

ub1 rowdata[0]                              @8162     0x2c


BBED> assign dba 4,135  kdbr[0]=8062;

sb2 kdbr[0]                                 @118      8062


--//奇怪的是EXAMINE命令(簡寫x),沒有這個問題.

BBED> x /rncc dba 0x01000087 *kdbr[0]

rowdata[66]                                 @8162

-----------

flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)

lock@8163: 0x01

cols@8164:    3


col    0[2] @8165: 10

col   1[10] @8168: ACCOUNTING

col    2[8] @8179: NEW YORK


BBED> x /rncc dba 0x01000087 offset 0 *kdbr[0]

rowdata[66]                                 @8162

-----------

flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)

lock@8163: 0x01

cols@8164:    3


col    0[2] @8165: 10

col   1[10] @8168: ACCOUNTING

col    2[8] @8179: NEW YORK


--//總結:這些都是一些細節問題,工作中遇到有時候覺得很奇怪.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2286706/,如需轉載,請註明出處,否則將追究法律責任。

相關文章