在9i/10g中连接生成bbed:
cd$ORACLE_HOME/rdbms/lib
make-f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
OracleDatabase 11g中缺省的未提供BBED库文件,但是可以用10g的文件编译出来,需要先从10g中复制如下文件到相应目录,然后再执行上述连接命令,参考如下步骤:
(1)复制Oracle 10g文件
Copy ORA11g_HOME/rdbms/lib
Copy $ORA10g_HOME/rdbms/lib/sbbdpt.o to $ORA11g_HOME/rdbms/lib
Copy $ORA10g_HOME/rdbms/mesg/bbedus.msb to $ORA11g_HOME/rdbms/mesg
Copy $ORA10g_HOME/rdbms/mesg/bbedus.msg to $ORA11g_HOME/rdbms/mesg
Copy $ORA10g_HOME/rdbms/mesg/bbedar.msb to $ORA11g_HOME/rdbms/mesg --木有这个文件了。
(2)编译
make -f ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed
2.2 使用BBED
BBED是Oracle 内部使用的命令,所以Oracle 不提供技术支持。 为了安全,BBED设置了口令保护,默认密码为blockedit。
[oracle@db2 bin]$ bbed
Password:
BBED-00113: Invalid password. Please rerunutility with the correct password.
[oracle@db2 bin]$ bbed
Password:
BBED: Release 2.0.0.0.0 - LimitedProduction on Thu Aug 11 18:51:47 2011
Copyright © 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/app/oracle/oradata/dave/system01.dbf 1090519040
2 /u01/app/oracle/oradata/dave/sysaux01.dbf 775946240
3 /u01/app/oracle/oradata/dave/undotbs01.dbf 146800640
4 /u01/app/oracle/oradata/dave/users01.dbf 17039360
5 /u01/app/oracle/oradata/dave/example01.dbf 363069440
6 /u01/app/oracle/oradata/dave/mssm01.dbf 104857600
7 /u01/app/oracle/oradata/dave/assm01.dbf 104857600
8 /u01/app/oracle/oradata/dave/FDA01.dbf 104857600
9 /u01/app/oracle/oradata/dave/FDA02.dbf 104857600
10 /u01/app/oracle/oradata/dave/FDA03.dbf 104857600
11 /u01/app/oracle/oradata/dave/FDA04.dbf 104857600
12 /u01/app/oracle/oradata/dave/ts01.dbf 104857600
13 /u01/app/oracle/oradata/dave/ts02.dbf 104857600
14 /u01/app/oracle/oradata/dave/dave01.dbf 209715200
15 /u01/app/oracle/oradata/dave/anqing01.dbf 209715200
16 /u01/app/oracle/oradata/dave/block01.dbf 104857600
注意,这里的file id。 我们这里的file id 和 oracle 系统内部的file id 相同。 当然这个id 我们也可以自己指定。 当我们在bbed 里设置file id 时,就是根据这个参数文件中的的设置来的。 最好设置为相同,不然以后可能会混淆。
复制
将上面查询出来的datafile信息保存到文本里。
[oracle@db2 ~]$ cat /u01/filelist.txt
1/u01/app/oracle/oradata/dave2/system01.dbf 1761607680
2/u01/app/oracle/oradata/dave2/undotbs01.dbf 927989760
3/u01/app/oracle/oradata/dave2/sysaux01.dbf 398458880
4 /u01/app/oracle/oradata/dave2/users01.dbf5242880
5/u01/app/oracle/oradata/dave2/example01.dbf 104857600
6 /u01/app/oracle/oradata/dave2/dave01.dbf10485760
7/u01/app/oracle/oradata/dave2/undotbs02.dbf 1048576
8/u01/app/oracle/oradata/dave2/huaining01.dbf 52428800
(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 © 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
案例
select file#||’ ’ ||name||’ '||bytes from v$datafile;
SQL> SQL> SQL> SQL> SQL> 1 /db/app/oracle/oradata/zcydb/system01.dbf 713031680
2 /db/app/oracle/oradata/zcydb/sysaux01.dbf 513802240
3 /db/app/oracle/oradata/zcydb/undotbs01.dbf 209715200
4 /db/app/oracle/oradata/zcydb/users01.dbf 19660800
5 /db/app/oracle/oradata/zcydb/example01.dbf 104857600
SQL> SQL> SQL> SQL> SQL>
[oracle@localhost lib]$ vi listfile.txt //把文件列表粘贴到listfile.txt里面。
[oracle@localhost lib]$ bbed
Password:
BBED: Release 2.0.0.0.0 - Limited Production on Wed Aug 5 21:20:34 2020
Copyright © 1982, 2009, Oracle and/or its affiliates. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED> set dba 4,1082
BBED-00312: no LISTFILE specified
BBED> set list ‘listfile.txt’
LISTFILE listfile.txt
BBED> set file 4
FILE# 4
BBED> set dba 4,1082
DBA 0x0100043a (16778298 4,1082)
BBED> map /v
File: /db/app/oracle/oradata/zcydb/users01.dbf (4)
Block: 1082 Dba:0x0100043a
KTB Data Block (Table/Cluster)
struct kcbh, 20 bytes @0
ub1 type_kcbh @0
ub1 frmt_kcbh @1
ub1 spare1_kcbh @2
ub1 spare2_kcbh @3
ub4 rdba_kcbh @4
ub4 bas_kcbh @8
ub2 wrp_kcbh @12
ub1 seq_kcbh @14
ub1 flg_kcbh @15
ub2 chkval_kcbh @16
ub2 spare3_kcbh @18
struct ktbbh, 96 bytes @20
ub1 ktbbhtyp @20
union ktbbhsid, 4 bytes @24
struct ktbbhcsc, 8 bytes @28
sb2 ktbbhict @36
ub1 ktbbhflg @38
ub1 ktbbhfsl @39
ub4 ktbbhfnx @40
struct ktbbhitl[3], 72 bytes @44
struct kdbh, 14 bytes @124
ub1 kdbhflag @124
sb1 kdbhntab @125
sb2 kdbhnrow @126
sb2 kdbhfrre @128
sb2 kdbhfsbo @130
sb2 kdbhfseo @132
sb2 kdbhavsp @134
sb2 kdbhtosp @136
struct kdbt[1], 4 bytes @138
sb2 kdbtoffs @138
sb2 kdbtnrow @140
sb2 kdbr[70] @142
ub1 freespace[799] @282
ub1 rowdata[7107] @1081
ub4 tailchk @8188
BBED>