[20161006]windows下bbed使用注意.txt
--我已经多次提到windows下 的bbed 存在一个偏移看10g以上的数据文件,主要问题在于windows的bbed来自9i,以后不在出现。
--而这个版本无法识别10g以上的数据文件的第1块OS块,导致出现偏差:
http://blog.itpub.net/267265/viewspace-2109019/
http://blog.itpub.net/267265/viewspace-2116311/
--而实际上更严重的问题是这个版本识别第1块存在问题。通过例子来说明:
1.环境:
SYS@test> select * from v$version ;
BANNER CON_ID
-------------------------------------------------------------------------------- ------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
PL/SQL Release 12.1.0.1.0 - Production 0
CORE 12.1.0.1.0 Production 0
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production 0
NLSRTL Version 12.1.0.1.0 - Production 0
BBED> info
File# Name Size(blks)
----- ---- ----------
1 D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF 0
2 D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSTEM01.DBF 0
3 D:\APP\ORACLE\ORADATA\TEST\SYSAUX01.DBF 0
4 D:\APP\ORACLE\ORADATA\TEST\PDBSEED\SYSAUX01.DBF 0
5 D:\APP\ORACLE\ORADATA\TEST\UNDOTBS01.DBF 0
6 D:\APP\ORACLE\ORADATA\TEST\USERS01.DBF 0
7 D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSTEM01.DBF 0
8 D:\APP\ORACLE\ORADATA\TEST\TEST01P\SYSAUX01.DBF 0
9 D:\APP\ORACLE\ORADATA\TEST\TEST01P\SAMPLE_SCHEMA_USERS01.DBF 0
10 D:\APP\ORACLE\ORADATA\TEST\TEST01P\EXAMPLE01.DBF 0
15 D:\APP\ORACLE\ORADATA\TEST\TEST01P\LFREE01.DBF 0
2.测试:
BBED> set dba 1,2
DBA 0x00400002 (4194306 1,2)
--//注实际上访问的是dba 1,1
BBED> p kcvfhtnm
text kcvfhtnm[0] @250
text kcvfhtnm[1] @251
text kcvfhtnm[2] @252
text kcvfhtnm[3] @253
text kcvfhtnm[4] @254
text kcvfhtnm[5] @255
text kcvfhtnm[6] @256
text kcvfhtnm[7] @257
text kcvfhtnm[8] @258
...
BBED> p kcvfh.kcvfhtnm
text kcvfhtnm[0] @250
text kcvfhtnm[1] @251
text kcvfhtnm[2] @252
text kcvfhtnm[3] @253
text kcvfhtnm[4] @254
text kcvfhtnm[5] @255
text kcvfhtnm[6] @256
text kcvfhtnm[7] @257
text kcvfhtnm[8] @258
text kcvfhtnm[9] @259
--很奇怪吧,这个版本无法看到数据文件的表空间名字。
BBED> p kcvfhtln
ub2 kcvfhtln @248 0x0000
--表空间的长度也是0,明显不对。
3.而实际上表空间的名字在偏移offset=338
BBED> dump /v count 30 offset 336
File: D:\APP\ORACLE\ORADATA\TEST\SYSTEM01.DBF (1)
Block: 2 Offsets: 336 to 365 Dba:0x00400002
-----------------------------------------------------------------------------------------------------------
06005359 5354454d 00000000 00000000 00000000 00000000 00000000 0000 l ..SYSTEM......................
<32 bytes per line>
--前面的0x06 表示表空间的长度,是6对上的。
--也就是说这个版本无法识别10g以上的文件头,至少存在错误,在使用中要特别注意。在选择修复时要特别注意,切记!!
--或者讲这个版本仅仅能看9i或者以下的数据文件。
4.我们可以拷贝1个9i的数据文件来验证我的判断:
BBED> set width 150
WIDTH 150
BBED> info
File# Name Size(blks)
----- ---- ----------
1 D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF 0
2 D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF 0
3 D:\ORACLE\ORADATA\ORCL\CWMLITE01.DBF 0
4 D:\ORACLE\ORADATA\ORCL\DRSYS01.DBF 0
5 D:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF 0
6 D:\ORACLE\ORADATA\ORCL\INDX01.DBF 0
7 D:\ORACLE\ORADATA\ORCL\ODM01.DBF 0
8 D:\ORACLE\ORADATA\ORCL\TOOLS01.DBF 0
9 D:\ORACLE\ORADATA\ORCL\USERS01.DBF 0
10 D:\ORACLE\ORADATA\ORCL\XDB01.DBF 0
BBED> set dba 6,1
DBA 0x01800001 (25165825 6,1)
BBED> p kcvfhtnm
text kcvfhtnm[0] @250 I
text kcvfhtnm[1] @251 N
text kcvfhtnm[2] @252 D
text kcvfhtnm[3] @253 X
text kcvfhtnm[4] @254
...
BBED> p kcvfhtln
ub2 kcvfhtln @248 0x0004
--//表空间名长度也正确。
--//可以看到使用windows的bbed看9i的数据文件是正常的,而且偏移250.也就是9版本的bbed看10g以上的数据文件头是存在问题的。
--//我查看使用的版本是for windows的版本。
5.再将这个INDX01.DBF拷贝到linux看看:
BBED> info
File# Name Size(blks)
----- ---- ----------
1 /mnt/ramdisk/book/system01.dbf 0
2 /mnt/ramdisk/book/sysaux01.dbf 0
3 /mnt/ramdisk/book/undotbs01.dbf 0
4 /mnt/ramdisk/book/users01.dbf 0
5 /mnt/ramdisk/book/example01.dbf 0
6 /mnt/ramdisk/book/tea01.dbf 0
14 /home/oracle/backup/users01.dbf 0
20 /home/oracle/bbed/icare_asm_header 0
21 /home/oracle/emp.aaa 0
22 /home/oracle/emp.aab 0
201 /mnt/ramdisk/book/temp01.dbf 0
306 /mnt/ramdisk/book/INDX01.DBF 0
BBED> p kcvfhtnm
text kcvfhtnm[0] @338
text kcvfhtnm[1] @339
text kcvfhtnm[2] @340
text kcvfhtnm[3] @341
text kcvfhtnm[4] @342
text kcvfhtnm[5] @343
text kcvfhtnm[6] @344
text kcvfhtnm[7] @345
text kcvfhtnm[8] @346
BBED> p kcvfhtln
ub2 kcvfhtln @336 0x0000
--看system表空间数据文件:
BBED> set dba 1,1
DBA 0x00400001 (4194305 1,1)
BBED> p kcvfhtnm
text kcvfhtnm[0] @338 S
text kcvfhtnm[1] @339 Y
text kcvfhtnm[2] @340 S
text kcvfhtnm[3] @341 T
text kcvfhtnm[4] @342 E
text kcvfhtnm[5] @343 M
text kcvfhtnm[6] @344
text kcvfhtnm[7] @345
text kcvfhtnm[8] @346
text kcvfhtnm[9] @347
BBED> p kcvfhtln
ub2 kcvfhtln @336 0x0006
--//可见11g下的linux版本也不能看9i的数据文件头。
--//但是看普通的数据块应该没有问题,至少我没有遇到这个问题或者现象。这个应该在工作中引起注意。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/267265/viewspace-2125913/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/267265/viewspace-2125913/