1. 什么是bbed ?
Oracle Block Brower and EDitor Tool,是一个可以对oracle data block进行查看,编辑修改的内置工具。对于bbed,oracle本身是不提供支持的。
2. 如何编译bbed环境?
10g版本:
1) 编译bbed
cd $ORACLE_HOME/rdbms/lib
make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2) 修改环境变量
将$ORACLE_HOME/rdbms/lib 加入到PATH变量中,如下:
PATH=$ORACLE_HOME/bin:$PATH:/home/ora10g/product/10.2/rdbms/lib; export PATH
11g以及12c及19c版本:(本人测试环境为11g/12c/19c)
将bbed编译安装需要的一下4个包上传到/home/oracle/bbed目录下
ssbbded.o
sbbdpt.o
bbedus.msb
bbedus.msg
1) copy /home/oracle/bbed目录下的包到对应的环境目录:
cp /home/oracle/bbed/*.o $ORACLE_BASE/product/11.2.0/db_1/rdbms/lib
cp /home/oracle/bbed/bbedus* $ORACLE_BASE/product/11.2.0/db_1/rdbms/mesg
cp /home/oracle/bbed/*.o $ORACLE_BASE/product/12.2.0/db_1/rdbms/lib
cp /home/oracle/bbed/bbedus* $ORACLE_BASE/product/12.2.0/db_1/rdbms/mesg
cp /home/oracle/bbed/*.o $ORACLE_BASE/product/19.3.0/db_1/rdbms/lib
cp /home/oracle/bbed/bbedus* $ORACLE_BASE/product/19.3.0/db_1/rdbms/mesg
cp /home/oracle/bbed/*.o $ORACLE_HOME/rdbms/lib
cp /home/oracle/bbed/bbedus* $ORACLE_HOME/rdbms/mesg
cd $ORACLE_BASE/product/12.2.0/db_1/rdbms/lib
rm -rf ssbbded.o
rm -rf sbbdpt.o
cd $ORACLE_BASE/product/12.2.0/db_1/rdbms/mesg
rm -rf bbedus.msb
rm -rf bbedus.msg
cd $ORACLE_BASE/product/19.3.0/db_1/rdbms/lib
rm -rf ssbbded.o
rm -rf sbbdpt.o
cd $ORACLE_BASE/product/19.3.0/db_1/rdbms/mesg
rm -rf bbedus.msb
rm -rf bbedus.msg
2) 编译bbed
cd $ORACLE_HOME/rdbms/lib
make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
密码是:blockedit
报错:
[oracle@deep 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 /u01/app/oracle/product/11.2.0/db_1/bin/bbed
gcc -o /u01/app/oracle/product/11.2.0/db_1/bin/bbed -m64 -z noexecstack -L/u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/ -L/u01/app/oracle/product/11.2.0/db_1/lib/stubs/ /u01/app/oracle/product/11.2.0/db_1/lib/s0main.o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/11.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh `cat /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/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 /u01/app/oracle/product/11.2.0/db_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/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 /u01/app/oracle/product/11.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2.0/db_1/lib -lm `cat /u01/app/oracle/product/11.2.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/11.2.0/db_1/lib
/u01/app/oracle/product/11.2.0/db_1/rdbms/lib/ssbbded.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [/u01/app/oracle/product/11.2.0/db_1/bin/bbed] Error 1
原因:
是由于使用的bbed需要的包为32位,需要从64位环境拷贝相关包
编译成功:
[oracle@deep ~]$ make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
Linking BBED utility (bbed)
rm -f /u01/app/oracle/product/12.2.0/db_1/bin/bbed
/u01/app/oracle/product/12.2.0/db_1/bin/orald -o /u01/app/oracle/product/12.2.0/db_1/bin/bbed -m64 -z noexecstack -Wl,--disable-new-dtags -L/u01/app/oracle/product/12.2.0/db_1/rdbms/lib/ -L/u01/app/oracle/product/12.2.0/db_1/lib/ -L/u01/app/oracle/product/12.2.0/db_1/lib/stubs/ /u01/app/oracle/product/12.2.0/db_1/lib/s0main.o /u01/app/oracle/product/12.2.0/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/12.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/12.2.0/db_1/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lngsmshd12 -ldbtools12 -lclntsh -lclntshcore `cat /u01/app/oracle/product/12.2.0/db_1/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lngsmshd12 -lnro12 `cat /u01/app/oracle/product/12.2.0/db_1/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lngsmshd12 -lnnz12 -lzt12 -lztkg12 -lztkg12 -lclient12 -lnnetd12 -lvsn12 -lcommon12 -lgeneric12 -lmm -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `cat /u01/app/oracle/product/12.2.0/db_1/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lngsmshd12 -lnro12 `cat /u01/app/oracle/product/12.2.0/db_1/lib/ldflags` -lncrypt12 -lnsgr12 -lnzjs12 -ln12 -lnl12 -lngsmshd12 -lclient12 -lnnetd12 -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 -lclient12 -lnnetd12 -lvsn12 -lcommon12 -lgeneric12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lcore12 -lsnls12 -lnls12 -lxml12 -lcore12 -lunls12 -lsnls12 -lnls12 -lcore12 -lnls12 `cat /u01/app/oracle/product/12.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/12.2.0/db_1/lib -lm `cat /u01/app/oracle/product/12.2.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/12.2.0/db_1/lib
3. 如何配置bbed?
1) 准备par文件
par.bbed(文件名可自定义):
blocksize=8192 ---指定block size大小
listfile=/home/oracle/bbed/bbedfile.txt ---指定文件名
logfile=/home/oracle/bbed/log.bbd ----制定记录的日志文件及位置
mode=edit ---指定操作模式(分edit和view两种)
spool=yes ---是否记录bbed的操作日志
2) 准备listfile.txt文件
listfile.txt(文件名可自定义):
8 /u01/app/oracle/oradata/DEEP/deep1/system01.dbf 272629760
9 /u01/app/oracle/oradata/DEEP/deep1/sysaux01.dbf 319815680
10 /u01/app/oracle/oradata/DEEP/deep1/undotbs01.dbf 550502400
11 /u01/app/oracle/oradata/DEEP/deep1/users01.dbf 5242880
12 /u01/app/oracle/oradata/DEEP/deep1/deep.dbf 209715200
说明:
1) 第1列,为文件号,可以人为定义。
2) 第2列,需要使用bbed操作的文件名(全路径)。
3) 第3列,文件大小,可不写。
4)登陆验证
为了登陆方便,在环境变量中设置别名
alias bbed="bbed parfile=/home/oracle/bbed/par.bbd"
[oracle@deep ~]$ bbed
BBED> show
FILE# 8
BLOCK# 1
OFFSET 0
DBA 0x02000001 (33554433 8,1)
FILENAME /u01/app/oracle/oradata/DEEP/deep1/system01.dbf
BIFILE bifile.bbd
LISTFILE /home/oracle/bbed/bbedfile.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE /home/oracle/bbed/log.bbd
SPOOL Yes
BBED> info
File# Name Size(blks)
----- ---- ----------
8 /u01/app/oracle/oradata/DEEP/deep1/system01.dbf 33280
9 /u01/app/oracle/oradata/DEEP/deep1/sysaux01.dbf 39040
10 /u01/app/oracle/oradata/DEEP/deep1/undotbs01.dbf 67200
11 /u01/app/oracle/oradata/DEEP/deep1/users01.dbf 640
12 /u01/app/oracle/oradata/DEEP/deep1/deep.dbf 25600
至此,bbed的编译安装及配置已经完成。