一,工具介绍

  bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具。

一般此工具倾向于仅作为Oracle内部使用,且Oracle公司并不公开此工具使用细节。

由于bbed可以对Oracle数据库中的数据块进行内容修改和破坏,因此此工具功能强大同时伴有很高的使用风险。

二,工具安装

  模块和库地址:

https://files.cnblogs.com/files/kingle-study/BBED.zip

[oracle@oracle01 ~]$ cd BBED/
[oracle@oracle01 BBED]$ ls
bbedus.msb bbedus.msg BBED配置说明.txt sbbdpt.o ssbbded.o
[oracle@oracle01 BBED]$ l
-bash: l: command not found
[oracle@oracle01 BBED]$ ls
bbedus.msb bbedus.msg BBED配置说明.txt sbbdpt.o ssbbded.o
[oracle@oracle01 BBED]$ mv ssbbded.o sbbdpt.o $ORACLE_HOME/rdbms/lib/ ---文件拷贝到oracle 库下面
[oracle@oracle01 BBED]$ mv bbedus* $ORACLE_HOME/rdbms/mesg/ ----文件拷贝到oracle 模块下面
[oracle@oracle01 BBED]$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLEME/bin/bbed ---执行编译安装 Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/11.2./db_1/bin/bbed
gcc -o /u01/app/oracle/product/11.2./db_1/bin/bbed -m64 -z
noexecstack -L/u01/app/oracle/prob/ -L/u01/app/oracle/product/11.2.
/db_1/lib/ -L/u01/app/oracle/product/11.2./db_1/lib/stubst/11.2.
/db_1/lib/s0main.o /u01/app/oracle/product/11.2./db_1/rdbms
/lib/ssbbded.o /u01/app/o/rdbms/lib/sbbdpt.o `cat /u01/app/oracle
/product/11.2./db_1/lib/ldflags` -lncrypt11 -lnsg -ldbtools11 -lclntsh
`cat /u01/app/oracle/product/11.2./db_1/lib/ldflags` -lncrypt11
-ll11 -lnro11 `cat /u01/app/oracle/product/11.2./db_1/lib/ldflags`
-lncrypt11 -lnsgr11 -lnz -lzt11 -lztkg11 -lclient11 -lnnetd11 -lvsn11
-lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11
-lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat
/.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11
-lnro11 `cat /u01/app/oraib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11
-ln11 -lnl11 -lclient11 -lnnetd11 -lvsn11 -lcomm11 -lnls11 -lcore11
-lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11
-lsnls11 -lclient11 -lnnetd11 -lvsn11 -lcommon11 -lgeneric11 -lsnls11
-lnls11 -lcore11 -lsnls111 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11
-lnls11 -lcore11 -lnls11 `cat /u01/app/oraclesysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2./db_1/lib -lm
`cat /u01/app/oracle/prliblist` -ldl -lm -L/u01/app/oracle/product/11.2./db_1/lib
[oracle@oracle01 BBED_10g_源码 x64]$ bbed
Password: 默认密码 blockeidt

三,配置文件

SQL> select file#||' '||name||' '||bytes from v$datafile ;

FILE#||''||NAME||''||BYTES
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/oracle01/system01.dbf
/u01/app/oracle/oradata/oracle01/sysaux01.dbf
/u01/app/oracle/oradata/oracle01/undotbs01.dbf
/u01/app/oracle/oradata/oracle01/users01.dbf
/u01/app/oracle/oradata/oracle01/example01.dbf
/u01/app/oracle/oradata/oracle01/test01.dbf
/u01/app/oracle/oradata/oracle01/test101.dbf 10485760 把输出的内容写道bbed.txt文件下面
cat bbed.txt
[oracle@oracle01 BBED]$ cat bbed.txt
1 /u01/app/oracle/oradata/oracle01/system01.dbf 849346560
2 /u01/app/oracle/oradata/oracle01/sysaux01.dbf 1121976320
3 /u01/app/oracle/oradata/oracle01/undotbs01.dbf 304087040
4 /u01/app/oracle/oradata/oracle01/users01.dbf 5242880
5 /u01/app/oracle/oradata/oracle01/example01.dbf 363069440
6 /u01/app/oracle/oradata/oracle01/test01.dbf 10485760
7 /u01/app/oracle/oradata/oracle01/test101.dbf 10485760 bbed配置文件编写:
[oracle@oracle01 BBED]$ cat par.bbd
blocksize=8192
listfile=bbed.txt
mode=edit

四,启动与体验

[oracle@oracle01 BBED]$ bbed --help
LRM-: syntax error at '-' following '-'
PASSWORD - Required parameter
FILENAME - Database file name
BLOCKSIZE - Database block size 可编辑的数据文件标准块大小。
LISTFILE - List file name 列出可编辑的文件
MODE - [browse/edit] bbed可运行模式(browser或edit)
SPOOL - Spool to logfile [no/yes] 操作记录写出到bbed.log文件 (Y或N)
CMDFILE - BBED command file name 可执行命令的文件名清单
LOGFILE - BBED log file name 用户日志文件文件名。默认为log.bbd
PARFILE - Parameter file name 列有命令项的参数文件
BIFILE - BBED before-image file name undo文件文件名。默认为bifile.bbd
REVERT - Rollback changes from BIFILE [no/yes]
SILENT - Hide banner [no/yes] 不将输出打印到标准输出上(Y或N)
HELP - Show all valid parameters [no/yes]
BBED-: LRM error occurred during command line parsing
[oracle@oracle01 BBED]$ bbed password=blockedit parfile=par.bbd BBED: Release 2.0.0.0.0 - Limited Production on Sun May 5 14:54:37 2019 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> info
 File#  Name                                                        Size(blks)
 -----  ----                                                        ----------
     1  /u01/app/oracle/oradata/oracle01/system01.dbf                   103680
     2  /u01/app/oracle/oradata/oracle01/sysaux01.dbf                   136960
     3  /u01/app/oracle/oradata/oracle01/undotbs01.dbf                   37120
     4  /u01/app/oracle/oradata/oracle01/users01.dbf                       640
     5  /u01/app/oracle/oradata/oracle01/example01.dbf                   44320
     6  /u01/app/oracle/oradata/oracle01/test01.dbf                       1280
     7  /u01/app/oracle/oradata/oracle01/test101.dbf                      1280
BBED> set blocksize 8192  --块大小
BBED> set listfile 'bbed.txt' --文件位置
BBED> set width 200 -- 设置屏幕显示宽度
BBED> set count 512 --设置dump命令显示的字节数,默认是512bytes
BBED> set mode browse -- 设置模式
or
BBED> set mode edit
BBED> map  --查看当前位置
File: /u01/app/oracle/oradata/oracle01/system01.dbf (1)
Block: 1 Dba:0x00400001
------------------------------------------------------------
Data File Header struct kcvfh, 860 bytes @0 ub4 tailchk @8188 BBED> set filename '/u01/app/oracle/oradata/oracle01/test101.dbf'
FILENAME /u01/app/oracle/oradata/oracle01/test101.dbf
--指定文件
BBED> map --当前位置
File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
Block: 1 Dba:0x01c00001
------------------------------------------------------------
Data File Header struct kcvfh, 860 bytes @0 ub4 tailchk @8188
--查看全部信息
BBED> show all
FILE# 7
BLOCK# 1
OFFSET 0
DBA 0x01c00001 (29360129 7,1)
FILENAME /u01/app/oracle/oradata/oracle01/test101.dbf
BIFILE bifile.bbd
LISTFILE bbed.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
BBED> help all

set 设定当前的环境
show 查看当前的环境参数,跟sqlplus的同名命令类似。
dump 列出指定block的内容
find 在指定的block中查找指定的字符串,结果是显示出字符串,及其偏移量--offset,偏移量就是在block中的字节数
modify 修改指定block的指定偏移量的值,可以在线修改。
copy 把一个block的内容copy到另一个block中
verify 检查当前环境是否有坏块
sum 计算block的checksum,modify之后block就被标识为坏块,current checksum与reqired checksum不一致,sum命令可以计算出新的checksum并应用到当前块。
undo 回滚当前的修改操作,如果手误做错了,undo一下就ok了,回到原来的状态。
revert 回滚所有之前的修改操作,意思就是 undo all

五,一顿操作

BBED> map
File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
Block: 132 Dba:0x01c00084
------------------------------------------------------------
KTB Data Block (Table/Cluster) struct kcbh, 20 bytes @0 --块头信息,cache layer struct ktbbh, 72 bytes @20 --事务信息,transaction layer struct kdbh, 14 bytes @100 --对应数据头,占用14字节 struct kdbt[], 4 bytes @114 --表目录*kdbt[0]指针显示值 sb2 kdbr[] @118 --行目录 *kdbr[0]指针值显示状态flg ub1 freespace[] @126 --空闲空间 ub1 rowdata[] @8142 --行数据 ub4 tailchk @8188 --tail check 这个是文件7,块132的,整个块的数据结构。可以看到行数据时从下开始增加的,空闲的空间是在中间。
后面@开头的表示在该块的偏移。
@0表示该块开始的地方开始。 @20表示从第20个字节开始。那么0~19个字节就是 block-header的信息了。
可以看到数据是再8142开始我们dump 下这个数据看

BBED> dump /v dba 7,132 offset 8142 count 64
File: /u01/app/oracle/oradata/oracle01/test101.dbf (7)
Block: 132 Offsets: 8142 to 8191 Dba:0x01c00084
-------------------------------------------------------
2c010202 c1020371 77652c00 0202c104 l ,...

oracle--BBED (dump 深入实践三)的更多相关文章

  1. Oracle bbed 实用示例-----File Header Reset

    一.查看当前环境 1.1 当前控制文件中的SCN号 [oracle@ora10 ~]$ sqlplus /nolog SQL :: Copyright (c) , , Oracle. All righ ...

  2. Oracle BBED 工具 说明

    一.  BBED介绍        有关BBED 详细使用说明的pdf文档,也是从网上下载的:               http:          Thename bbed is an acro ...

  3. oracle BBED 直接改动数据库block块

    1.BBED配置 1)将相应文件放到$ORACLE_HOME/rdbms/mesg和$ORACLE_HOME/rdbms/lib中:     --将lib中bbedus.msb和bbedus.msg ...

  4. Oracle delete和truncate实践操作之一

    实践说明 本文章主要记录在Oracle中,delete和truncate进行数据删除之后,如何进行数据恢复.由于网上对delete和truncate的区别说明较多,此处不过多介绍两者区别. 注:由于环 ...

  5. Oracle bbed 实用示例-----修改Data内容、恢复delete的rows

    bbed 可以在db open 状态来进行修改,但是建议在做任何修改操作之前先shutdown db. 这样避免checkpoint 进程重写bbed 对block 的修改. 也避免oracle 在b ...

  6. Oracle bbed使用说明2---常用命令

    一.BBED常用命令说明 先看帮助的说明 BBED> help all SET DBA [ dba | file#, block# ] SET FILENAME 'filename' SET F ...

  7. Oracle bbed使用说明1

    一.centos上编译安装BBED工具 [orasrv@localhost ~]$ cd $ORACLE_HOME/rdbms/lib [orasrv@localhost ~]$ make -f in ...

  8. oracle 之 内存—鞭辟近里(三)

    oracle 之 内存—鞭辟近里(三) 今天是2013-07-08,今天晚上突然接到一个电话,我的外甥问我的qq是多少,我感觉很吃惊,他长大了.在他现在这个年龄就开始接触网络,我难免有少许担心,希望他 ...

  9. 使用Oracle BBED修改Oracle11g数据库实例名称

    by 蔡建良 2019-2-19 数据库名称存在SYSTEM01.DBF表空间,所以先查出你要修改的数据库的DBID和DBNAME. 一. 查询数据库实例名称 加载ORCL实例数据库的SYSTEM01 ...

随机推荐

  1. RabbitMQ如何保证消息99.99%被发送成功?

    1. 本篇概要 RabbitMQ针对这个问题,提供了以下几个机制来解决: 生产者确认 持久化 手动Ack 本篇博客我们先讲解下生产者确认机制,剩余的机制后续单独写博客进行讲解. 2. 生产者确认 要想 ...

  2. mysql启动报错:Failed to start LSB: start and stop MySQL

    报错信息: [root@youxx- bin]# service mysql status Redirecting to /bin/systemctl status mysql.service ¡ñ ...

  3. .NET Core 学习笔记之 WebSocketsSample

    1. 服务端 代码如下: Program: using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; namespace WebS ...

  4. 『大 树形dp』

    大 Description 滑稽树上滑稽果,滑稽树下你和我,滑稽树前做游戏,滑稽多又多.树上有 n 个节点,它们构成了一棵树,每个节点都有一个滑稽值. 一个大的连通块是指其中最大滑稽值和最小滑稽值之差 ...

  5. docfx 简单使用方法、自动生成目录的工具

    [摘要] 这是我编写的一个 Docfx 文档自动生成工具,只要写好 Markdown 文档,使用此工具可为目录.文件快速生成配置,然后直接使用 docfx 运行即可. https://github.c ...

  6. MySQL整形手工注入

    0x1 判断注入点: http://www.xxx.org/members.php?id=1 and 1=1 --+ # ture http://www.xxx.org/members.php?id= ...

  7. strace命令 系统调用

    简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...

  8. 为什么我推荐你用 Ubuntu 开发?

    微信.QQ.TIM.企业微信.钉钉等 1.首先需要安装 wine 环境,这里使用到开源的 deepin-wine-ubuntu (项目地址: https://github.com/wszqkzqk/d ...

  9. 多线程之callable学习

    最近在看多线程方面的内容,注意到java中原来除了Runnable和Thread之外还有Callable的方式实现多线程,并且Callable还能得到子线程的返回值,这是前面两种方式所不具有的. Ca ...

  10. windows elasticsearch使用ik分词器插件后启动报错java.security.AccessControlException: access denied ("java.io.FilePermission" "D:...........\plugins\ik-analyzer\config\IKAnalyzer.cfg.xml" "read")

    删除es安装文件夹中空格,遂解决......(哭