[20161006]windows下bbed使用注意.txt

[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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供10g,11g linux及windows BBED工具 及详细编译说明readme文件。 一. 10g linux编译BBED [oracle@node3 ~]$ cd $ORACLE_HOME/rdbms/lib [oracle@node3 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed 直接生成到bin下为可执行文件 编译完成后: 编译成功后登陆BBED,登陆时需要密码(BBED的默认密码是blockedit) [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 二. 11g linux编译BBED oracle 11gR2环境中编译BBED可执行文件所需要的ssbbded.o和sbbdpt.o对象文件被移除,不过可以从oracle 10g环境中将这两个文件拷贝到oracle11g环境进行编译。 除了将上面的ssbbded.o和sbbdpt.o 文件拷贝到11g环境外,BBED还需要用到 $ORACLE_HOME/rdbms/mesg目录下的bbedus.msb这个信息文件, 这几个文件都需要从oracle10g中拷贝到oracle11g中对于的目录中。 文件夹linux_10g_bbed_64 包括了这3个文件。 下面是将以上3个文件从Oracle 10g中拷贝到11g对于目录后编译的过程。 1)把linux_10g_bbed_64目录下的10g的ssbbded.o和sbbdpt.o 放到 $ORACLE_HOME/rdbms/lib 目录下 2)把linux_10g_bbed_64目录下的10g的 bbedus.msb 文件拷贝到 $ORACLE_HOME/rdbms/mesg目录下 3)编译 [oracle@node1 ~] cd $ORACLE_HOME/rdbms/lib [oracle@node1 ~] make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 三、windows 11GR2 bbed oracle9i版本以后Oracle不装载BBED了, Windows上也没有makefile来编译bbed。 所以,如果你想在Windows使用bbed,你需要很多文件(本下载压缩包已经全包含了): 你需要一个bbed.exe. 你只能从Oracle 9i的安装中得到它。 你需要有一堆的DLL。所有这些DLL在Oracle9i安装中可以得到。 使用BBED需要消息文件。这文件是“bbedus.msb”,位于Oracle9i安装的MESG目录下。而你需要将其复制到ORACLE_HOME的RDBMS\MESG目录下。 这些在目录本压缩包的 bbed_win 中已经全部提供了。 把它们放在BBED安装的目录下(比如D:\bbed_win),环境变量ORACLE_HOME设置好。确保消息文件在$ORACLE_HOME\RDBMS\MESG下,最后启动BBED: D:\bbed_win>bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:20:43 2018 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值