BBED标记坏块以及修复坏块

创建测试表:

[email protected]>select * from zbdba;
NAME
------------------------------------------------------------
zbdba
huihui

[email protected]>
[email protected]>
[email protected]>
[email protected]>
[email protected]>select rowid,dbms_rowid.rowid_object(rowid) robject,
  2  dbms_rowid.rowid_relative_fno(rowid) fno,
  3  dbms_rowid.rowid_block_number(rowid) bno,
  4  dbms_rowid.rowid_row_number(rowid) rno from zbdba where rownum=1;

ROWID                 ROBJECT        FNO        BNO        RNO
------------------ ---------- ---------- ---------- ----------
AAASMNAAGAAAAC/AAA      74509          6        191          0

使用bbed修改块状态:

BBED> set file 6 block 191
        FILE#           6
        BLOCK#          191

BBED> map
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 191                                   Dba:0x018000bf
------------------------------------------------------------
KTB Data Block (Table/Cluster)

struct kcbh, 20 bytes                      @0      

struct ktbbh, 72 bytes                     @20     

struct kdbh, 14 bytes                      @100    

struct kdbt[1], 4 bytes                    @114    

sb2 kdbr[2]                                @118    

ub1 freespace[8047]                        @122    

ub1 rowdata[19]                            @8169   

ub4 tailchk                                @8188   

BBED> p kcbh
struct kcbh, 20 bytes                       @0
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x018000bf
   ub4 bas_kcbh                             @8        0x005036cd
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x426d
   ub2 spare3_kcbh                          @18       0x0000

BBED> modify /x ff offset 14
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 191              Offsets:   14 to  525           Dba:0x018000bf
------------------------------------------------------------------------
ff066d42 00000100 00000d23 01009636 50000000 00000200 3200b800 80011300
02001800 0000e90b 80021100 38000220 0000cd36 50000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000001 0200ffff 1600851f
6f1f6f1f 00000200 8f1f851f 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>

BBED> p kcbh
struct kcbh, 20 bytes                       @0
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x018000bf
   ub4 bas_kcbh                             @8        0x005036cd
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0xff
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x426d
   ub2 spare3_kcbh                          @18       0x0000

BBED> sum apply
Check value for File 6, Block 191:
current = 0x4293, required = 0x4293

再回数据库查看该表:

[email protected]>select * from zbdba;
select * from zbdba
              *
ERROR at line 1:
ORA-01578: ORACLE data block corrupted (file # 6, block # 191)
ORA-01110: data file 6: '/opt/oracle/oradata/orcl11g/zbdba01.dbf'

常规坏块的处理方式:

1、event 10231

2、rowid抽取

3、DBMS_REPAIR

这里我用bbed修复该块:

BBED> p kcbh
struct kcbh, 20 bytes                       @0
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x018000bf
   ub4 bas_kcbh                             @8        0x005036cd
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0xff
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x4293
   ub2 spare3_kcbh                          @18       0x0000

BBED> p tailchk
ub4 tailchk                                 @8188     0x36cd0601

这里tailchk信息正确,无需修改

BBED> modify /x 01 offset 14
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 191              Offsets:   14 to  525           Dba:0x018000bf
------------------------------------------------------------------------
01069342 00000100 00000d23 01009636 50000000 00000200 3200b800 80011300
02001800 0000e90b 80021100 38000220 0000cd36 50000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000001 0200ffff 1600851f
6f1f6f1f 00000200 8f1f851f 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>

BBED> p kcbh
struct kcbh, 20 bytes                       @0
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x018000bf
   ub4 bas_kcbh                             @8        0x005036cd
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x4293
   ub2 spare3_kcbh                          @18       0x0000

BBED> sum apply
Check value for File 6, Block 191:
current = 0x426d, required = 0x426d

BBED> verify
DBVERIFY - Verification starting
FILE = /opt/oracle/oradata/orcl11g/zbdba01.dbf
BLOCK = 191

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
Message 531 not found;  product=RDBMS; facility=BBED

再次去数据库查询:

[email protected]>select * from zbdba;
NAME
------------------------------------------------------------
zbdba
huihui
时间: 2024-11-07 19:44:38

BBED标记坏块以及修复坏块的相关文章

sysaux表空间数据库块损坏/游离块的修复

客户那边的数据库久无人维护,近期反映服务器空间不够.在检查服务器空间时,我又偶然发现了数据库的备份出现问题. 经检查是数据库sysaux表空间存在一个坏块,存在坏块的表是WRH$_ENQUEUE_STAT,在测试库上查询数据后,我确定该表的数据对整个系统的运行影响不大. 此时没有RMAN备份可以使用,block recover无法使用.于是决定将表删除重建.不过这么做之后,原有的数据块反而变成了游离块.为了修复游离块,我就在测试库上开始做测试. 1.模拟数据库损坏 1)模拟数据库的损坏可以使用d

使用BBED COPY命令,模拟oracle数据块的损坏

oracle里很多实验都是在特定块的损坏的情况下进行的. 常用的dd命令, 只能指定从1号块到多少个块,并不能指定一个特定的块 类似下面的命令,这是对system01.dbf第一号块作清零操作 dd if=/dev/zero of=/u01/app/oracle/oradata/orcl/system01.dbf bs=8192 count=1 如果只是对第520号块作清除操作,只清除一个特定块的话,就没办法了 这时可以使用bbed的copy命令,如拷贝2号文件的20号块到1号文件的520号块,

笔记本电脑硬盘有坏道怎样修复

硬盘出现坏道除了硬盘本身的质量以及老化的原因外,很大程度上是由于平时使用不当造成的.电脑非法关机,硬盘还在工作状态被强行断电退出,静电或者温度过高,长时间未清理硬盘的积灰都有可能导致硬盘上载有数据的某些扇区已坏,即硬盘出现坏道.那么,笔记本电脑硬盘有坏道要怎样修复呢? 在寻找电脑硬盘坏道的修复方法之前,首先我们要了解硬盘坏道根据其性质可以分为逻辑坏道和物理坏道两种. 一般情况下,硬盘产生逻辑坏道的原因可能是一些正版软件会在硬盘的某些扇区写入信息.其他的软件则无法访问这个扇区,这种情况下,硬盘检测

u盘坏了怎么修复,丢失文件如何找回

u盘坏了怎么修复,丢失文件如何找回?U盘使用频率过多的情况下会出现损坏的情况,那么各位知道怎么去修复一个损坏的U盘吗?损坏后的U盘是使用不了的,那么损坏的U盘怎么修复呢? U盘出现了损坏的情况,很容易的也导致相关的数据出现丢失的情况,所以需要及时的将U盘修复完成,另外出现了文件丢失的情况也要将丢失的文件找回,下面就让小编来教各位如何修复U盘以及找回文件吧. 一:修复U盘 1.U盘损坏的最直接的原因是文件系统损坏.对此常用的方法是对磁盘进行修复.右击"可移动磁盘",从弹出的右键菜单中选择

U盘坏了可以修复吗,这里有N种方法解决

U盘坏了可以修复吗?U盘是用户使用过的最多的一款数据存储设备了,其便携性和操作方便是主要原因,那么U盘中的数据一般都是比较重要的,当知道U盘出现了损坏的情况后,各位知道该怎么进行修复吗? U盘的损坏也容易导致文件的丢失或是损坏,所以在U盘出现了损坏的情况下,要及时的对U盘进行修复工作,之后对于数据的恢复操作也需要掌握全面,下面就一起来介绍下操作流程吧. 教程一:修复损坏U盘 将U盘连接到USB接口后,让电脑成功读取到磁盘,然后右击盘符,弹出的菜单里选择属性,然后打开对话框,选择工具选项卡,然后点

JavaSE8基础 类中代码块与构造函数的执行顺序 静态代码块(only) -&gt; 构造代码块 -&gt; 构造方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0) 代码: /* 静态代码块(only) -> 构造代码块 -> 构造方法 */ class Test { static{ //静态代码块中 System.out.println("静态代码块的代码执行,只执行一次"); } { System.out.println("构造代码块中的代码执行"

物理坏区与逻辑坏区

落笔之前倒觉得这像是报错代码的前传,在判定硬盘故障时(物理坏区还是逻辑坏区),第一步就要硬盘体检,通过体检结果分类损伤类别,再由损伤类别对症下药. 通过初步体检分出两种损伤:硬伤与软伤. 我们先由硬盘的损伤区别谈起 硬伤 像磁头组件损坏,电路损坏,扇区物理损坏等. 软伤,逻辑坏道,系统信息出错,磁道伺服信息出错等. 1.对于硬伤,只有部分能修复了. 像磁头损坏,在初步体检时,通过听声音就能筛选出. 参考例子:硬盘检测听声事例 (一)硬盘检测听声事例 (二) 而综合损坏像水泡,火烧等,通过肉眼都可

Java中普通代码块,构造代码块,静态代码块区别及代码示例

//普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--"先出现先执行"public class CodeBlock01{ public static void main(String[] args){ { int x=3; System.out.println("1,普通代码块内的变量x="+x); } int x=1; System.out.println("主方法内的变量x="

Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

随笔- 40  文章- 0  评论- 1 Java的初始化块.静态初始化块.构造函数的执行顺序及用途探究 Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块.非静态初始化块和构造函数,里面都是一句简单的输出. 主类Main里面也如法炮制. 1 class A { 2 st