[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
------------------------------ -------------- --------------------------------------------------------------------------------
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> create table dept2 tablespace tea as select * from dept ;
Table created.

SCOTT@book> select ora_rowscn,rowid,dept2.* from dept2 ;
  ORA_ROWSCN ROWID                    DEPTNO DNAME          LOC
------------ ------------------ ------------ -------------- -------------
13238134154 AAAW9NAAHAAAACDAAA           10 ACCOUNTING     NEW YORK
13238134154 AAAW9NAAHAAAACDAAB           20 RESEARCH       DALLAS
13238134154 AAAW9NAAHAAAACDAAC           30 SALES          CHICAGO
13238134154 AAAW9NAAHAAAACDAAD           40 OPERATIONS     BOSTON

SCOTT@book> @ &r/rowid AAAW9NAAHAAAACDAAA
      OBJECT         FILE        BLOCK          ROW DBA                  TEXT
------------ ------------ ------------ ------------ -------------------- ----------------------------------------
       94029            7          131            0 7,131                alter system dump datafile 7 block 131 ;

SCOTT@book> alter system checkpoint;
System altered.

SCOTT@book> select * from v$dbfile where file#=7;
       FILE# NAME
------------ ----------------------------------------
           7 /mnt/ramdisk/book/tea01.dbf

2.拷贝数据文件到windows:
BBED> set dba 7,132
        DBA             0x01c00084 (29360260 7,132)

--//注意windwos下使用bbedb lock+1.而在在9i的windows下测试,就不需要+1,不知道为什么?

--而我今天在取出9i(windows)的一个数据文件到另外的机器查看:

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE    9.2.0.8.0       Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production

CREATE TABLESPACE INDX DATAFILE
  'D:\ORACLE\ORADATA\ORCL\INDX01.DBF' SIZE 10M AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO;

SQL> create table deptx tablespace indx as select * from scott.dept ;

SQL> select rowid x,deptx.* from deptx;

X                      DEPTNO DNAME          LOC
------------------ ---------- -------------- -------------
AAALOOAAGAAAAAMAAA         10 ACCOUNTING     NEW YORK
AAALOOAAGAAAAAMAAB         20 RESEARCH       DALLAS
AAALOOAAGAAAAAMAAC         30 SALES          CHICAGO
AAALOOAAGAAAAAMAAD         40 OPERATIONS     BOSTON

SCOTT@book> @ &r/rowid AAALOOAAGAAAAAMAAA
    OBJECT       FILE      BLOCK        ROW DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- ----------------------------------------
     45966          6         12          0 6,12                 alter system dump datafile 6 block 12 ;

--然后把数据文件拷贝到另外一台机器.
BED> set dba 6,12
       DBA             0x0180000c (25165836 6,12)

BED> map
File: R:\INDX01.DBF (6)
Block: 12                                    Dba:0x0180000c
-----------------------------------------------------------
KTB Data Block (Table/Cluster)
struct kcbh, 20 bytes                      @0
struct ktbbh, 96 bytes                     @20
struct kdbh, 14 bytes                      @124
struct kdbt[1], 4 bytes                    @138
sb2 kdbr[4]                                @142
ub1 freespace[7946]                        @150
ub1 rowdata[92]                            @8096
ub4 tailchk                                @8188

BBED> p *kdbr[0]
rowdata[66]
-----------
ub1 rowdata[66]                             @8162     0x2c

BBED> x /rncc
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

--可以发现访问9i的数据文件是正常的,不需要在block上+1.为什么?这样很容易确定问题在块头.

$ od -tx1 -N 8192 tea01.dbf
0000000 00 a2 00 00 00 00 c0 ff 00 00 00 00 00 00 00 00
0000020 66 ff 00 00 00 20 00 00 00 05 00 00 7d 7c 7b 7a
                    ~~~~~
0000040 a0 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0020000

$ od -tx1 -N 8192 INDX01.DBF
0000000 00 00 00 00 00 20 00 00 00 05 00 00 6d 6c 6b 6a
                    ~~~~~
0000020 06 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0020000

--说明:tea01.dbf是11g的数据文件,而INDX01.DBF是9i的数据文件.对比可以发现两者存在很大的不同.不过表示块大小的
--8192 = 0x2000,11g与10g的位置不一样.
--7d 7c 7b 7a 出现的位置与9i的也不一致.

--反过来在linux的bbed打开9i的文件看看:
BBED> set filename '/home/oracle/xxx/INDX01.DBF'
        FILENAME        /home/oracle/xxx/INDX01.DBF

BBED> set block 12
        BLOCK#          12
BBED> x /1rncc rowdata
rowdata[0]                                  @8096
----------
flag@8096: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8097: 0x00
cols@8098:    3

col    0[2] @8099: 40
col   1[10] @8102: OPERATIONS
col    2[6] @8113: BOSTON

--ok正常的.看来是windows9i版本的bbed不能向上兼容,或者讲表示块大小0x2000的位置不对.注意看~
--如果你使用9i的os文件头替换11g的数据文件,就正常了.
--注意:千万不要生产系统做这个动作!!我这里仅仅测试的需要.

R:\>od -tx1 -N 8192 tea01.dbf
od -tx1 -N 8192 tea01.dbf
0000000 00 00 00 00 00 20 00 00 00 05 00 00 6d 6c 6b 6a
0000020 06 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0020000

BBED> set dba 7,131
        DBA             0x01c00083 (29360259 7,131)

BBED> map
 File: R:\tea01.dbf (7)
 Block: 131                                   Dba:0x01c00083
------------------------------------------------------------
 KTB Data Block (Table/Cluster)
 struct kcbh, 20 bytes                      @0
 struct ktbbh, 96 bytes                     @20
 struct kdbh, 14 bytes                      @124
 struct kdbt[1], 4 bytes                    @138
 sb2 kdbr[4]                                @142
 ub1 freespace[7946]                        @150
 ub1 rowdata[92]                            @8096
 ub4 tailchk                                @8188

BBED> x /1rncc rowdata
rowdata[0]                                  @8096
----------
flag@8096: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8097: 0x00
cols@8098:    3

col    0[2] @8099: 40
col   1[10] @8102: OPERATIONS
col    2[6] @8113: BOSTON

--总之问题在于windows下的bbed(目前9i版本),无法识别11g(没有测试10g)的OS头,导致计算块时出现偏移.
--也就是要访问11g的数据块要在原来的基础上+1.

[20160606]windows下使用bbed的疑问.txt相关推荐

  1. 照片的批量命名—Windows下利用cmd命令、txt文件、excel工具和bat文件对照片进行批量重命名

    照片的批量命名 在网上搜了很多批量命名的办法,都不太对我胃口,于是,我又摸索出以前的一套笨办法,当时也是在网络上学到的,但现在找不到了,特地记录下来.另外,现在网上也有批量命名照片的软件,我使用过,挺 ...

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

    [20161006]windows下bbed使用注意.txt --我已经多次提到windows下 的bbed 存在一个偏移看10g以上的数据文件,主要问题在于windows的bbed来自9i,以后不在 ...

  3. windows下面的txt在linux下面显示为乱码

    windows下面的txt正确保存操作后, 传递到linux,发现是乱码. 解决方案: linux下面,整个txt文件拖入chrome浏览器,然后把浏览器里面的内容重新保存即可

  4. 数据挖掘实验二结果(构建cube的三个维度,即三个txt,然后做各种查询)C++实现(代码调试环境为Windows下的CLion使用WSL的Linux)

    数据挖掘实验二结果(构建cube的三个维度,即三个txt,然后做各种查询)C++实现(代码调试环境为Windows下的CLion使用WSL的Linux) 构建cube的三个维度,查询三家店七天四物的销 ...

  5. Python——windows下pip换源 和 自动生成和安装requirements.txt

    当自己电脑(Windows系统)装python的第三方包出现timeout时,一般就是下载速度太慢了.采取的方法可以跟换pip的下载源. 转载文章的链接:[python]windows下pip换源 P ...

  6. windows下的中文文件名共享在linux下显示乱码的问题

    1.现象描述 在windos环境下有一个含有中文的文件名,比如dataset_省调.scd. 在linux(虚拟机)下通过挂载系统将该文件挂载在/mnt/hgfs目录下,显示为乱码.但是通过ftp将文 ...

  7. windows 下cmake的使用

    windows下使用cmake--HelloWorld  教程 step0:新建一个用来存放工程文件的文件夹 step1:用记事本或者写字板写一个"HelloWorld.cpp", ...

  8. Windows 下使用 runas 命令以指定的权限启动一个进程(非管理员、管理员)

    在默认情况下,Windows 系统中启动一个进程会继承父进程的令牌.如果父进程是管理员权限,那么子进程就是管理员权限:如果父进程是标准用户权限,那么子进程也是标准用户权限. 我们也知道,可以使用一些方 ...

  9. WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))

    第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...

最新文章

  1. 【工具使用系列】关于 MATLAB 机器视觉,你需要知道的事
  2. linux 解压缩常用命令
  3. 让用户故事真的像故事那样
  4. boost::set_intersection相关的测试程序
  5. 个人作业7 第一阶段SCRUM冲刺(七)
  6. vue加跨域代理静态文件404_vue-cli 设置跨域代理 线上地址报404
  7. 用unity制作能量护盾(2)
  8. Linux中防火墙端口查看,开启与关闭
  9. ScreenFlow 录制Mac电脑声音
  10. 机器人资和迅_《机器人与智能系统》-工业机器人与智能机器人杂志-工业自动化领域时尚先锋传媒!...
  11. 【DP专题】——洛谷P5144蜈蚣
  12. 龙与地下城中的人物属性
  13. HBulider X js内存溢出
  14. 【设计模式】单例模式是什么?如何实现单例模式?单例模式常见问题?
  15. 力天创见人脸识别客流统计方案
  16. Python魔方方法详解
  17. 基于NodeJs的爬虫
  18. Job And Schedule (V8R6C4)
  19. 人工智能考试复习题(自己背的)
  20. 将搜狗词库.scel格式转化为.txt格式

热门文章

  1. 常量指针、指针常量以及指向常量的指针常量
  2. OpenCV3学习(4.1)——图像阈值操作(Threshold,AdaptiveThreshold)
  3. 在Linux下编写C++程序,使用gcc编译c++出错
  4. PTA c语言 统计一行文本的单词个数
  5. b树c语言,B树——思路、及C语言代码的实现
  6. Octave 作图 无响应
  7. svn is already locked解决办法
  8. BZOJ 3357: [Usaco2004]等差数列( dp )
  9. MYSQL 5.1自动安装脚本
  10. Nobody can go back and start a new beginning, but anyone can start now and make a new ending.