1. BBED的安装
oracle 11g中缺少bbed包,上传拷贝sbbdpt.o ssbbded.o bbedus.msb这三个文件到指定的目录
$ORACLE_HOME/rdbms/lib/ssbbded.o
$ORACLE_HOME/rdbms/lib/sbbdpt.o
$ORACLE_HOME/rdbms/mesg/bbedus.msb
执行如下命令:
cd $ORACLE_HOME/rdbms/lib
make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2. 编辑配置文件
$vi filelist.txt
select file#||chr(9)||name||chr(9)||bytes from v$datafile;
1 /u01/app/oracle/oradata/ocp/system01.dbf 512000000
2 /u01/app/oracle/oradata/ocp/sysaux01.dbf 412000000
3 /u01/app/oracle/oradata/ocp/users01.dbf 215000000
$vi par.txt
blocksize=8192
listfile=filelist.txt
mode=edit
3. 进入bbed
bbed parfile=par.txt
blockedit
4. 常用命令
参考:http://blog.csdn.net/tianlesoftware/article/details/5006580
--查看当前的环境参数,类似于sqlplus的同名命令
BBED> show all
FILE# 1
BLOCK# 1
OFFSET 0
DBA 0x00400001 (4194305 1,1)
FILENAME /u01/app/oracle/oradata/orcl/system01.dbf
BIFILE bifile.bbd
LISTFILE filelist.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
--set 设定当前的环境
BBED> set file 1 block 289
FILE# 1
BLOCK# 289
--dump 列出指定block的内容
dump /v --查看16进制内容的同时以文本方式'翻译'十六进制显示的内容,相当于对当前block执行strings命令
BBED> dump
File: /u01/app/oracle/oradata/orcl/system01.dbf (1)
Block: 289 Offsets: 0 to 511 Dba:0x00400121
------------------------------------------------------------------------
06a20000 21014000 2bc50b00 00000106 29e40000 01000000 1c000000 2ac50b00
00000000 02000200 00000000 05000800 5d010000 8900c000 cf004100 00800000
--find 在指定的block中查找指定的字符串,结果显示出字符串,及其偏移量-offset,偏移量为在block中的字节数
find /x 05d67g
f 为find的简写,表示继续从当前位置开始往下查询字符串的05d67g
--modify /x d43 offset=484 --修改指定block,指定offset的数据块内记录的内容
--sum apply 计算出block的checksum,modify之后block就被标识位坏块,current checksum与required checksum不一致,sum命令可以计算出新额checksdum并应用到当前块。
--undo 回滚之前的修改操作,如果修改错了,undo一下就ok了
--revert 回滚所有之前的修改操作,即undo all