【BBED】使用bbed解决 the amount of space used is not equal to block size

学习bbed的过程中,修改了file# 4,block 396之后遇到kdbchk: the amount of space used is not equal to block size错误

注意:应该在关闭数据库模式下进行bbed的操作。

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

DBVERIFY: Release 10.2.0.1.0 - Production on Mon Aug 8 08:55:21 2011

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

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

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

data header at 0x2b297003027c

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

        used=613 fsc=0 avsp=7494 dtl=8064

Page 396 failed with check code 6110

DBVERIFY - Verification complete

Total Pages Examined         : 640

Total Pages Processed (Data) : 46

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

Total Pages Influx           : 0

Highest block SCN            : 747176 (0.747176)

咨询了dbsnake,按照他的建议,将所有itl的fsc全部改为0,然后将kdbh.kdbhavsp和kdbh.kdbhtosp的值改成相等,它们的值都等于dbv校验中显示的dtl-used。

BBED> set dba 4,396

        DBA             0x0100018c (16777612 4,396)

BBED> verify

DBVERIFY - Verification starting

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

BLOCK = 396

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

data header at 0xd18387c

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

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

Block 396 failed with check code 6110

DBVERIFY - Verification complete

Total Blocks Examined         : 1

Total Blocks Processed (Data) : 1

Total Blocks Failing   (Data) : 1

Total Blocks Processed (Index): 0

Total Blocks Failing   (Index): 0

Total Blocks Empty            : 0

Total Blocks Marked Corrupt   : 0

Total Blocks Influx           : 0

BBED> set offset 0

        OFFSET          0

BBED> p kdbh  

struct kdbh, 14 bytes                       @124     

   ub1 kdbhflag                             @124      0x00 (NONE)

   b1 kdbhntab                              @125      1

   b2 kdbhnrow                              @126      14

   sb2 kdbhfrre                             @128     -1

   sb2 kdbhfsbo                             @130      46

   sb2 kdbhfseo                             @132      7497

   b2 kdbhavsp                              @134      7451

   b2 kdbhtosp                              @136      7494

从上面的结果可以看出平均可利用空间kdbhavsp 和总的可利用空间kdbhtosp大小不一致。

查看itl中的fsc

BBED> set offset 44

        OFFSET          44

BBED> p ktbbhitl

struct ktbbhitl[0], 24 bytes                @44      

   struct ktbitxid, 8 bytes                 @44      

      ub2 kxidusn                           @44       0xffff

      ub2 kxidslt                           @46       0x0000

      ub4 kxidsqn                           @48       0x00000000

   struct ktbituba, 8 bytes                 @52      

      ub4 kubadba                           @52       0x00000000

      ub2 kubaseq                           @56       0x0000

      ub1 kubarec                           @58       0x00

   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)

   union _ktbitun, 2 bytes                  @62      

      b2 _ktbitfsc                          @62       0

      ub2 _ktbitwrp                         @62       0x0000

   ub4 ktbitbas                             @64       0x000b0c24

struct ktbbhitl[1], 24 bytes                @68      

   struct ktbitxid, 8 bytes                 @68      

      ub2 kxidusn                           @68       0x0001

      ub2 kxidslt                           @70       0x002e

      ub4 kxidsqn                           @72       0x0000015b

   struct ktbituba, 8 bytes                 @76      

      ub4 kubadba                           @76       0x008000a6

      ub2 kubaseq                           @80       0x00fa

      ub1 kubarec                           @82       0x21

   ub2 ktbitflg                             @84       0x2001 (KTBFUPB)

   union _ktbitun, 2 bytes                  @86      

      b2 _ktbitfsc                    @86       41  --不为0

      ub2 _ktbitwrp                         @86       0x0029

   ub4 ktbitbas                             @88       0x000b2e92

struct ktbbhitl[2], 24 bytes                @92      

   struct ktbitxid, 8 bytes                 @92      

      ub2 kxidusn                           @92       0x0000

      ub2 kxidslt                           @94       0x0000

      ub4 kxidsqn                           @96       0x00000000

   struct ktbituba, 8 bytes                 @100     

      ub4 kubadba                           @100      0x00000000

      ub2 kubaseq                           @104      0x0000

      ub1 kubarec                           @106      0x00

   ub2 ktbitflg                             @108      0x0000 (NONE)

   union _ktbitun, 2 bytes                  @110     

      b2 _ktbitfsc                          @110      0

      ub2 _ktbitwrp                         @110      0x0000

   ub4 ktbitbas                             @112      0x00000000

修改 b2 _ktbitfsc 的值使其为0.

BBED> set offset 86

        OFFSET          86

BBED> dump count 64

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

 Block: 396              Offsets:   86 to  149           Dba:0x0100018c

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

 2900922e 0b000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000001 0e00ffff 2e00491d 1b1d461d 00000e00 5a1f2f1f 041fdb1e 

 <32 bytes per line>

BBED> modify /x 00

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

 Block: 396              Offsets:   86 to  149           Dba:0x0100018c

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

 0000922e 0b000000 00000000 00000000 00000000 00000000 00000000 00000000 

 00000000 00000001 0e00ffff 2e00491d 1b1d461d 00000e00 5a1f2f1f 041fdb1e 

 <32 bytes per line>

查看修改后的itl信息

BBED> p ktbbhitl

struct ktbbhitl[0], 24 bytes                @44      

   struct ktbitxid, 8 bytes                 @44      

      ub2 kxidusn                           @44       0xffff

      ub2 kxidslt                           @46       0x0000

      ub4 kxidsqn                           @48       0x00000000

   struct ktbituba, 8 bytes                 @52      

      ub4 kubadba                           @52       0x00000000

      ub2 kubaseq                           @56       0x0000

      ub1 kubarec                           @58       0x00

   ub2 ktbitflg                             @60       0x8000 (KTBFCOM)

   union _ktbitun, 2 bytes                  @62      

      b2 _ktbitfsc                    @62       0

      ub2 _ktbitwrp                         @62       0x0000

   ub4 ktbitbas                             @64       0x000b0c24

struct ktbbhitl[1], 24 bytes                @68      

   struct ktbitxid, 8 bytes                 @68      

      ub2 kxidusn                           @68       0x0001

      ub2 kxidslt                           @70       0x002e

      ub4 kxidsqn                           @72       0x0000015b

   struct ktbituba, 8 bytes                 @76      

      ub4 kubadba                           @76       0x008000a6

      ub2 kubaseq                           @80       0x00fa

      ub1 kubarec                           @82       0x21

   ub2 ktbitflg                             @84       0x2001 (KTBFUPB)

   union _ktbitun, 2 bytes                  @86      

      b2 _ktbitfsc                    @86       0

      ub2 _ktbitwrp                         @86       0x0000

   ub4 ktbitbas                             @88       0x000b2e92

struct ktbbhitl[2], 24 bytes                @92      

   struct ktbitxid, 8 bytes                 @92      

      ub2 kxidusn                           @92       0x0000

      ub2 kxidslt                           @94       0x0000

      ub4 kxidsqn                           @96       0x00000000

   struct ktbituba, 8 bytes                 @100     

      ub4 kubadba                           @100      0x00000000

      ub2 kubaseq                           @104      0x0000

      ub1 kubarec                           @106      0x00

   ub2 ktbitflg                             @108      0x0000 (NONE)

   union _ktbitun, 2 bytes                  @110     

      b2 _ktbitfsc                    @110      0

      ub2 _ktbitwrp                         @110      0x0000

   ub4 ktbitbas                             @112      0x00000000

BBED> p kdbh 

struct kdbh, 14 bytes                       @124     

   ub1 kdbhflag                             @124      0x00 (NONE)

   b1 kdbhntab                              @125      1

   b2 kdbhnrow                              @126      14

   sb2 kdbhfrre                             @128     -1

   sb2 kdbhfsbo                             @130      46

   sb2 kdbhfseo                             @132      7497

   b2 kdbhavsp                              @134      7451

   b2 kdbhtosp                              @136      7494

修改kdbhavsp的值于kdbhtosp保持一致

BBED> set offset 134

        OFFSET          134

BBED> dump  count 16

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

 Block: 396              Offsets:  134 to  149           Dba:0x0100018c

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

 1b1d461d 00000e00 5a1f2f1f 041fdb1e 

 <32 bytes per line>

7494的十六进制对应的值为1D46,考虑到oracle数据块中的存储方式,做如下修改

BBED> modify /x 46

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

 Block: 396              Offsets:  134 to  149           Dba:0x0100018c

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

 461d461d 00000e00 5a1f2f1f 041fdb1e 

 <32 bytes per line>

BBED> sum dba 4,396 

Check value for File 4, Block 396:

current = 0x2b93, required = 0x2bce

BBED> sum dba 4,396 apply

Check value for File 4, Block 396:

current = 0x2bce, required = 0x2bce

检查测试:

BBED> verify

DBVERIFY - Verification starting

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

BLOCK = 396

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

data header at 0xd18387c

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

        used=613 fsc=0 avsp=7494 dtl=8064

Block 396 failed with check code 6110

DBVERIFY - Verification complete

Total Blocks Examined         : 1

Total Blocks Processed (Data) : 1

Total Blocks Failing(Data):1 --依然有错误

Total Blocks Processed (Index): 0

Total Blocks Failing   (Index): 0

Total Blocks Empty            : 0

Total Blocks Marked Corrupt   : 0

Total Blocks Influx           : 0

在sqlplus 中dump数据块查看信息。

Block header dump:  0x0100018c

 Object id on Block? Y

 seg/obj: 0xcd2e  csc: 0x00.b0c24  itc: 3  flg: E  typ: 1 - DATA

     brn: 0  bdba: 0x1000189 ver: 0x01 opc: 0

     inc: 0  exflg: 0

 

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc

0x01   0xffff.000.00000000  0x00000000.0000.00  C---    0  scn 0x0000.000b0c24

0x02   0x0001.02e.0000015b  0x008000a6.00fa.21  --U-    1  fsc 0x0000.000b2e92

0x03   0x0000.000.00000000  0x00000000.0000.00  ----    0  fsc 0x0000.00000000

dump 文件中的itl事务槽中的fsc信息和bbed中修改的信息不一致,即仍然有fsc 不为0。是不是这个原因呢?数据块上有回滚事务,关闭数据库以后:

再次检查,结果正确。

BBED> verify

DBVERIFY - Verification starting

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

BLOCK = 396

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

DBVERIFY: Release 10.2.0.1.0 - Production on Mon Aug 8 13:19:28 2011

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

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

DBVERIFY - Verification complete

Total Pages Examined         : 640

Total Pages Processed (Data) : 51

Total Pages Failing   (Data) : 0

Total Pages Processed (Index): 63

Total Pages Failing   (Index): 0

Total Pages Processed (Other): 145

Total Pages Processed (Seg)  : 0

Total Pages Failing   (Seg)  : 0

Total Pages Empty            : 381

Total Pages Marked Corrupt   : 0

Total Pages Influx           : 0

Highest block SCN            : 794582 (0.794582)

时间: 2024-11-01 05:07:53

【BBED】使用bbed解决 the amount of space used is not equal to block size的相关文章

【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

【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参数.    如果没有指定

【JAVA秒会技术之异常解决】怎么解决eclipse报PermGen space异常的问题

在Eclipse使用JDK1.7及以下版本做开发时,用tomcat在启动时,经常会报这样一个错误: Caused by: java.lang.OutOfMemoryError: PermGen space. 解决办法1: 换成JDK1.8.因为JDK1.8已经将永久代移除堆内存. 解决办法2: 点击"Run"-"Run Configurations",在打开的窗口中点击"Arguments"选项卡. 在VM arguments中内容最下边输入:

分析解决11gR2 双节点RAC环境下的gc cr block busy/gc buffer busy acquire等待

?  系统环境 两节点的RAC:AIX6.1+Oracle 11.2.0.3.3   ?  AWR里展示出来的各种症状(数据来自实例2) 虽然应用没有报障,但AWR报告里的各种迹象已经很明显了 (1)     gc buffer busy acquire排进了Top 5 Timed Foreground Events 图-1     (2)     除去DB CPU在gc buffer busy acquire之后的就是gc cr block busy了 图-2     (3)     2h21

【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

[20160413利用bbed修改跳过损坏的索引.txt

[20160413利用bbed修改跳过损坏的索引.txt --前一阵子做过利用bbed修改跳过损坏的索引,这次测试看看破坏索引SYS.I_OBJ1看看. 1.环境: SYS@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ----------------------------------------------