ITPub博客

首页 > 数据库 > Oracle > [20181227]bbed的使用问题.txt

[20181227]bbed的使用问题.txt

原创 Oracle 作者:lfree 时间:2018-12-27 17:07:09 0 删除 编辑

[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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    2669
  • 访问量
    6428107