[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的数据文件头。

--//但是看普通的数据块应该没有问题,至少我没有遇到这个问题或者现象。这个应该在工作中引起注意。

时间: 2024-08-01 16:15:27

[20161006]windows下bbed使用注意.txt的相关文章

[20160531]windows下bbed修复corrupt数据块

[20160531]windows下bbed修复corrupt数据块.txt --昨天别人的问题,使用windows下的bbed修复corrupt数据块报错.我自己也重复测试看看: --bbed在windows的安装看: http://blog.itpub.net/267265/viewspace-2109019/ 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------

[20160911]windows下建立硬链接.txt

[20160911]windows下建立硬链接.txt --大家知道linux ln命令可以建立硬连接或者软连接.参考: http://blog.itpub.net/267265/viewspace-1812272/ --实际上windows下也有类似ln命令,只不过许多人很少在命令行使用windows,对于里面的命令行命令知道的更少. --通过例子说明,使用fsutil就可以建立硬连接.补充一点建立这种硬连接仅仅支持NTFS文件系统,不要指望支持FAT32. --实际上这个测试,主要有用户需求

[20160529]windows下使用bbed.txt

[20160529]windows下使用bbed.txt --windows下 oracle 9.2.0.8 自带bbed,10g以后的版本就没有带.可以从9i for windows下打包bbed,在10,11g for windows下使用. --我们生产系统目前还存一套oracle 9.2.0.8 for windows的系统,很久以前我就做好了,好像我参考了惜分飞的链接,我自己很少 --使用,最近拿来用用看: 1.整理需要的文件: D:\tools\bbed>ls -lR total 2

[20160606]windows下使用bbed的疑问.txt

[20160606]windows下使用bbed的疑问.txt --链接:http://blog.itpub.net/267265/viewspace-2109019/        http://blog.itpub.net/267265/viewspace-2109558/ --我曾经提到要访问的块要+1,比如: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER -------------

[20121120]windows下使用bbed.txt

[20121120]windows下使用bbed.txt 学习需要,需要在windows下使用bbed,但是我发现在windows下如何编译bbed呢?我google发现如下链接: http://www.xifenfei.com/3876.html 发现我公司的9.2.0.8的windows版本有bbed.exe,按照介绍我copy这些相关文件到我的机器:  驱动器 D 中的卷是 DATA 卷的序列号是 38FB-540B  D:\tools\bbed 的目录 2012-11-20  08:39

[20121203]windows下使用systeminfo查看本机信息.txt

[20121203]windows下使用systeminfo查看本机信息.txt 前几天看别人使用systeminfo命令查看本机信息,感觉显示很多,在自己的机器上做一个测试以及学习看看. d:\tools>systeminfo /? SYSTEMINFO [/S system [/U username [/P [password]]]] [/FO format] [/NH] 描述:    该工具显示本地或远程机器(包括服务包级别)的操作系统配置的信息. 参数列表:    /S      sys

分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目

分布式版本库--Windows下Git的环境部署以及在GitHub上开源自己的项目 这几天着实忙的焦头烂额,可惜不是搞技术,今天周日,难得闲下来,写篇大家都想学习的Git教程,其实廖雪峰老师的网站已经非常详细了,但是.咳咳,太长了,我就稍微简单点的来概括,其实Git在MAC和Ubuntu上的体验是最好的,不过搞Android开发的我相信绝大多数人还是用windows吧,当然不排除个例 廖雪峰教程:http://www.liaoxuefeng.com/wiki/001373951630592960

Windows下统计行数的命令

  大家都知道在Linux下统计文本行数可以用wc -l 命令,例如: -bash-3.2$ cat pif_install.log | wc -l 712 但在Windows下如何统计输出文本的行数呢,答案是使用find /c命令 1.统计包含某字符串的行数.例如在统计网络连接时的TIME_WAIT数等 netstat -an | find /i /c "TIME_WAIT" 这里/i参数是忽略大小写,/c参数是统计包含"TIME_WAIT"字符串的行数或记录数.

windows下命令行发送邮件blat.exe

  windows下命令行发送邮件blat.exe简介 下载最新的工具包,解压并拷贝到操作系统盘的System32 目录下.我的环境C:WindowsSystem32. 确认文件已经拷贝过去: blat.dll blat.exe blat.lib 批命令例子: ----------------- 例子开始 ----------------------------------------- @echo off :::::::::::::: 参数设置:::::::::::::: set from=x