[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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/267265/viewspace-2286706/