Oracle BBED在11g中编译以及测试

Oracle BBED在11g中编译以及测试

一、BBED编译

在11g database以上使用bbed需要使用以下10g database的库文件,进行编译以及link
sbbdpt.o、ssbbded.o、bbedus.msb、bbedus.msg

可点击如下链接下载库文件或者通过安装包手动提取
链接:https://pan.baidu.com/s/1hvGP1_Aulx0bz6hjG3bhGQ 密码:a4z8

1、下载oracle database 10g安装包

p8202632_10205_Linux-x86-64.zip

2、解压

[ora11g@ora18c Disk1]$ pwd
/u02/10g/Disk1

3、脚本搜索库文件所在jar包

for jar in $(find . -type f -name "*.jar"|grep rdbms);do
jar -tvf $jar | grep bbedus && echo $jar
done
位置:
./stage/Patches/oracle.rdbms.util/10.2.0.5.0/1/DataFiles/filegroup6.1.1.jar
for jar in $(find . -type f -name "*.jar"|grep rdbms);do
jar -tvf $jar | grep sbbd && echo $jar
done

位置:
./stage/Patches/oracle.rdbms/10.2.0.5.0/1/DataFiles/filegroup48.1.1.jar

4、提取bbed库文件

jar xvf ./stage/Patches/oracle.rdbms/10.2.0.5.0/1/DataFiles/filegroup48.1.1.jar

jar xvf ./stage/Patches/oracle.rdbms.util/10.2.0.5.0/1/DataFiles/filegroup6.1.1.jar

5、将bbed的库文件拷贝到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

6、编译bbed

[ora11g@ora18c lib]$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed

编译过程:

Linking BBED utility (bbed)
rm -f /u02/app/oracle/product/11.2.0/db_1/bin/bbed
gcc -o /u02/app/oracle/product/11.2.0/db_1/bin/bbed -m64 -z noexecstack -L/u02/app/oracle/product/11.2.0/db_1/rdbms/lib/ -L/u02/app/oracle/product/11.2.0/db_1/lib/ -L/u02/app/oracle/product/11.2.0/db_1/lib/stubs/  /u02/app/oracle/product/11.2.0/db_1/lib/s0main.o /u02/app/oracle/product/11.2.0/db_1/rdbms/lib/ssbbded.o /u02/app/oracle/product/11.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u02/app/oracle/product/11.2.0/db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh  `cat /u02/app/oracle/product/11.2.0/db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u02/app/oracle/product/11.2.0/db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lmm -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 `cat /u02/app/oracle/product/11.2.0/db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u02/app/oracle/product/11.2.0/db_1/lib/ldflags`    -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11   -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11 -lclient11 -lnnetd11  -lvsn11 -lcommon11 -lgeneric11 -lsnls11 -lnls11  -lcore11 -lsnls11 -lnls11 -lcore11 -lsnls11 -lnls11 -lxml11 -lcore11 -lunls11 -lsnls11 -lnls11 -lcore11 -lnls11   `cat /u02/app/oracle/product/11.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u02/app/oracle/product/11.2.0/db_1/lib -lm    `cat /u02/app/oracle/product/11.2.0/db_1/lib/sysliblist` -ldl -lm   -L/u02/app/oracle/product/11.2.0/db_1/lib

7、进入bbed
默认密码blockedit

[ora11g@ora18c trace]$ bbed
Password: 

BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 3 16:47:01 2019

Copyright © 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

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

BBED> 

二、BBED修改数据测试

1、创建测试表a

SQL> create table a (name varchar2(100));

Table created.

SQL> insert into a values('abc');

1 row created.

SQL> commit;

Commit complete.


SQL> alter system checkpoint;

System altered.

SQL> select * from a;

NAME
--------------------------------------------------
abc   -->只有一列数据abc

2、查询表a所在的数据块位置

SQL> select dbms_rowid.rowid_relative_fno(rowid) fno,dbms_rowid.rowid_block_number(rowid) block# from a;

       FNO     BLOCK#
---------- ----------
         5      113105号数据文件、11310数据库

3、查询表a数据行对应的16进制代码

SQL> select dump('abc',16) from dual;

DUMP('ABC',16)
----------------------
Typ=96 Len=3: 61,62,63


表a中name列数据abc,对应的16进制显示为:03616263,bbed中就根据此字符串查找

4、bbed启动参数准备

[root@ora18c ~]# vi /tmp/files.lst 

5 /u02/app/oracle/oradata/ora11g/admin.dbf 734003200
以上可根据select file#,name,bytes from v$datafile;对应数据文件
[root@ora18c ~]# vi /tmp/par.bbd 
blocksize=8192
listfile=/tmp/files.lst
mode=edit

5、打开bbed

[ora11g@ora18c trace]$ bbed parfile=/tmp/par.bbd
Password: -->blockedit(默认密码)

6、bbed查看数据文件
根据上文查找的数据文件号以及blcok定位到数据块

BBED> set dba 5,11310
DBA             0x01402c2e (20982830 5,11310)

7、查找表a的name列“abc“所在位置
以下用第3步的16进制字符串查找

BBED> find /x 03616263
 File: /u02/app/oracle/oradata/ora11g/admin.dbf (5)
 Block: 11310            Offsets: 8184 to 8191           Dba:0x01402c2e
------------------------------------------------------------------------
 03616263 0106689b 

 <32 bytes per line>

BBED> f --->再次查找下一个
BBED-00212: search string not found

8、查看数据文件字符
dump命令相当于strings

BBED> dump /v
 File: /u02/app/oracle/oradata/ora11g/admin.dbf (5)
 Block: 11310   Offsets: 8184 to 8191  Dba:0x01402c2e
-------------------------------------------------------
 03616263 0106689b                   l .abc..h. -->明文显示

 <16 bytes per line>

9、查找要替换字符的16进制代码

 SQL> select dump('tom',16) from dual;
本次测试将'abc'字符替换为'tom',查出对应16进制代码
DUMP('TOM',16)
----------------------
Typ=96 Len=3: 74,6f,6d

10、关闭数据库

shutdown immediate;

11、通过bbed修改数据文件记录
'tom’的16进制代码修改

BBED> modify /x 03746f6d
 File: /u02/app/oracle/oradata/ora11g/admin.dbf (5)
 Block: 11310            Offsets: 8184 to 8191           Dba:0x01402c2e
------------------------------------------------------------------------
 03746f6d 0106689b 

 <32 bytes per line>

修改完之后查看strings
BBED> dump /v
 File: /u02/app/oracle/oradata/ora11g/admin.dbf (5)
 Block: 11310   Offsets: 8184 to 8191  Dba:0x01402c2e
-------------------------------------------------------
 03746f6d 0106689b                   l .tom..h.-->修改完毕

 <16 bytes per line>

12、做个sum验证

BBED> sum apply
Check value for File 5, Block 11310:
current = 0x203e, required = 0x203e

13、打开数据库

SQL> startup 

14、验证数据

SQL> select * from admin.a;

NAME
--------------------------------------------------
tom
name列已从'abc'替换为'tom'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值