oracle 11g bbed - Oracle BBED工具安装

工具简介

这里我们简单介绍下Oracle bbed工具。bbed是Block Browser and Editor(块浏览编辑器)的缩写,它是Oracle数据库在安装时一起附带的工具。一般此工具倾向于仅作为Oracle内部使用,且Oracle公司并不公开此工具使用细节。由于bbed可以对Oracle数据库中的数据块进行内容修改和破坏,因此此工具功能强大同时伴有很高的使用风险。

如果你需要使用此工具,你需要自己为此所带来的风险负责。通过此工具进行的任何修改都不会受到Oracle的官方支持。

bbed库连接

在bbed使用前,它需要进行编译连接。其相关代码已经在Oracle数据库安装时一起部署好了,不过它并未和安装执行文件进行关联。在进行Link操作时,你需要转到rdbms/install目录下并执行以下命令:

[oracle@RDBALINUX03 oracle]$ cd $ORACLE_HOME/rdbms/lib
[oracle@RDBALINUX03 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed

Linking BBED utility (bbed)
rm -f /home/oracle/Ora92/rdbms/lib/bbed
gcc -o /home/oracle/Ora92/rdbms/lib/bbed -L/home/oracle/Ora92/rdbms/lib/ -
L/home/oracle/Ora92/lib -L/home/oracle/Ora92/lib/stubs/  /home/oracle/Ora92/lib/s0main.o
/home/oracle/Ora92/rdbms/lib/ssbbed.o /home/oracle/Ora92/rdbms/lib/sbbdpt.o `cat
<output removed to aid clarity>

-lcore9 -lunls9 -lnls9  `cat /home/oracle/Ora92/lib/sysliblist` -wl,-
rpath,/home/oracle/Ora92/lib:/lib:/usr/lib -lm  `cat /home/oracle/Ora92/lib/sysliblist`
-ldl -lm

注意,11g中缺失几个相关文件,但我们实际可以从10g拷贝相关文件到11g对应目录下:

$ORACLE_HOME/rdbms/lib/sbbdpt.o
$ORACLE_HOME/rdbms/lib/ssbbded.o
$ORACLE_HOME/rdbms/mesg/bbedus.msb
$ORACLE_HOME/rdbms/mesg/bbedus.msg

你可以通过使用ls命令来查看bbed是否已经连接上了。

[oracle@RDBALINUX03 lib]$ ls -al $ORACLE_HOME/rdbms/lib/bbed
-rwxrwxr-x    1    oracle    oracle    321165    Sep    19    09:10    /home/oracle/Ora92/rdbms/lib/bbed
[oracle@RDBALINUX03 lib]$

启动bbed

默认,bbed工具是被编译连接到rdbms/lib目录下的。因此并不是在通常的$ORACLE_HOME/bin目录。你可以将被连接的可执行文件移到bin目录下,或者直接在rdbms/lib目录中启动它。

[oracle@RDBALINUX03 bin]$ bbed
Password: ******

BBED: Release 2.0.0.0.0 - Limited Production on Mon Sep 19 10:00:27 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

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

BBED>
  • 请注意,bbed需要提供密码才能通过使用(密码默认是blockedit)。密码保护其免于未被授权使用。这个密码是被硬编码在代码所指向的第一个dump文件中的,其实也算是个小考验,如果你找不到的话,说明你的反编译能力和底层hex的阅读能力有待提高。更需要对这个工具的使用小心谨慎。
  • 在命令行中,你可以使用一些命令项。这些命令项可以帮助你执行相关操作。其也可以允许的浏览模式下而不是在编辑模式下使用,这样也保证了你不会无意中破坏了数据文件。

下表中显示了可用的命令项:

命令项 描述
BLOCKSIZE 可编辑的数据文件标准块大小。
MODE bbed可运行模式(browser或edit)
SILENT 不将输出打印到标准输出上(Y或N)
SPOOL 操作记录写出到bbed.log文件 (Y或N)
LISTFILE 列出可编辑的文件
CMDFILE 可执行命令的文件名清单
BIFILE undo文件文件名。默认为bifile.bbd
LOGFILE 用户日志文件文件名。默认为log.bbd
PARFILE 列有命令项的参数文件

由于一些命令项经常执行时用到,因此建议可以使用parfile来将一般使用的命令项都存放在参数文件中。

下面是一个bbed parfile的命令项设置(针对的是8Kbk块的小数据库)

[oracle@pd bbed]$ cat bbed.par
blocksize=8192
listfile=/home/oracle/bbed/fileunix.log
mode=edit

例子中我们执行bbed时设置块大小为8Kb并设置bbed执行模式为edit,这样我们就能对块内容进行修改。我们也提供了可进行编辑的对象文件名在listfile指定的文件中。

在listfile中指定的文件中需要列出数据文件的文件id和文件字节大小:

[oracle@pd bbed]$ cat fileunix.log
1    /home/oracle/OraHome1/oradata/gctdev2/drsys01.dbf 20971520
2    /home/oracle/OraHome1/oradata/gctdev2/example01.dbf 125829120
3    /home/oracle/OraHome1/oradata/gctdev2/indx01.dbf 26214400
4    /home/oracle/OraHome1/oradata/gctdev2/system01.dbf 335544320
5    /home/oracle/OraHome1/oradata/gctdev2/tools01.dbf 10485760
6    /home/oracle/OraHome1/oradata/gctdev2/undotbs01.dbf 246415360
7    /home/oracle/OraHome1/oradata/gctdev2/user01.dbf 26214400
8    /home/oracle/OraHome1/oradata/gctdev2/xdb01.dbf 39976960

你也可以使用以下数据库查询语句来生成listfile内容:

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

更多BBED使用,可查阅 http://orafaq.com/papers/dissassembling_the_data_block.pdf

猜你喜欢

转载自blog.csdn.net/liu_maclean/article/details/81387932