【BBED】使用bbed 修改data block Block Misplaced

使用bbed 修改数据块物理校验出错的问题。

SQL> select * from yangtab;

select * from yangtab

              *

ERROR at line 1:

ORA-01578: ORACLE data block corrupted (file # 4, block # 388)

ORA-01110: data file 4: '/opt/oracle/oradata/orcl/users01.dbf'

使用dbv 进行验证。

oracle@localhost.localdomain:/home/oracle>dbv file=/opt/oracle/oradata/orcl/users01.dbf 

DBVERIFY: Release 10.2.0.1.0 - Production on Sun Aug 7 20:01:34 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

DBVERIFY - Verification starting : FILE = /opt/oracle/oradata/orcl/users01.dbf

Page 388 is marked corrupt

Corrupt block relative dba: 0x01000184 (file 4, block 388)

Bad header found during dbv: 

Data in bad block:

 type: 6 format: 2 rdba: 0x0100018c与本来应该的rdba 0x01000184不一致。

 last change scn: 0x0000.000b0c25 seq: 0x2 flg: 0x04

 spare1: 0x0 spare2: 0x0 spare3: 0x0

 consistency value in tail: 0x0c250602

 check value in block header: 0x24df

 computed block checksum: 0x0

 

#Block Checking: DBA = 16777612, Block Type = KTB-managed data block

#data header at 0x2b92e120827c

#kdbchk: the amount of space used is not equal to block size

#        used=613 fsc=41 avsp=7451 dtl=8064

#Page 396 failed with check code 6110--这是另一个问题,查看技术解决

DBVERIFY - Verification complete

Total Pages Examined         : 640

Total Pages Processed (Data) : 45

Total Pages Failing   (Data) : 1

Total Pages Processed (Index): 63

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 142

Total Pages Processed (Seg)  : 0

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 389

Total Pages Marked Corrupt   : 1

Total Pages Influx           : 0

Highest block SCN            : 747176 (0.747176)

从上面dbv检查的信息查看,数据块388的错误信息属于数据块的物理校验Block Misplaced

解决方法是使用bbed 修改kcbh.rdba_kcbh 的值和Corrupt block relative dba: 0x01000184 (file 4, block 388)中的rdba一致。

BBED> set dba 4,388

        DBA             0x01000184 (16777604 4,388)

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        0x0100018c

   ub4 bas_kcbh                             @8        0x000b0c25

   ub2 wrp_kcbh                             @12       0x0000

   ub1 seq_kcbh                             @14       0x02

   ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)

   ub2 chkval_kcbh                          @16       0x24df

   ub2 spare3_kcbh                          @18       0x0000

BBED> set dba 4,388 offset 4

        DBA             0x01000184 (16777604 4,388)

        OFFSET          4

BBED> dump /v dba 4,388 offset 4 count 64

 File: /opt/oracle/oradata/orcl/users01.dbf (4)

 Block: 388     Offsets:    4 to   67  Dba:0x01000184

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

 8c010001 250c0b00 00000204 df240000 l ....%........$..

 01000000 2ecd0000 240c0b00 00000000 l ........$.......

 03003200 89010001 ffff0000 00000000 l ..2.............

 00000000 00000000 00800000 240c0b00 l ............$...

 <16 bytes per line>

注意0x0100018c 在块里的存储方式是低位优先的:8c010001

BBED> modify /x 84

 File: /opt/oracle/oradata/orcl/users01.dbf (4)

 Block: 388              Offsets:    4 to   67           Dba:0x01000184

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

 84010001 250c0b00 00000204 df240000 01000000 2ecd0000 240c0b00 00000000 

 03003200 89010001 ffff0000 00000000 00000000 00000000 00800000 240c0b00 

 <32 bytes per line>

重新应用校验和。

BBED> sum dba 4,388

Check value for File 4, Block 388:

current = 0x24df, required = 0x24d7

BBED> sum dba 4,388 apply

Check value for File 4, Block 388:

current = 0x24d7, required = 0x24d7

在bbed中进行检查,坏块已经修复。

BBED> verify

DBVERIFY - Verification starting

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

BLOCK = 388

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

数据库中检查,成功。

SQL> select * from yangtab;

     EMPNO ENAME           JOB               MGR HIREDATE                  SAL       COMM     DEPTNO

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

      7369 SMITH           CLERK            7902 17-DEC-80                 800                    20

      7499 ALLEN           SALESMAN         7698 20-FEB-81                1600        300         30

      7521 yang            SALESMAN         7698 22-FEB-81                1250        500         30

      7566 JONES           MANAGER          7839 02-APR-81                2975                    20

      7654 MARTIN          SALESMAN         7698 28-SEP-81                1250       1400         30

      7698 BLAKE           MANAGER          7839 01-MAY-81                2850                    30

      7782 CLARK           MANAGER          7839 09-JUN-81                2450                    10

      7788 SCOTT           ANALYST          7566 19-APR-87                3000                    20

      7839 KING            PRESIDENT             17-NOV-81                5000                    10

      7844 TURNER          SALESMAN         7698 08-SEP-81                1500          0         30

      7876 ADAMS           CLERK            7788 23-MAY-87                1100                    20

      7900 JAMES           CLERK            7698 03-DEC-81                 950                    30

      7902 FORD            ANALYST          7566 03-DEC-81                3000                    20

      7934 MILLER          CLERK            7782 23-JAN-82                1300                    10

14 rows selected.

时间: 2025-01-21 09:19:00

【BBED】使用bbed 修改data block Block Misplaced的相关文章

【BBED】bbed的使用(三)

bbed的使用(一)  介绍了BBED的编译安装. bbed的使用(二) 介绍了bbed的语法规则和常用命令的使用. 本文继续介绍bbed常用命令的使用. 17 DUMP[/v] [ DBA | FILENAME | FILE | BLOCK | OFFSET | COUNT ]    dump 命令可以转储数据块的内容. 使用/v 选项可以输出详细的内容.有上面的提示可以看出,dump命令可以指定DBA,FILENAME,FILE,BLOCK,OFFSET,COUNT参数.    如果没有指定

【BBED】bbed的使用(二)

前面一章bbed的使用(一)介绍了BBED的编译安装,这一章主要介绍bbed的语法规则. 使用bbed 需要使用parfile和listfile 1 PARFILE:参数文件记录以下参数: 此文件主要记录 BLOCKSIZE:数据库的标准块大小 MODE: BBED的运行模式:browse或者edit SILENT:控制操作的输出(Y/N) SPOOL:将输出内容spool到 bbed.log (Y/N) LISTFILE:被编辑的文件列表的名字 CMDFILE:执行命令的集合的文件名  BIF

【BBED】BBED模拟并修复ORA-08102错误

[BBED]BBED模拟并修复ORA-08102错误   1.1  BLOG文档结构图     1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 使用BBED修复ORA-08102错误(重点) ② BBED的使用 ③ 数据块格式的dump文件解释 ④ ORA-08102错误的trace文件解释 ⑤ 从rdba获取ROWID信息 ⑥ 其它实用技能   Tips: ① 本文在itpub(h

【BBED】bbed常用命令

[BBED]bbed常用命令 有关bbed的历史文章: BBED [推荐] [BBED] SYSTEM文件头损坏的恢复(4) http://blog.itpub.net/26736162/viewspace-2084329/ [推荐] [BBED] sys.bootstrap$ 对象的恢复 http://blog.itpub.net/26736162/viewspace-2083621/ [推荐] [BBED]丢失归档文件情况下的恢复 http://blog.itpub.net/26736162

【BBED】bbed的使用(一)

BBED这是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢复场景下比较有用.使用起来也很方便,当然该工具不受Oracle支持,所以默认是没有生成可执行文件的,在使用前需要重新连接. 在9i/10g中连接生成bbed: cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk $ORACLE_HOME/rdbms/lib/bbed 具体操作步骤如下: oracle@localhost.localdomain:/opt/oracl

Oracle中通过bbed模拟和修复corrupted block

使用bbed需要注意: 1.win下oracle不提供 2.随oracle软件一起发布 3.在unix/linux下使用时需要事先relink 4.oracle最初使用bbed用来修复坏block,从9i开始可以通过rman的blockrecover来恢复,不过前提是事先做过备份 [oracle@xys oracle]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Tue Jun 9 13:13:04 2009 C

[20160407]bbed修改文件头2(补充).txt

[20160407]bbed修改文件头2(补充).txt --昨天被别人问一个问题,就是我的测试修改数据文件相应的CHECKPOINT_CHANGE#就ok了.偏移量是block=1的offset=484. --链接 http://blog.itpub.net/267265/viewspace-2075424/ --不过别人问的是这个时间是如何存储的.我以前也做过一些.链接: --http://blog.itpub.net/267265/viewspace-746222/ --我的感觉在11.2

[20160526]bbed修改数据记录(不等长).txt

[20160526]bbed修改数据记录(不等长).txt --以前做的测试,有点乱,当时没有很好的理解快速提交.而且做的很乱,链接如下: http://blog.itpub.net/267265/viewspace-1193074/ --今天重复测试看看: 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ ------

[20140624]bbed修改数据记录(不等长).txt

[20140624]bbed修改数据记录(不等长).txt http://www.itpub.net/thread-1872851-1-1.html --给出的问题修改记录时,长度没有变化,如果存在变化,修改与原来的不同,要修改kdbr[0]的值. --还有一些细节的步骤. SCOTT@test> @ver BANNER -------------------------------------------------------------------------------- Oracle