有人在Google新闻组上提出了一个问题:“How can I get the BBED passWord?”,继而引发了一场很有意思的讨论。 后来Pete Finnigan也在他的Blog写了一篇文章"An interesting thread on Oracle-l about BBED"描述这次有意思的探讨。 在讨论中,有一个有趣的观点提到,假如这个工具被广泛传播,那么可能有些人不是用BBED来修复数据,意外的破坏可能更为多见。最终的后果可能是Oracle彻底把这个工具移除。BBED是Block Browser/Editor的缩写,是Oracle的一个内部工具,不对外发布文档及支持。BBED随软件发布,但是我们需要进行简单的relink才能使用,relink请参考:How to compile Oracle10g BBED tools. 虽然BBED工具的使用存在很多风险,但是假如利用得当,可以以之解决很多棘手的问题。本文简单介绍一下如何用BBED模拟坏块,以练习坏块修复等技术,此前我曾经介绍过另外一种方法,请参考:Oracle中模拟及修复数据块损坏 1.创建测试表
[oracle@jumper conner]$ sqlplus "/ as sysdba"SQL*Plus: Release 9.2.0.4.0 - PRodUCtion on Sun Sep 11 19:59:27 2005Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Connected to:Oracle9i Enterprise Edition Release 9.2.0.4.0 - ProductionWith the Partitioning optionJServer Release 9.2.0.4.0 - ProductionSQL> create table bbed tablespace users as select * from dba_tables;Table created.SQL> select count(*) from bbed;COUNT(*)523SQL> col segment_name for a10SQL> select segment_name,file_id,block_id from dba_extents where segment_name='BBED';SEGMENT_NA FILE_ID BLOCK_ID---------- ---------- ----------BBED 3 9BBED 3 17BBED 3 25SQL> select count(*) from bbed;COUNT(*)523
2.创建BBED参数文件等。
[oracle@jumper conner]$ more filelist.txt1 /opt/oracle/oradata/conner/system01.dbf 4404019202 /opt/oracle/oradata/conner/undotbs01.dbf 1048576003 /opt/oracle/oradata/conner/users01.dbf 27262976[oracle@jumper conner]$ more par.bbdblocksize=8192listfile=filelist.txtmode=edit
3.使用BBED
[oracle@jumper conner]$ bbed parfile=par.bbdPassword:BBED: Release 2.0.0.0.0 - Limited Production on Sun Sep 11 20:01:01 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set file 3 FILE# 3 BBED> show FILE# 3 BLOCK# 1 OFFSET 0 DBA 0x00c00001 (12582913 3,1) FILENAME /opt/oracle/oradata/conner/users01.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