1、环境介绍
首先,要说明BBED是非Oracle推荐使用的工具,只提供给内部进行恢复处理使用,对外是不提供任何资料和相关技术支持。所以,我们如果计划使用该工具,特别是在生产环境下使用,都是我们的最后选择方案。一定要在有备份能恢复的时候进行使用,否则贸然使用BBED,容易造成数据库启动失败或者更严重的问题。
BBED提供的版本中,只有Linux/Unix,在Windows上是没有对应版本的。索引使用BBED的环境通常是命令行方式。而且BBED在Oracle内部是没有提供编译好的现成版本,需要我们手工性编译链接操作。
本篇分别针对Oracle10g和11g上编译BBED方法进行记录,权当一个备忘。
2、Oracle10g下编译BBED
本方法适用于Oracle10g以及之前的可见版本。
首先查看系统中相关环境变量,定位到BBED的库文件目录。
[oracle@oracle10g~]$ env | grep ORACLE ORACLE_SID=wilson ORACLE_BASE=/u01 ORACLE_HOME=/u01/oracle
BBED对应的对象object文件通常是在$ORACLE_HOME/rdbms/lib里。
[oracle@oracle10g~]$ cd $ORACLE_HOME/rdbms/lib [oracle@oracle10glib]$ pwd /u01/oracle/rdbms/lib
之后,使用Linux系统的make命令进行编译和连接,生成执行程序bbed.
[oracle@oracle10glib]$ make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed
Linking BBED utility (bbed)
rm -f /u01/oracle/rdbms/lib/bbed gcc -o /u01/oracle/rdbms/lib/bbed -L/u01/oracle/rdbms/lib/ -L/u01/oracle/lib/ -L/u01/oracle/lib/stubs/ -L/usr/lib -lirc /u01/oracle/lib/s0main.o /u01/oracle/rdbms/lib/ssbbded.o /u01/oracle/rdbms/lib/sbbdpt.o `cat /u01/oracle/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 /u01/oracle/rdbms/lib/defopt.o -ldbtools10 -lclntsh `cat /u01/oracle/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/oracle/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/oracle/lib/ldflags` -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/oracle/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/oracle/lib/sysliblist` -Wl,-rpath,/u01/oracle/lib -lm `cat /u01/oracle/lib/sysliblist` -ldl -lm -L/u01/oracle/lib
就可以查看到生成的可执行文件bbed.
[oracle@oracle10glib]$ ls -l bbed -rwxr-xr-x 1 oracle oinstall 540313 Jun 16 09:15 bbed
通常将bbed拷贝到目录$ORACLE_HOME/bin目录下,因为该目录是被加入到PATH环境变量里,系统全局各个位置都能访问到。之后,就是构建常用的参数文件一类的内容。
[oracle@oracle10glib]$ cp bbed $ORACLE_HOME/bin
[oracle@oracle10gbin]$ ls -l bbed -rwxr-xr-x 1 oracle oinstall 540313 Jun 16 09:20 bbed
[oracle@oracle10gbin]$ cat par.txt blocksize=8192 listfile=filelist.txt mode=edit
尝试启动BBED.
[oracle@oracle10gbin]$ bbed Password:
BBED: Release2.0.0.0.0 - Limited Production on Thu Jun 16 09:23:18 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************
BBED>
安装成功!
select file#||' '||name||' '||bytes from v$datafile;
2 C:\APP\CA\ORADATA\TESTDB\SYSAUX01.DBF 713031680
3 C:\APP\CA\ORADATA\TESTDB\UNDOTBS01.DBF 99614720
4 C:\APP\CA\ORADATA\TESTDB\USERS01.DBF 275251200
5 C:\APP\CA\ORADATA\TESTDB\EXAMPLE01.DBF 104857600
6 C:\APP\CA\PRODUCT\11.2.0\DBHOME_1\TEST_DATA01.DBF 33554432
7 C:\APP\CA\ORADATA\TESTDB\UNDOTBS02.DBF 10485760
8 C:\APP\CA\ORADATA\TESTDB\UNDOTBS03.DBF 121896960
9 C:\APP\CA\ORADATA\TESTDB\TBS_TEST_16K.DBF 10485760
File# Name Size(blks)
----- ---- ----------
1 C:\APP\CA\ORADATA\TESTDB\SYSTEM01.DBF 96000
2 C:\APP\CA\ORADATA\TESTDB\SYSAUX01.DBF 87040
3 C:\APP\CA\ORADATA\TESTDB\UNDOTBS01.DBF 12160
4 C:\APP\CA\ORADATA\TESTDB\USERS01.DBF 33600
5 C:\APP\CA\ORADATA\TESTDB\EXAMPLE01.DBF 12800
6 C:\APP\CA\PRODUCT\11.2.0\DBHOME_1\TEST_DATA01.DBF 4096
7 C:\APP\CA\ORADATA\TESTDB\UNDOTBS02.DBF 1280
8 C:\APP\CA\ORADATA\TESTDB\UNDOTBS03.DBF 14880
9 C:\APP\CA\ORADATA\TESTDB\TBS_TEST_16K.DBF 1280
SQL> create table haocp ( a varchar2(10)) tablespace users;
Table created.
SQL> insert into haocp values('a');
1 row created.
SQL> commit;
SQL> select segment_name,file_id,block_id,blocks from dba_extents where segment_name = 'HAOCP';
select segment_name,file_id,block_id,blocks from dba_extents where segment_name = 'HAOCP';
SEGMENT_NAME FILE_ID BLOCK_ID BLOCKS
HAOCP 4 648 8
File: C:\APP\CA\ORADATA\TESTDB\USERS01.DBF (4)
Block: 653 Offsets: 8187 to 8191 Dba:0x0100028d
------------------------------------------------------------------------
610106a4 c9
File: C:\APP\CA\ORADATA\TESTDB\USERS01.DBF (4)
Block: 653 Offsets: 8187 to 8191 Dba:0x0100028d
------------------------------------------------------------------------
610106a4 c9
MODIFY[/x|d|u|o|c] numeric/character string
[ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]
BBED-00215: editing not allowed in BROWSE mode
BBED> show
FILE# 4
BLOCK# 653
OFFSET 8187
DBA 0x0100028d (16777869 4,653)
FILENAME C:\APP\CA\ORADATA\TESTDB\USERS01.DBF
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE 8192
MODE Browse
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE
SPOOL No
MODE Edit
FILE# 4
BLOCK# 653
OFFSET 8187
DBA 0x0100028d (16777869 4,653)
FILENAME C:\APP\CA\ORADATA\TESTDB\USERS01.DBF
BIFILE bifile.bbd
LISTFILE
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE
SPOOL No
File: C:\APP\CA\ORADATA\TESTDB\USERS01.DBF (4)
Block: 653 Offsets: 8187 to 8191 Dba:0x0100028d
------------------------------------------------------------------------
620106a4 c9
DBVERIFY - Verification starting
FILE = C:\APP\CA\ORADATA\TESTDB\USERS01.DBF
BLOCK = 652
***
Corrupt block relative dba: 0x0100028c (file 0, block 652)
Bad check value found during verification
Data in bad block -
type: 6 format: 2 rdba: 0x0100028c
last change scn: 0x0000.015cc9a4 seq: 0x1 flg: 0x06
consistency value in tail: 0xc9a40601
check value in block header: 0x136, computed block checksum: 0x300
spare1: 0x0, spare2: 0x0, spare3: 0x0
***
DBVERIFY - Verification complete
Total Blocks Processed (Data) : 0
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 1
Total Blocks Influx : 0
SUM [ DBA | FILE | FILENAME | BLOCK ] [ APPLY ]
Check value for File 4, Block 653:
current = 0x0136, required = 0x0236
Check value for File 4, Block 653:
current = 0x0236, required = 0x0236
DBVERIFY - Verification starting
FILE = C:\APP\CA\ORADATA\TESTDB\USERS01.DBF
BLOCK = 652
DBVERIFY - Verification complete
Total Blocks Processed (Data) : 1
Total Blocks Failing (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing (Index): 0
Total Blocks Empty : 0
Total Blocks Marked Corrupt : 0
Total Blocks Influx : 0
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/607244/viewspace-750955/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/607244/viewspace-750955/