bbed是oracle内部一款用来直接查看和修改数据文件数据的工具,可以直接修改Oracle数据文件块的内容,在一些特殊恢复场景下比较有用。

1.bbed 的安装

在9i/10g中连接生成bbed:
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

11g中缺省未提供BBED库文件,但可以把10g的文件copy到相应目录下,再进行编译

oracle 11g中缺bbed包,oracle11g bbed install and example
上传(sbbdpt.o ssbbded.o bbedus.msb,该三个文件拷贝oracle的linux64版本的)文件
$ORACLE_HOME/rdbms/lib/ssbbded.o
$ORACLE_HOME/rdbms/lib/sbbdpt.o
$ORACLE_HOME/rdbms/mesg/bbedus.msb

执行如下命令:
cd $ORACLE_HOME/rdbms/lib
make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

2.bbed 的使用

[oracle@ora11g ~]$ bbed -help
LRM-: syntax error at '-' at the end of input
PASSWORD - Required parameter
FILENAME - Database file name
BLOCKSIZE - Database block size
LISTFILE - List file name
MODE - [browse/edit]
SPOOL - Spool to logfile [no/yes]
CMDFILE - BBED command file name
LOGFILE - BBED log file name
PARFILE - Parameter file name
BIFILE - BBED before-image file name
REVERT - Rollback changes from BIFILE [no/yes]
SILENT - Hide banner [no/yes]
HELP - Show all valid parameters [no/yes]
BBED-: LRM error  occurred during command line parsing

为了用起来方便,可以先定义一个文件,将数据文件查询出来,放入到参数文件中

[oracle@ora11g ~]$ vi parameter.txt
blocksize=
listfile=dbfiles.txt
mode=edit

$vi dbfiles.txt
)||name||chr()||bytes from v$datafile;
    /u01/app/oracle/oradata/test1212/system01.dbf
    /u01/app/oracle/oradata/test1212/sysaux01.dbf
    /u01/app/oracle/oradata/test1212/undotbs01.dbf
    /u01/app/oracle/oradata/test1212/users01.dbf
    /u01/app/oracle/oradata/test1212/ss01.dbf    

用了参数文件之后再次进入:

[oracle@ora11g ~]$ bbed parfile=parameter.txt
Password: 

BBED: Release  - Limited Production on Fri Feb  :: 

Copyright (c) , , Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> 

3.初步使用

info命令 --显示当前可以进行browse 或者edit 的file。即filelist 里指定的datafile信息。

BBED> info
 File#  Name                                                        Size(blks)
 -----  ----                                                        ----------

show命令 -- 显示当前的配置选项

BBED> show all

    BLOCK#
    OFFSET              --偏移量,0代表从第1个字节,
    DBA                 ,) --DBA(data block addr)的组成 = 文件号 + 块号,一共32位
    FILENAME           /u01/app/oracle/oradata/test1212/system01.dbf
    BIFILE             bifile.bbd
    LISTFILE           dbfiles.txt
    BLOCKSIZE
    MODE               Edit
    EDIT               Unrecoverable
    IBASE              Dec
    OBASE              Dec
    WIDTH              

    LOGFILE            log.bbd
    SPOOL              No

备注:

DBA(data block addr) = file#(10bit) + block#(22bit) =32bit
所以文件个数最多是2的10次方=1024个

DBA = 0x00400001 ====> 0000 0000 0100 0000 0000 0000 0000 0001
从以上所知的前10位为file#,所以可以放一个分隔符再看:
0000 0000 01[分隔符]00 0000 0000 0000 0000 0001 (4194305 1,1)
可以看出file#=1,block#=1 ,就和上面的show出来的信息对应起来了

set命令 --设置相应的信息

如果要查看2号文件的2号块,则可以使用set命令来设置文件号和块号

BBED

BBED
    BLOCK#             

BBED> show all

    BLOCK#
    OFFSET
    DBA                 ,)
    FILENAME           /u01/app/oracle/oradata/test1212/sysaux01.dbf
    BIFILE             bifile.bbd
    LISTFILE           dbfiles.txt
    BLOCKSIZE
    MODE               Edit
    EDIT               Unrecoverable
    IBASE              Dec
    OBASE              Dec
    WIDTH              

    LOGFILE            log.bbd
    SPOOL              No

DBA        

再次回到1号文件的0号块

BBED

BBED
    BLOCK#             

BBED> show all

    BLOCK#
    OFFSET
    DBA                 ,)
    FILENAME           /u01/app/oracle/oradata/test1212/system01.dbf
    BIFILE             bifile.bbd
    LISTFILE           dbfiles.txt
    BLOCKSIZE
    MODE               Edit
    EDIT               Unrecoverable
    IBASE              Dec
    OBASE              Dec
    WIDTH              

    LOGFILE            log.bbd
    SPOOL              No

dump命令 --十六进制查看block

dump /v --查看十六进制内容的同时以文本方式“翻译”十六进制显示的内容,相当于对当前block执行strings命令

BBED> dump
 )
 Block:                             Dba:0x00400000
------------------------------------------------------------------------
 00a20000 0000c0ff   67ae0000   7d7c7b7a
 a0810000        

  bytes per line>

备注:

从Offsets可以看出,只显示了0-511个字节的偏移,也就是512个字节的信息,因为默认是 COUNT=512
我们知道oracle一个块默认大小8192,所以如果要让一个块的dump信息显示完全的话,就可以set count 8192,再执行dump

map命令 --Map会通过偏移量来显示block里的详细信息,如block header,data block header 和row directory。 
在不指定block的情况下,会显示当前block的信息,如果想显示其他block的信息,可以使用file name,file id,block 和DBA 来指定要显示的block。

BBED> map
 )
 Block:                                      Dba:0x00400001
------------------------------------------------------------
 Data File Header
 struct kcvfh,  bytes                    @0
 ub4 tailchk                                @8188  

备注:
u 代表没有符号的 unsigned
tailchk 尾部校验,一共是8192个块,因为是从0开始的,所以最后一个字节是8191,换句话说就是从8188-8191这4个字节是不能用的,是拿来做尾部校验的

struct kcvfh ,其中的kcvfh其实在oracle中也有一个视图可以查询select * from x$kcvfh; 今后再进行仔细研究

map /v --比map更详细的查看block里面的信息

 BBED> map /v
 )
 Block:                                      Dba:0x00400001
------------------------------------------------------------
 Data File Header

 struct kcvfh,  bytes                    @0
    struct kcvfhbfh,  bytes               @0
    struct kcvfhhdr,  bytes               @20
    ub4 kcvfhrdb                            @96
    struct kcvfhcrs,  bytes                @100
    ub4 kcvfhcrt                            @108
    ub4 kcvfhrlc                            @112
    struct kcvfhrls,  bytes                @116
    ub4 kcvfhbti                            @124
    struct kcvfhbsc,  bytes                @128
    ub2 kcvfhbth                            @136
    ub2 kcvfhsta                            @138
    struct kcvfhckp,  bytes               @484
    ub4 kcvfhcpc                            @140
    ub4 kcvfhrts                            @144
    ub4 kcvfhccc                            @148
    struct kcvfhbcp,  bytes               @152
    ub4 kcvfhbhz                            @312
    struct kcvfhxcd,  bytes               @316
    sword kcvfhtsn                          @332
    ub2 kcvfhtln                            @336
    ]                       @338
    ub4 kcvfhrfn                            @368
    struct kcvfhrfs,  bytes                @372
    ub4 kcvfhrft                            @380
    struct kcvfhafs,  bytes                @384
    ub4 kcvfhbbc                            @392
    ub4 kcvfhncb                            @396
    ub4 kcvfhmcb                            @400
    ub4 kcvfhlcb                            @404
    ub4 kcvfhbcs                            @408
    ub2 kcvfhofb                            @412
    ub2 kcvfhnfb                            @414
    ub4 kcvfhprc                            @416
    struct kcvfhprs,  bytes                @420
    struct kcvfhprfs,  bytes               @428
    ub4 kcvfhtrt                            @444
 ub4 tailchk                                @8188   

print命令 --查看命令,可以用p来简写

如果想对上面的 struct kcvfhbfh再进行详细的查看,可以使用命令print来查看

BBED> p kcvfhbfh
struct kcvfhbfh,  bytes                   @0
   ub1 type_kcbh                            @0        0x0b
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x00400001
   ub4 bas_kcbh                             @8        0x00000000
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)
   ub2 chkval_kcbh                          @16       0xe81a
   ub2 spare3_kcbh                          @18       0x0000

bbed的使用--安装及初探的更多相关文章

  1. freeswitch编译安装,初探, 以及联合sipgateway, webrtc server的使用场景。

    本文主要记录freeswitch学习过程. 一 安装freeswitch NOTE 以下两种安装方式,再安装的过程中遇到了不少问题,印象比较深刻的就是lua库找到不到这个问题.这个问题发生在make ...

  2. SMACH专题(一)----安装与初探

    最近使用ROS进行任务(Task)执行,深切体会用传统的方法实现是极其繁杂的.比如人脸录入工作,包含人脸检测,识别,语音提示,运动控制,这些子部分基本都是通过订阅话题的回调函数中处理,之间的切换,如人 ...

  3. 虚拟机安装&Linux初探

    学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 安装虚拟机的过程还算顺利.除了在安装增强设备功能时需要将之前的硬盘弹出之外,没有遇到其他的问题. 通过实 ...

  4. Python模块安装路径初探

    在调用MySQL第三方工具mysqlrplsync是报错 mysqlrplsync --master=checksum:checksum@master_ip:3306 --slave=checksum ...

  5. oracle之 11.2.0.4 bbed安装

    一. bbed安装: 1.ORACLE 11G下安装BBED,需要从ORACLE 10G中复制三个包 sbbdpt.o .ssbbded.o 并将两个文件移到$ORACLE_HOME/rdbms/li ...

  6. 一个winform带你玩转rabbitMQ

    源码已放出 https://github.com/dubing/MaoyaRabbit 本章分3部分 一.安装部署初探 二.进阶 三.api相关 安装 部署 初探 先上图 一. 安装部署 下载 rab ...

  7. 20155330 2016-2017-2《Java程序设计》课程总结

    20155330 2016-2017-2<Java程序设计>课程总结 目录 每周作业链接汇总 实验报告链接汇总 代码托管 课堂项目实践 课程收获与不足 问卷调查 给出你的总结中涉及到的链接 ...

  8. oracle--BBED (dump 深入实践三)

    一,工具介绍 bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具. 一般此工具倾向于仅作为Oracle内部使用,且Oracl ...

  9. BBED的安装

    BBED是Block Browser EDitor的缩写,只有linux/unix版本,没有windows版本. 11g中默认是不带bbed的,如果要使用,可以在10g中拷贝过来,然后再进行编译使用. ...

随机推荐

  1. http apr 8080 exec 3解决

    IDEA运行tomcat,总是出现这个错误. 解决: 在tomcat的配置里,加上下面这句话: -Xms256m -Xmx512m -XX:MaxNewSize=64m -XX:MaxPermSize ...

  2. 算法手记 之 数据结构(堆)(POJ 2051)

    一篇读书笔记 书籍简评:<ACM/ICPC 算法训练教程>这本书是余立功主编的,代码来自南京理工大学ACM集训队代码库,所以小编看过之后发现确实很实用,适合集训的时候刷题啊~~,当时是听了 ...

  3. 警告: 程序集绑定日志记录被关闭(IIS7 64位系统)

    部署一个.NET程序在IIS7服务器,出现如下信息: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: S ...

  4. oracle触发器,一个表新增、修改的同时同步另一张表

    oracle创建触发器,把本地新增.修改数据过程同步到另一个服务器上去. 如果是本地,加数据库名即可.如果是远程服务器,不是一台机器,做一个db_link操作即可. ----------------- ...

  5. GridView中使用分页控件

    前台:导入<%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix= ...

  6. ios block中引用self

    __block __weak typeof(self) tmpSelf = self; ^(){ tmpSelf...... }

  7. java删除被占用的文件

    boolean result = f.delete();//判断是否删除完毕 if(!result) { System.gc();//系统进行资源强制回收 f.delete; }

  8. 经典.net试题

    经典.net面试题目 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :   私有成员, 在类的内部才可以访问. pr ...

  9. YCbCr 编码格式(YUV)---转自Crazy Bingo的博客

    YCbCr是DVD.摄像机.数字电视等消费类视频产品中,常用的色彩编码方案. YCbCr 有时会称为 YCC..Y'CbCr 在模拟分量视频(analog component video)中也常被称为 ...

  10. 写了个简单的pdo的封装类

    <?php class PD { //造对象 public $dsn = "mysql:dbname=test2;host=localhost"; //数据库类型,数据库名和 ...