【BBED】Oracle bbed常用命令参考

本文主要介绍 Oracle bbed 工具说明、使用测试 —Firsouler

概述

安装

注:windows 直接拷贝文件到相关目录即可,注意设置环境变量

#linux oracle11g ,将Oracle10g 三个包拷贝至目标环境
$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 
#登录
cat par.txt
blocksize=8192
listfile=filelist.txt
mode=edit
cat filelist.txt
  1 /u01/app/oracle/oradata/ocp/system01.dbf
  2 /u01/app/oracle/oradata/ocp/sysaux01.dbf
  3 /u01/app/oracle/oradata/ocp/users01.dbf
bbed parfile=par.txt
blockedit
常用命令
#常用命令:set、 find、 dump、 modify 、sum apply、examine、map 、print、 verity 
 (1)set file 3 block 32
    set dba 0x01000020
    set offset 0           --0表示第一个字节开始
    set block  1           --1表示第一个块开始
    set count 8192         --默认是显示512字节
 (2)find /x 05d67g         --查指定的字符串在指定数据块中的具体位置
    f                      --find的简写,表示继续从当前位置开始往下查询字符串05d67g
 (3)dump                   --十六进制查看block
    dump /v                --查看十六进制内容的同时以文本方式“翻译”十六进制显示的内容,相当于对当前block执行strings命令
 (4)modify /x d43          --修改指定block,指定offset的数据块块内记录的内容
 (5)sum apply              --计算修改后的数据块的checksum值,然后写入数据块的offset为16-17的位置
 (6) map
      map /v
      p kcbh
      p ktbbh
      p kdbh
      p kdbt
      p kcvfh
      p kcvfh.kcvfhrfn
      p kcvfh.kcvfhckp
      p *kdbr[0]  --第一行记录
      x /rnc      -examine /read number char  用16进制翻译成我们能看懂的文件
通过ROWID获取block
--file_id
select DBMS_ROWID.ROWID_RELATIVE_FNO('AAAVREAAEAAAACXAAA') file_id from dual;
--block_id
select DBMS_ROWID.ROWID_BLOCK_NUMBER('AAAVREAAEAAAACXAAA') block_id from dual;

BBED修改坏块

ORA-00702: bootstrap verison

windows 数据文件头是从块2开始(块1是系统标识,bbed无权查看),linux是从块1开始(块0 是系统标识).例如:在数据库里识别的520,linux下 bbed 写 block 520,windows 需要写block 521

检查块位置

--查看坏块对象
select tablespace_name,segment_type,owner,segment_name 
from dba_extents 
where file_id=4 and 35 between block_id and block_id+blocks-1;
--查看对象占用了那些块
select distinct dbms_rowid.rowid_relative_fno(rowid),
dbms_rowid.rowid_block_number(rowid)
from bootstrap$;

bbed 修改:

#windows
1 D:\bbed_df\SYSTEM01_new.DBF
20 D:\bbed_df\SYSTEM01.DBF
set ORACLE_HOME=C:\app\Administrator\product\11.2.0\dbhome_1
bbed PASSWORD=blockedit mode=edit blocksize=8192 listfile=D:\bbed_win\bbed_1.txt
set count 128
verify
copy file 1 block 521 to file 20 block 521
copy file 1 block 522 to file 20 block 522
copy file 1 block 523 to file 20 block 523
copy file 1 block 524 to file 20 block 524
sum apply
请使用浏览器的分享功能分享到微信等