ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » Oracle数据库管理 » How to simulate block corruption with BBED?

标题: [精华] How to simulate block corruption with BBED?
离线 Arrayeygle
天下有雪


精华贴数 65
个人空间 0
技术积分 206744 (1)
社区积分 6444 (232)
注册日期 2001-10-8
论坛徽章:60
现任管理团队成员ITPUB长老会主席2007年度ITPUB杰出贡献ITPUB长老会成员ITPUB元老ITPUB维基人
授权会员2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:射击生肖徽章2007版:鼠2008年新春纪念徽章

发表于 2005-9-12 09:31 
How to simulate block corruption with BBED?

How to simulate block corruption with BBED?
作者:eygle
出处:http://www.eygle.com/blog
日期:September 11, 2005
本文链接:http://www.eygle.com/archives/20 ... tion_with_bbed.html

--------------------------------------------------------------------------------
有人在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.创建测试表
PHP code:


[oracle@jumper conner]$ sqlplus "/ as sysdba"



SQL*PlusRelease 9.2.0.4.0 Production on Sun Sep 11 19:59:27 2005



Copyright 
(c19822002Oracle Corporation.  All rights reserved.





Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 Production

With the Partitioning option

JServer Release 9.2.0.4.0 
Production



SQL
create table bbed tablespace users as select from dba_tables;



Table created.



SQLselect count(*) from bbed;



  
COUNT(*)

----------

       
523



SQL
col segment_name for a10

SQL
select segment_name,file_id,block_id from dba_extents where segment_name='BBED';



SEGMENT_NA    FILE_ID   BLOCK_ID

---------- ---------- ----------

BBED                3          9

BBED                3         17

BBED                3         25



SQL
select count(*) from bbed;



  
COUNT(*)

----------

       
523



 
.

2.创建BBED参数文件等
PHP code:


[oracle@jumper conner]$ more filelist.txt 

         1 
/opt/oracle/oradata/conner/system01.dbf   440401920

         2 
/opt/oracle/oradata/conner/undotbs01.dbf  104857600

         3 
/opt/oracle/oradata/conner/users01.dbf     27262976

[oracle@jumper conner]$ more par.bbd 

blocksize
=8192

listfile
=filelist.txt

mode
=

[oracle@jumper conner]$ bbed parfile=par.bbd 

Password




BBEDRelease 2.0.0.0.0 Limited Production on Sun Sep 11 20:01:01 2005



Copyright 
(c19822002Oracle Corporation.  All rights reserved.



************* !!! For 
Oracle Internal Use only !!! ***************



BBEDset file 3

        FILE
#           3



BBEDshow

        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        &nbs

4.回滚误操作
如果操作中发生误操作,可以使用revert命令回滚。
PHP code:


BBED
modify /x 0x00c00011

 File
: /opt/oracle/oradata/conner/users01.dbf (3)

 
Block1                Offsets1000 to 1511           Dba:0x00c00001

------------------------------------------------------------------------

 
00c00011 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 



 
<32 bytes per line>



BBEDrevert

All changes made in this session will be rolled back
Proceed? (Y/NY

Reverted file 
'/opt/oracle/oradata/conner/users01.dbf'block 1

Warning
contents of previous BIFILE will be lostProceed? (Y/N

BBED
modify 1000 file 3 block 17

 File
: /opt/oracle/oradata/conner/users01.dbf (3)

 
Block17               Offsets1000 to 1511           Dba:0x00c00011

------------------------------------------------------------------------

 
03e80000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000000 002c002f 03535953 18415050 4c59245f 434f4e46 5f48444c 

 525f434f 4c554d4e 53065359 5354454d ffff02c1 0b02c129 02c10203 c2033804 

 c3073825 ff02c102 06c51630 31252eff 02c10202 c1020359 4553014e ffffffff 

 ffffffff 0a202020 20202020 2020310a 20202020 20202020 20310520 2020204e 

 07454e41 424c4544 ffff024e 4fff014e 014e024e 4f074445 4641554c 54084449 

 5341424c 4544024e 4f024e4f ff084449 5341424c 4544024e 4fff0844 49534142 

 4c454408 44495341 424c4544 2c002f03 53595314 4150504c 59245f45 52524f52 

 5f48414e 444c4552 06535953 54454dff ff02c10b 02c12902 c10203c2 033804c3 

 073825ff 02c10206 c5163031 252eff02 c10202c1 02035945 53014eff ffffffff 

 ffffff0a 20202020 20202020 20310a20 20202020 20202020 31052020 20204e07 

 454e4142 4c4544ff ff024e4f ff014e01 4e024e4f 07444546 41554c54 08444953 

 41424c45 44024e4f 024e4fff 08444953 41424c45 44024e4f ff084449 5341424c 

 45440844 49534142 4c45442c 002f0353 59530c41 50504c59 245f4552 524f5206 



 
<32 bytes per line>

6.检查数据块损坏
使用verify命令,可以发现刚才修改的file 3 block 17已经被标记为损坏。
PHP code:


BBED
verify

DBVERIFY 
Verification starting

FILE 
= /opt/oracle/oradata/conner/users01.dbf

BLOCK 
17



Block 17 is corrupt

***

Corrupt block relative dba0x00c00011 (file 0block 17)

Bad check value found during verification

Data in bad block 
-

 
type6 format2 rdba0x00c00011

 last change scn
0x0000.20a3b575 seq0x1 flg0x04

 consistency value in tail
0xb5750601

 check value in block header
0x3006computed block checksum0xe803

 spare1
0x0spare20x0spare30x0

***





DBVERIFY Verification complete



Total Blocks Examined         
1

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



BBED


[oracle@jumper conner]$ dbv file=users01.dbf blocksize=8192



DBVERIFY
Release 9.2.0.4.0 Production on Sun Sep 11 20:13:23 2005



Copyright 
(c19822002Oracle Corporation.  All rights reserved.



DBVERIFY Verification starting FILE users01.dbf

Page 17 is marked corrupt

***

Corrupt block relative dba0x00c00011 (file 3block 17)

Bad check value found during dbv

Data in bad block -

 
type6 format2 rdba0x00c00011

 last change scn
0x0000.20a3b575 seq0x1 flg0x04

 consistency value in tail
0xb5750601

 check value in block header
0x3006computed block checksum0xe803

 spare1
0x0spare20x0spare30x0

***







DBVERIFY Verification complete



Total Pages Examined         
128

Total Pages Processed 
(Data) : 107

Total Pages Failing   
(Data) : 0

Total Pages Processed 
(Index): 0

Total Pages Failing   
(Index): 0

Total Pages Processed 
(Other): 20

Total Pages Processed 
(Seg)  : 0

Total Pages Failing   
(Seg)  : 0

Total Pages 
Empty            : 0

Total Pages Marked Corrupt   
1

Total Pages Influx           
0

 

.

8.全表扫描此时出现ORA-01578错误
重新启动数据库以后,执行全表扫描,此时错误出现:
PHP code:


SQL
startup force;

ORACLE instance started.



Total System Global Area  101782828 bytes

Fixed Size                   451884 bytes

Variable Size              37748736 bytes

Database Buffers           62914560 bytes

Redo Buffers                 667648 bytes

Database mounted
.

Database opened.

SQLselect count(*) from bbed;

select count(*) from bbed

                     
*

ERROR at line 1:

ORA-01578ORACLE data block corrupted (file # 3, block # 17)

ORA-01110data file 3'/opt/oracle/oradata/conner/users01.dbf'





SQL>

以上方法仅供测试使用。


__________________
只看该作者    顶部
离线 d.c.b.a
人生积极一点好


精华贴数 6
个人空间 0
技术积分 14039 (82)
社区积分 1357 (777)
注册日期 2004-2-19
论坛徽章:21
现任管理团队成员Heart of PUBITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章会员2007贡献徽章
ITPUB新首页上线纪念徽章     

发表于 2005-9-12 09:40 
oracle不会在以后更新bbed了, 因为我发现bbed不能处理lob块, compress表的数据块


__________________

专业Oracle/Shareplex技术支持服务, 管理, 培训, 调优, 备份, 恢复!

个人主页: 订阅AnySQL | AnySQL | dbatools | AUL Step by Step | OracleSOS.com
联系方法: MSN: anysql©live.com, Skype: anysql, QQ: 37223884
只看该作者    顶部
离线 chensq
版主



精华贴数 5
个人空间 0
技术积分 8459 (143)
社区积分 1405 (763)
注册日期 2002-8-29
论坛徽章:39
现任管理团队成员铁扇公主2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:排球每日论坛发贴之星 
      

发表于 2005-9-12 09:47 
嗯。

上次遇到的Bootstrap$被恶意更改,就是用bbed修好了的,现在文档已经写好,正准备有空的时候发上来呢。。。


__________________
只看该作者    顶部
离线 eygle
天下有雪


精华贴数 65
个人空间 0
技术积分 206744 (1)
社区积分 6444 (232)
注册日期 2001-10-8
论坛徽章:60
现任管理团队成员ITPUB长老会主席2007年度ITPUB杰出贡献ITPUB长老会成员ITPUB元老ITPUB维基人
授权会员2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:射击生肖徽章2007版:鼠2008年新春纪念徽章

发表于 2005-9-12 09:49 


QUOTE:
最初由 chensq 发布
嗯。

上次遇到的Bootstrap$被恶意更改,就是用bbed修好了的,现在文档已经写好,正准备有空的时候发上来呢。。。


我测试了一下,通常是比较容易修好的,不出意外copy一下应该就可以了。

不过研究的人越多,Oracle数据库就越来越危险了。


__________________
只看该作者    顶部
离线 eygle
天下有雪


精华贴数 65
个人空间 0
技术积分 206744 (1)
社区积分 6444 (232)
注册日期 2001-10-8
论坛徽章:60
现任管理团队成员ITPUB长老会主席2007年度ITPUB杰出贡献ITPUB长老会成员ITPUB元老ITPUB维基人
授权会员2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:射击生肖徽章2007版:鼠2008年新春纪念徽章

发表于 2005-9-12 09:52 


QUOTE:
最初由 d.c.b.a 发布
oracle不会在以后更新bbed了, 因为我发现bbed不能处理lob块, compress表的数据块

有官方消息么?
DUL都更新了,我不信Oracle就放弃了BBED


__________________
只看该作者    顶部
离线 chensq
版主



精华贴数 5
个人空间 0
技术积分 8459 (143)
社区积分 1405 (763)
注册日期 2002-8-29
论坛徽章:39
现任管理团队成员铁扇公主2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:排球每日论坛发贴之星 
      

发表于 2005-9-12 09:53 


QUOTE:
最初由 eygle 发布


我测试了一下,通常是比较容易修好的,不出意外copy一下应该就可以了。

不过研究的人越多,Oracle数据库就越来越危险了。


也是。。。。这种技术,是真正的双刃箭了!

不过如果搞破坏的人多了,依钩挣钱的机会更多了!


__________________
只看该作者    顶部
离线 chensq
版主



精华贴数 5
个人空间 0
技术积分 8459 (143)
社区积分 1405 (763)
注册日期 2002-8-29
论坛徽章:39
现任管理团队成员铁扇公主2008北京奥运纪念徽章:羽毛球2008北京奥运纪念徽章:排球每日论坛发贴之星 
      

发表于 2005-9-12 10:00 


QUOTE:
最初由 eygle 发布


有官方消息么?
DUL都更新了,我不信Oracle就放弃了BBED


我觉得应该不会滴。

如果是那样,象dump Datafile、Dump()函数之类的,早就封杀了。


__________________
只看该作者    顶部
离线 eygle
天下有雪


精华贴数 65
个人空间 0
技术积分 206744 (1)
社区积分 6444 (232)
注册日期 2001-10-8
论坛徽章:60
现任管理团队成员ITPUB长老会主席2007年度ITPUB杰出贡献ITPUB长老会成员ITPUB元老ITPUB维基人
授权会员2008北京奥运纪念徽章:跳水2008北京奥运纪念徽章:柔道2008北京奥运纪念徽章:射击生肖徽章2007版:鼠2008年新春纪念徽章

发表于 2005-9-12 10:07 


QUOTE:
最初由 chensq 发布


也是。。。。这种技术,是真正的双刃箭了!

不过如果搞破坏的人多了,依钩挣钱的机会更多了!


但愿库皆健,何妨我独贫


__________________
只看该作者    顶部
离线 d.c.b.a
人生积极一点好


精华贴数 6
个人空间 0
技术积分 14039 (82)
社区积分 1357 (777)
注册日期 2004-2-19
论坛徽章:21
现任管理团队成员Heart of PUBITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章会员2007贡献徽章
ITPUB新首页上线纪念徽章     

发表于 2005-9-12 10:14 
我想用bbed来看一下compress表的数据块,以便在MYDUL中增加对它的支持,结果是不对的,我是在10.2.0.1上试试的

所以我这么想,也许oracle认为那样太危险了吧


__________________

专业Oracle/Shareplex技术支持服务, 管理, 培训, 调优, 备份, 恢复!

个人主页: 订阅AnySQL | AnySQL | dbatools | AUL Step by Step | OracleSOS.com
联系方法: MSN: anysql©live.com, Skype: anysql, QQ: 37223884
只看该作者    顶部
离线 d.c.b.a
人生积极一点好


精华贴数 6
个人空间 0
技术积分 14039 (82)
社区积分 1357 (777)
注册日期 2004-2-19
论坛徽章:21
现任管理团队成员Heart of PUBITPUB北京九华山庄2008年会纪念徽章参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章会员2007贡献徽章
ITPUB新首页上线纪念徽章     

发表于 2005-9-12 10:15 
to Chensql, 关于bbed的还是不要写详细手册了, 否则以后数据库的bootstrap$都要坏了。


__________________

专业Oracle/Shareplex技术支持服务, 管理, 培训, 调优, 备份, 恢复!

个人主页: 订阅AnySQL | AnySQL | dbatools | AUL Step by Step | OracleSOS.com
联系方法: MSN: anysql©live.com, Skype: anysql, QQ: 37223884
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问