BBED-安装
BBED是ORACLE的内部工具,只限ORACLE原厂工程师使用,不建议非原厂人员私自使用。BBED通常被称为ORACLE的手术刀,因为BBED可以直接修改ORACLE的数据块内容,当然这样就会带来一定的风险,如果修改错误,可能导致无法挽救的损失。通常使用BBED都是恢复一些故障的数据库,比如断电或异常关闭操作系统导致的数据文件头不一致、SYSTEM表空间损坏等故障就可以使用BBED工具进行恢复。
在windows平台,bbed在8i和9i的某些版本(如9.2.0.6)提供,10g之后不再提供bbed工具。本文主要记录linux平台,bbed工具的安装,windows平台不再介绍。
在linux环境,BBED默认并没有安装,10g版本的数据库自带BBED程序,使用前需要编译,如下演示10.2.0.5.0版本的数据库中编译BBED工具。
[oracle@t10205 ~]$ cd $ORACLE_HOME/rdbms/lib
需要注意,BBED需要的库文件在$ORACLE_HOME/rdbms/lib目录中,而不是$ORACLE_HOME/lib目录。下面编译BBED工具。
[oracle@t10205 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed Linking BBED utility (bbed) rm -f /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/bbed gcc -o /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/bbed -L/u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ -L/u01/app/oracle/product/10.2.0/db_1/lib/ -L/u01/app/oracle/product/10.2.0/db_1/lib/stubs/ /u01/app/oracle/product/10.2.0/db_1/lib/s0main.o /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 /u01/app/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o -ldbtools10 -lclntsh `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10 -lvsn10 -lcommon10 -lgeneric10 -lmm -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10 -lvsn10 -lcommon10 -lgeneric10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -lclient10 -lnnetd10 -lvsn10 -lcommon10 -lgeneric10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /u01/app/oracle/product/10.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/10.2.0/db_1/lib -lm `cat /u01/app/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/10.2.0/db_1/lib
成功编译后,在$ORACLE_HOME/rdbms/lib目录中就会生成bbed可执行文件。
[oracle@t10205 lib]$ ls -l bbed -rwxr-xr-x 1 oracle oinstall 706999 Nov 30 05:51 bbed
将这个文件拷贝到$ORACLE_HOME/bin目录下,如果PATH环境变量设置正确,即可直接调用bbed工具。
[oracle@t10205 lib]$ cp bbed $ORACLE_HOME/bin [oracle@t10205 lib]$ cd $ORACLE_HOME/bin [oracle@t10205 bin]$ ls -l bbed -rwxr-xr-x 1 oracle oinstall 706999 Nov 30 05:54 bbed
这样就可以使用bbed工具了。
[oracle@t10205 ~]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on 星期五 11月 30 05:56:53 2012 Copyright (c) 1982, 2007, Oracle. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED>
bbed工具默认密码是blockedit。
在linux环境,11g版本默认并没有bbed需要的库文件,但是可以从10g版本拷贝过来后,直接编译使用。
[oracle@source rdbms]$ cd $ORACLE_HOME/rdbms/ [oracle@source rdbms]$ scp lib/*sbb* 192.168.249.56:/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib oracle@192.168.249.56's password: sbbdpt.o 100% 3124 3.1KB/s 00:00 ssbbded.o 100% 2802 2.7KB/s 00:00 [oracle@source rdbms]$ scp mesg/*bbed* 192.168.249.56:/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/mesg oracle@192.168.249.56's password: bbedus.msb 100% 8704 8.5KB/s 00:00 bbedus.msg 100% 10KB 10.0KB/s 00:00
将10g版本数据库带的bbed需要的文件拷贝到11g版本的数据库相应的目录中,就可以在11g的数据库服务器上编译bbed工具了。
[oracle@secdb2 lib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed Linking BBED utility (bbed) rm -f /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/bbed /usr/bin/gcc -m32 -o /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/bbed -m32 -L/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/stubs/ -L/u01/app/oracle/product/11.2.0/dbhome_1/lib/ -lirc -lipgo /u01/app/oracle/product/11.2.0/dbhome_1/lib/s0main.o /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/ssbbded.o /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/lib/sbbdpt.o `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -ldbtools11 -lclntsh `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnnz11 -lzt11 -lztkg11 -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/dbhome_1/lib/ldflags` -lncrypt11 -lnsgr11 -lnzjs11 -ln11 -lnl11 -lnro11 `cat /u01/app/oracle/product/11.2.0/dbhome_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/dbhome_1/lib/sysliblist` -Wl,-rpath,/u01/app/oracle/product/11.2.0/dbhome_1/lib -lm `cat /u01/app/oracle/product/11.2.0/dbhome_1/lib/sysliblist` -ldl -lm -L/u01/app/oracle/product/11.2.0/dbhome_1/lib [oracle@secdb2 lib]$ ls -l bbed -rwxr-xr-x 1 oracle oinstall 208473 Dec 9 14:16 bbed
将bbed文件拷贝到$ORACLE_HOME/bin目录下,就可以正常使用了。
[oracle@secdb2 lib]$ cp bbed $ORACLE_HOME/bin [oracle@secdb2 lib]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Mon Dec 9 14:17:23 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> exit
下面是bbed的帮助手册。
BBED> help all SET DBA [ dba | file#, block# ] SET FILENAME 'filename' SET FILE file# SET BLOCK [+/-]block# SET OFFSET [ [+/-]byte offset | symbol | *symbol ] SET BLOCKSIZE bytes SET LIST[FILE] 'filename' SET WIDTH character_count SET COUNT bytes_to_display SET IBASE [ HEX | OCT | DEC ] SET OBASE [ HEX | OCT | DEC ] SET MODE [ BROWSE | EDIT ] SET SPOOL [ Y | N ] SHOW [ <SET parameter> | ALL ] INFO MAP[/v] [ DBA | FILENAME | FILE | BLOCK ] DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ] PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] EXAMINE[/Nuf] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] </Nuf>: N - a number which specifies a repeat count. u - a letter which specifies a unit size: b - b1, ub1 (byte) h - b2, ub2 (half-word) w - b4, ub4(word) r - Oracle table/index row f - a letter which specifies a display format: x - hexadecimal d - decimal u - unsigned decimal o - octal c - character (native) n - Oracle number t - Oracle date i - Oracle rowid FIND[/x|d|u|o|c] numeric/character string [ TOP | CURR ] COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ] MODIFY[/x|d|u|o|c] numeric/character string [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] ASSIGN[/x|d|u|o] <target spec>=<source spec> <target spec> : [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ] <source spec> : [ value | <target spec options> ] SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ] PUSH [ DBA | FILE | FILENAME | BLOCK | OFFSET ] POP [ALL] REVERT [ DBA | FILE | FILENAME | BLOCK ] UNDO HELP [ <bbed command> | ALL ] VERIFY [ DBA | FILE | FILENAME | BLOCK ] CORRUPT [ DBA | FILE | FILENAME | BLOCK ] BBED>
这些命令在后续的案例中在介绍。
本文固定链接: https://www.dbdream.com.cn/2013/12/bbed-%e5%ae%89%e8%a3%85/ | 信春哥,系统稳,闭眼上线不回滚!