OracleDatabase 11g及以后版本中不再提供BBED库文件,但是可以用10g的文件编译出来,需要先从10g中复制如下文件到相应目录,然后再执行上述连接命令,参考如下步骤:
(1)复制Oracle 10g文件
cp $ORA10g_HOME/rdbms/lib/ssbbded.o to$ORA11g_HOME/rdbms/lib
cp $ORA10g_HOME/rdbms/lib/sbbdpt.o to $ORA11g_HOME/rdbms/lib
cp $ORA10g_HOME/rdbms/mesg/bbedus.msb to $ORA11g_HOME/rdbms/mesg
cp $ORA10g_HOME/rdbms/mesg/bbedus.msg to $ORA11g_HOME/rdbms/mesg
(2)编译
make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
使用BBED
BBED是Oracle 内部使用的命令,所以Oracle 不提供技术支持。 为了安全,BBED设置了口令保护,默认密码为blockedit。
[oracle@db2 bin]$ bbed
Password:
BBED: Release 2.0.0.0.0 - LimitedProduction on Thu Aug 11 18:51:47 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Useonly !!! ***************
BBED>
一般使用bbed,都是将一些配置信息写入到一个参数文本里,在调用bbed时,指定该参数文件。如:
$bbedparfile=bbed.par
相关的参数可以通过help 查看
[oracle@db2 admin]$ bbed help=y
PASSWORD - Required parameter
FILENAME - Database file name
BLOCKSIZE - Database block size
LISTFILE - List file name
MODE - [browse/edit]
SPOOL - Spool to logfile [no/yes]
CMDFILE - BBED command file name
LOGFILE - BBED log file name
PARFILE - Parameter file name
BIFILE - BBED before-image file name
REVERT - Rollback changes from BIFILE[no/yes]
SILENT - Hide banner [no/yes]
HELP - Show all valid parameters [no/yes]
这里我们先演示一个示例。
(1)先获取datafile 的信息
将datafile 的信息写入一个文件,格式为:文件编号 文件名字 文件大小。可以通过如下SQL 获取:
set pages 200
select file#||' '||name||' '||bytes from v$datafile ;
1 /u01/data/ORCL/system01.dbf 954204160
3 /u01/data/ORCL/sysaux01.dbf 629145600
4 /u01/data/ORCL/undotbs01.dbf 346030080
5 /u01/data/ORCL/pdbseed/system01.dbf 283115520
6 /u01/data/ORCL/pdbseed/sysaux01.dbf 325058560
7 /u01/data/ORCL/users01.dbf 15728640
8 /u01/data/ORCL/pdbseed/undotbs01.dbf 104857600
9 /u01/data/ORCL/pdb/system01.dbf 283115520
10 /u01/data/ORCL/pdb/sysaux01.dbf 356515840
11 /u01/data/ORCL/pdb/undotbs01.dbf 104857600
12 /u01/data/ORCL/pdb/users01.dbf 5242880
13 /tmp/FY_REC_DATA.DAT 131072
14 /tmp/FY_RST_DATA.DAT 20971520
15 /u01/data/test.dbf 1073741824
注意,这里的file id。 我们这里的file id 和 oracle 系统内部的file id 相同。 当然这个id 我们也可以自己指定。 当我们在bbed 里设置file id 时,就是根据这个参数文件中的的设置来的。 最好设置为相同,不然以后可能会混淆。
将上面查询出来的datafile信息保存到文本里。
[oracle@db2 ~]$ cat /u01/filelist.txt
1 /u01/data/ORCL/system01.dbf 954204160
3 /u01/data/ORCL/sysaux01.dbf 629145600
4 /u01/data/ORCL/undotbs01.dbf 346030080
5 /u01/data/ORCL/pdbseed/system01.dbf 283115520
6 /u01/data/ORCL/pdbseed/sysaux01.dbf 325058560
7 /u01/data/ORCL/users01.dbf 15728640
8 /u01/data/ORCL/pdbseed/undotbs01.dbf 104857600
9 /u01/data/ORCL/pdb/system01.dbf 283115520
10 /u01/data/ORCL/pdb/sysaux01.dbf 356515840
11 /u01/data/ORCL/pdb/undotbs01.dbf 104857600
12 /u01/data/ORCL/pdb/users01.dbf 5242880
13 /tmp/FY_REC_DATA.DAT 131072
14 /tmp/FY_RST_DATA.DAT 20971520
15 /u01/data/test.dbf 1073741824
(2) 创建parameter file:
[oracle@db2 ~]$ cat /u01/bbed.par
blocksize=8192
listfile=/u01/filelist.txt
mode=edit
(3)使用parameter file 连接bbed:
[oracle@db2 ~]$ bbed parfile=/u01/bbed.par
Password:
BBED: Release 2.0.0.0.0 - LimitedProduction on Thu Aug 11 20:47:49 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Useonly !!! ***************
BBED> show
FILE# 1
BLOCK# 1
OFFSET 0
DBA 0x00400001(4194305 1,1)
FILENAME /u01/app/oracle/oradata/dave2/system01.dbf
BIFILE bifile.bbd
LISTFILE /u01/filelist.txt
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No
或者bbed parfile=/u01/bbed.par放入环境变量中
vi .bash_profile
alias bbed='bbed parfile=/u01/bbed.par password=blockedit'