ITPub博客

首页 > 数据库 > Oracle > [20251117]使用bbed p dba命令遇到的问题.txt

[20251117]使用bbed p dba命令遇到的问题.txt

原创 Oracle 作者:lfree 时间:2025-11-19 21:28:15 2 删除 编辑

[20251117]使用bbed p dba命令遇到的问题.txt

--//前几天使用bbed遇到的问题,就是p命令的dba格式问题,做一个记录,只能讲bbed的一些行为有一些怪异。
--//好长时间不使用有点生疏了。

1.环境:
SCOTT@book01p> @ ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.使用dept表说明问题。

SCOTT@book01p> select rowid,dept.* from dept;
ROWID                  DEPTNO DNAME         LOC
------------------ ---------- ------------- -------------
AAASmfAAMAAAACDAAA         10 ACCOUNTING    NEW YORK
AAASmfAAMAAAACDAAB         20 RESEARCH      DALLAS
AAASmfAAMAAAACDAAC         30 SALES         CHICAGO
AAASmfAAMAAAACDAAD         40 OPERATIONS    BOSTON

SCOTT@book01p> @ rowid AAASmfAAMAAAACDAAA
DATA_OBJECT_ID       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
-------------- ---------- ---------- ---------- -------------------- -------------------- --------------------------------------------------
         76191         12        131          0  0x3000083           12,131               alter system dump datafile 12 block 131 ;

3.问题说明:

BBED> set dba 12,131
        DBA             0x03000083 (50331779 12,131)

BBED> set dba 0x3000083
        DBA             0x03000083 (50331779 12,131)

BBED> set dba 50331779
        DBA             0x03000083 (50331779 12,131)

--//可以发现使用以上三种格式没有任何问题,后面指向的数据块都是一样的,但是p命令就非常特别,以前没有注意。

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

BBED> P dba 12,131 kdbr
sb2 kdbr[0]                                 @118      8062
sb2 kdbr[1]                                 @120      8040
sb2 kdbr[2]                                 @122      8020
sb2 kdbr[3]                                 @124      7996

BBED> p dba 12,131 kdbr
sb2 kdbr[0]                                 @118      8062
sb2 kdbr[1]                                 @120      8040
sb2 kdbr[2]                                 @122      8020
sb2 kdbr[3]                                 @124      7996
--//大小写都没有问题。

BBED> p dba 50331779 kdbr
BBED-00207: invalid offset specifier (dba)

BBED> p dba 0x03000083 kdbr
BBED-00207: invalid offset specifier (dba)
--//可以发现p命令带入10进制或者16进制数值都会报错。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.

--//测试x命令看看:
BBED> x /rncc  dba 12,131 *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x00
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK

BBED> x /rncc  dba 50331779 *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x00
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK

BBED> x /rncc  dba 0x03000083 *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x00
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK
--//x命令就支持3种格式。x命令没问题。

--//看看assign命令如何:
BBED> x /rncc  dba 0x03000083 *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x00
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK

BBED> assign dba 0x03000083 offset 8162=0x3c
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
ub1 rowdata[0]                              @8162     0x3c

BBED> x /rncc  dba 50331779 *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH)
lock@8163: 0x00
cols@8164:    0
--//加入删除标识,看不见相关记录信息。

BBED> assign dba 50331779 offset 8162=0x2c
ub1 rowdata[0]                              @8162     0x2c

BBED> x /rncc  dba 50331779 *kdbr[0]
rowdata[66]                                 @8162
-----------
flag@8162: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8163: 0x00
cols@8164:    3

col    0[2] @8165: 10
col   1[10] @8168: ACCOUNTING
col    2[8] @8179: NEW YORK

--//我看了以前的工作日志,发现bbed for windows使用assign dba 0x03000083这样的方式不行。
BBED> assign /x dba 11,332 tailchk = fd040602
ub4 tailchk                                 @8188     0xfd040602

BBED> assign /x dba 0x02c0014c tailchk = fd040602
BBED-00207: invalid offset specifier (dba)

--//还可以发现bbed for windows支持0x8开头的修改,linux的版本不行。
--//继续测试:

BBED> set dba 12,131
        DBA             0x03000083 (50331779 12,131)

BBED> p dba 12,131 tailchk
ub4 tailchk                                 @8188     0xf9bb0601

BBED> assign dba 12,131 tailchk = 0xf9bb0601
BBED-00207: invalid offset specifier (f9bb0601)

BBED> assign dba 12,131 tailchk = 0x89bb0601
BBED-00207: invalid offset specifier (89bb0601)

BBED> assign dba 12,131 tailchk = 0x79bb0601
ub4 tailchk                                 @8188     0x79bb0601
--//仅仅支持开头最大0x7.

BBED> modify /x f9 dba 12,131 offset 8191
 File: /u01/oradata/BOOK/book01p/users01.dbf (12)
 Block: 131            Offsets: 8191 to 8191    Dba:0x03000083
---------------------------------------------------------------
 f9

 <64 bytes per line>
--//注意大小头问题,实际上修改偏移offset = 8191.

BBED> p dba 12,131 tailchk
ub4 tailchk                                 @8188     0xf9bb0601


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3102516/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969273