文档章节

如何使用BBED修复损坏的BLOCK

郑加威
 郑加威
发布于 2017/02/16 13:22
字数 968
阅读 14
收藏 0

前面我已经介绍了如何使用BBED模拟坏块,本文简要介绍如何使用BBED修复损坏的BLOCK。

1.备份数据文件
要想恢复损坏的文件,需要存在一个良好文件,本文简单冷备份一下文件.

[oracle@jumper conner]$ cp users01.dbf users01.dbf.bak

2.修改BBED参数文件
加入备份文件

[oracle@jumper conner]$ vi 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
         4 /opt/oracle/oradata/conner/users01.dbf.bak    27262976
~
~
~
"filelist.txt" 4L, 259C written 

3.破坏数据块

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

BBED: Release 2.0.0.0.0 - Limited Production on Sun Sep 11 22:30:11 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

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

BBED> set file 3
        FILE#           3

BBED> modify 1000 file 3 block 17
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y
 File: /opt/oracle/oradata/conner/users01.dbf (3)
 Block: 17               Offsets:    0 to  511           Dba:0x00c00011
------------------------------------------------------------------------
 03e80000 1100c000 75b5a320 00000104 06300000 01000000 611e0000 72b5a320 
 00000000 03003201 0900c000 ffff0000 00000000 00000000 00000000 00800000 
 72b5a320 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00012600 
 ffff5e00 d5037703 77030000 2600c21e 101e581d a91cf61b 471b941a dd192819 
 6218b417 06175216 9715dd14 26146c13 b4120712 44118310 bc0ffa0e 380e790d 
 b60cf40b 350b790a c0090409 45088b07 cc060e06 57059804 d5030000 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>

BBED> verify
DBVERIFY - Verification starting
FILE = /opt/oracle/oradata/conner/users01.dbf
BLOCK = 17

Block 17 is corrupt
***
Corrupt block relative dba: 0x00c00011 (file 0, block 17)
Bad header found during verification
Data in bad block -
 type: 3 format: 0 rdba: 0x00c00011
 last change scn: 0x0000.20a3b575 seq: 0x1 flg: 0x04
 consistency value in tail: 0xb5750601
 check value in block header: 0x3006, computed block checksum: 0xea05
 spare1: 0x0, spare2: 0x0, spare3: 0x0
***


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> quit

4.从备份文件中copy良好数据块进行恢复

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

BBED: Release 2.0.0.0.0 - Limited Production on Sun Sep 11 22:33:55 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

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

BBED> set file 4
        FILE#           4

BBED> show
        FILE#           4
        BLOCK#          1
        OFFSET          0
        DBA             0x01000001 (16777217 4,1)
        FILENAME        /opt/oracle/oradata/conner/users01.dbf.bak
        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

BBED> copy file 4 block 17 to file 3 block 17;
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y
 File: /opt/oracle/oradata/conner/users01.dbf (3)
 Block: 17               Offsets:    0 to  511           Dba:0x00c00011
------------------------------------------------------------------------
 06020000 1100c000 75b5a320 00000104 06300000 01000000 611e0000 72b5a320 
 00000000 03003201 0900c000 ffff0000 00000000 00000000 00000000 00800000 
 72b5a320 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00012600 
 ffff5e00 d5037703 77030000 2600c21e 101e581d a91cf61b 471b941a dd192819 
 6218b417 06175216 9715dd14 26146c13 b4120712 44118310 bc0ffa0e 380e790d 
 b60cf40b 350b790a c0090409 45088b07 cc060e06 57059804 d5030000 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>

BBED> verify
DBVERIFY - Verification starting
FILE = /opt/oracle/oradata/conner/users01.dbf
BLOCK = 17


DBVERIFY - Verification complete

Total Blocks Examined         : 1
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

BBED> 

至此恢复完成。

5.数据库验证

SQL> select count(*) from bbed;
select count(*) from bbed
*
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 3, block # 17)
ORA-01110: data file 3: '/opt/oracle/oradata/conner/users01.dbf'

SQL> alter tablespace users offline;

Tablespace altered.

SQL> alter tablespace users online;

Tablespace altered.

SQL> select count(*) from bbed;

  COUNT(*)
----------
       523

善用BBED可以从很多棘手的问题中拯救我们的数据库。

本案例仅供参考。

- END -

© 著作权归作者所有

郑加威
粉丝 172
博文 183
码字总数 387300
作品 0
杭州
架构师
私信 提问
Oracle坏块问题处理

曾经遇到过ORA-8103,01578的坏块错误记录下方法 首先,制造坏块 修改Checksum的值 导出第31个块(算上os header block,物理上是32个块)来把它的变成坏块,使用dd考出data block 【更多关于...

长平狐
2012/08/22
120
0
【BBED】BBED模拟并修复ORA-08102错误

【BBED】BBED模拟并修复ORA-08102错误 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~...

小麦苗best
2018/06/29
0
0
数据块Checksum值为0的情况

看到崔华的【怎样在windows上用DD配合ultraEdit修改数据】文章后进行试验时我发现了这个Checksum值为0的情况。这里是我的记录。我们都知道data block的offset位置是16-17是Checksum Value,它...

长平狐
2012/08/22
130
0
ORACLE 如何检查找出损坏索引 ( Corrupt Indexes )

原文出处:潇湘隐者 在Oracle数据库中如何找出损坏索引呢? 下面我们人为构造一个案例,将索引块损坏。如下案例所示: SQL> create tablespace test_data2 datafile '/u01/app/oracle/oradat...

潇湘隐者
2018/09/19
0
0
BBED工具使用

Oracle Block Brower and EDitor Tool(即bbed)工具,用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,简单来说就是一个针对 Oracle...

dbstats
2017/04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

QML学习之浅谈Window

转载地址:http://blog.csdn.net/kanchuan1905/article/details/53762788 在Qt Quick的世界里,Window对象用于创建一个与操作系统相关的顶层窗口,包含了如Text, Rectangle, Image等元素。W...

shzwork
33分钟前
5
0
centos 查看删除旧内核

1、查看系统中安装的内核 $ yum list installed | grep kernel 2、删除系统中旧内核 $ yum install yum-utils$ package-cleanup --oldkernels --count=2...

编程老陆
今天
10
0
ES6

ES6:不改变原理的基础上,让API变得更简单 一、let:代替var用于声明变量 1、var的缺点: (1)声明提前 (2)没有块级作用域 2、let的优点: (1)组织了申明提前 (2)让let所在的块({}),...

wytao1995
今天
3
0
kubernetes 环境搭建 —— minikube

创建集群 minikube start 搭建好 k8s 集群后,可以查看集群的状态以及部署应用。主要用到的是 k8s 的 api,这通常需借助于 kutectl 命令行工具 基本操作 kubectl versionkubectl cluster-i...

lemos
今天
11
0
关于js混淆与反混淆还原操作

使用js的混淆加密,其目的是为了保护我们的前端代码逻辑,对应一些搞技术吃饭的公司来说,为了防止被竞争对手抓取或使用自己的代码,就会考虑如何加密,或者混淆js来达到代码保护。 1、为什么...

开源oschina
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部