1104File Space Bitmap Block损坏能修复吗

[20161104]File Space Bitmap Block损坏能修复吗?.txt

-- 链接http://www.itpub.net/thread-2071023-1-1.html提到File Space Bitmap Block损坏,问能修复吗?

1.环境:

SCOTT@book> @ &r/ver1

PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

CREATE TABLESPACE SUGAR DATAFILE
  '/mnt/ramdisk/book/sugar01.dbf' SIZE 40M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

create table t1 tablespace sugar as select rownum id ,lpad('A',32,'A') name from dual connect by level<=1e5;
--建立大小5M的表。

create table t2 tablespace sugar as select rownum id ,lpad('B',32,'B') name from dual connect by level<=2e5;
create table t3 tablespace sugar as select rownum id ,lpad('C',32,'C') name from dual connect by level<=2e5;
alter system checkpoint;

2.假设File Space Bitmap Block损坏了。
--全部选择F看看。

SYS@book> execute dbms_space_admin.tablespace_dump_bitmaps('SUGAR');
PL/SQL procedure successfully completed.

*** 2016-11-04 16:23:39.634
*** SESSION ID:(24.507) 2016-11-04 16:23:39.634
*** CLIENT ID:() 2016-11-04 16:23:39.634
*** SERVICE NAME:(SYS$USERS) 2016-11-04 16:23:39.634
*** MODULE NAME:(sqlplus@gxqyydg4 (TNS V1-V3)) 2016-11-04 16:23:39.634
*** ACTION NAME:() 2016-11-04 16:23:39.634

Header Control:
RelFno: 6, Unit: 8, Size: 5120, Flag: 9
AutoExtend: YES, Increment: 2048, MaxSize: 4194302
Initial Area: 126, Tail: 5119, First: 400, Free: 224
Deallocation scn: 925704.0
Header Opcode:
Save: No Pending Op
File Space Bitmap Block:
BitMap Control:
RelFno: 6, BeginBlock: 128, Flag: 0, First: 400, Free: 63088
FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFF000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 0000000000000000 0000000000000000

-- 16*6+4=100
-- 1bit 表示 64K。 F(0x1111) 表示4 bits.
-- 100*4*64*1024/8192=3200块 ,3200*8192/1024/1024=25, 位图信息对的。

--假设现在坏了,我全部修改为F是否可行呢?

--文件大小40M,40*1024*1024/8192=5120块。40*1024*1024/64/1024=640bit,640/4=160个F。

3.我直接使用bvi修改文件看看:

SYS@book> alter tablespace sugar offline ;
Tablespace altered.

--安全期间,做一个备份:
$ cp /mnt/ramdisk/book/sugar01.dbf /u01/backup/sugar01.dbf_0161104

--正常数据文件第1块OS。第2块是文件头,第3块开始-128块是位图区。

--我文件很小,估计在1块里面:
--8192*3=24576

$ bvi -b 24576 -s 8192 /mnt/ramdisk/book/sugar01.dbf

--前面已经100个F,我仅仅加入60个。

--修改如下:
00006000  1E A2 00 00 03 00 80 01 64 F8 26 00 00 00 01 04 22 B1 00 00 06 00 00 00 80 00 00 00 00 00 00 00 ........d.&....."...............
00006020  90 01 00 00 70 F6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF ....p...........................
00006040  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................................
00006060  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................................
00006080  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
000060A0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
000060C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
000060E0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00006100  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00006120  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00006140  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00006160  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
"

BBED> set dba 6,3
        DBA             0x01800003 (25165827 6,3)

BBED> map
File: /mnt/ramdisk/book/sugar01.dbf (6)
Block: 3                                     Dba:0x01800003
------------------------------------------------------------
BBED-00400: invalid blocktype (30)

BBED> sum
Check value for File 6, Block 3:
current = 0xb122, required = 0x4edd

BBED> sum apply
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
Check value for File 6, Block 3:
current = 0x4edd, required = 0x4edd

BBED> verify
DBVERIFY - Verification starting
FILE = /mnt/ramdisk/book/sugar01.dbf
BLOCK = 3

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   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

$ dbv file=sugar01.dbf
DBVERIFY: Release 11.2.0.4.0 - Production on Fri Nov 4 16:42:32 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
DBVERIFY - Verification starting : FILE = /mnt/ramdisk/book/sugar01.dbf
Page 3 failed with check code 18018
DBVERIFY - Verification complete
Total Pages Examined         : 5120
Total Pages Processed (Data) : 2974
Total Pages Failing   (Data) : 0
Total Pages Processed (Index): 0
Total Pages Failing   (Index): 0
Total Pages Processed (Other): 201
Total Pages Processed (Seg)  : 0
Total Pages Failing   (Seg)  : 0
Total Pages Empty            : 1945
Total Pages Marked Corrupt   : 1
Total Pages Influx           : 0
Total Pages Encrypted        : 0
Highest block SCN            : 2553960 (0.2553960)

SYS@book> alter tablespace sugar  online;
Tablespace altered.

SYS@book> alter tablespace sugar  read only;
Tablespace altered.

SYS@book> select count(*) from scott.t1;
  COUNT(*)
----------
    100000

SYS@book> select count(*) from scott.t2;
  COUNT(*)
----------
    200000

SYS@book> select count(*) from scott.t3;
  COUNT(*)
----------
    200000

--OK!问题在与如何构造这个信息块。

4.其他测试:
SYS@book> execute dbms_space_admin.tablespace_dump_bitmaps('SUGAR');
BEGIN dbms_space_admin.tablespace_dump_bitmaps('SUGAR'); END;

*
ERROR at line 1:
ORA-03219: Tablespace 'SUGAR' is dictionary-managed, offline or temporary
ORA-06512: at "SYS.DBMS_SPACE_ADMIN", line 322
ORA-06512: at line 1

--在只读情况执行报错。

SYS@book> alter tablespace sugar  read write;
Tablespace altered.

SYS@book> execute dbms_space_admin.tablespace_dump_bitmaps('SUGAR');
PL/SQL procedure successfully completed.

SYS@book> alter system dump datafile 6 block 3 ;
System altered.

SYS@book> alter tablespace sugar  read only;
Tablespace altered.

BBED> set dba 6,3
        DBA             0x01800003 (25165827 6,3)

BBED> dump /v count 8192
File: /mnt/ramdisk/book/sugar01.dbf (6)
Block: 3                                 Offsets:    0 to  255                            Dba:0x01800003
-----------------------------------------------------------------------------------------------------------
1ea20000 03008001 64f82600 00000104 dd4e0000 06000000 80000000 00000000 l ........d.&......N..............
90010000 70f60000 00000000 00000000 00000000 00000000 ffffffff ffffffff l ....p...........................
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff l ................................
ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff l ................................
ffffffff ffffffff 00000000 00000000 00000000 00000000 00000000 00000000 l ................................
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 l ................................
....
00000000 00000000 00000000 00000000 00000000 00000000 00000000 011e64f8 l ..............................d.
<32 bytes per line>

--问题在与前面部分如何构造。

5.在建立一个相同大小的表空间看看。

CREATE TABLESPACE TEA DATAFILE
  '/mnt/ramdisk/book/tea01.dbf' SIZE 40M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

BBED> set dba 7,3
        DBA             0x01c00003 (29360131 7,3)

BBED> dump /v count 8192
File: /mnt/ramdisk/book/tea01.dbf (7)
Block: 3                                 Offsets:    0 to 8191                            Dba:0x01c00003
-----------------------------------------------------------------------------------------------------------
1ea20000 0300c001 18fd2600 00000104 7c410000 07000000 80000000 00000000 l ..........&.....|A..............
00000000 00f80000 00000000 00000000 00000000 00000000 00000000 00000000 l ................................
...
00000000 00000000 00000000 00000000 00000000 00000000 00000000 011e18fd l ................................
<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        0x018000e6
   ub4 bas_kcbh                             @8        0x0026f7c5
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x02
   ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x1c51
   ub2 spare3_kcbh                          @18       0x0000
------

--做一个不完全分析:
1ea20000 相同。
0300c001 这个dba地址。

BBED> set dba 6,3
        DBA             0x01800003 (25165827 6,3)

BBED> set dba 7,3
        DBA             0x01c00003 (29360131 7,3)

18fd2600 scn号,低字节18fd与tail对应一样。

-- 7c41是检查和。
BBED> set dba 7,3
        DBA             0x01c00003 (29360131 7,3)
BBED> sum
Check value for File 7, Block 3:
current = 0x417c, required = 0x417c

07000000 ==> 我看了其他文件这个视乎是文件号,乱猜。

--后面我不敢猜测了。
--主要是 90010000 70f60000 , 我猜测不出来。

时间: 2024-08-28 07:20:02

1104File Space Bitmap Block损坏能修复吗的相关文章

1108File Space Bitmap Block损坏能修复吗2

[20161108]File Space Bitmap Block损坏能修复吗? --这阵子做了数据文件的一些探究,还是回到File Space Bitmap Block损坏修复的问题. --链接http://www.itpub.net/thread-2071023-1-1.html提到File Space Bitmap Block损坏,问能修复吗? --通过我前面的测试,可以把空间设置为1.这样就可以解决这个问题,问题在在于相应的数据块如何构造. --实际上很简单我仅仅建立1个相同大小的数据文

[20161111File Space Bitmap Block修复机制

[20161111]File Space Bitmap Block修复机制.txt --前几天在测试File Space Bitmap Block时执行了,execute dbms_space_admin.TABLESPACE_REBUILD_BITMAPS('SUGAR') --这样位图区全部设置为1,显示都是F.它的修复机制不是非常清楚,今天做一些深入的探究. --继续重复昨天的测试. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING            

20161114File Space Bitmap Block修复机制2

[20161114]File Space Bitmap Block修复机制2.txt --前几天在测试File Space Bitmap Block时执行了,execute dbms_space_admin.TABLESPACE_REBUILD_BITMAPS('SUGAR') --这样位图区全部设置为1,显示都是F. --上次提到,execute dbms_space_admin.TABLESPACE_REBUILD_BITMAPS('SUGAR')会修改位图区全部设置为1,显示都是F. --

mysql数据库索引损坏及修复经验分享

  这篇文章主要介绍了mysql数据库索引损坏及修复经验分享,需要的朋友可以参考下 mysql表索引被破坏的问题及解决 下午上班,惊闻我的dedecms的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为: Table '.dedecmsv4dede_archives' is marked as crashed and should be repaired 提示说cms的文章表dede_archives被标记有问题,需要修复.于是赶快恢复历史数据,上网查找原因.最终将问题解决.

电脑回收站损坏怎么修复

  电脑回收站损坏怎么修复 1.按win+r打开运行窗口,输入cmd,回车即可,如图所示: 2.然后在界面中,输入"rd/s c:\\$recylce.bin"(双引号不用),回车即可修复,如图所示:

WinRAR压缩包损坏怎么修复

对于文件比较大的文件我们常常会进行压缩或者要传输一个大一点的文件也会用到压缩,这样不仅占用空间会变小,而且传输过程中也容易保存文件的完整性,但是我们有的时候遇到这样的问题,就是压缩文件受到了损坏.那么压缩文件损坏怎么办?压缩文件损坏怎么修复?其实WinRAR压缩包中有内置的压缩文件修复功能,对于压缩包损坏的一些受损的压缩文件可以起到妙用. 对于文件比较大的文件我们经常爱做的就是进行压缩,但是我们有的时候遇到这样的问题,就是压缩文件受到了损坏.那么压缩文件损坏怎么办?压缩文件损坏怎么修复?其实Wi

主引导程序损坏的修复

  主引导程序损坏的修复方法很重要,用户可以参考以下过程. 1.检查硬件和基本配置 电脑出现硬盘无法检测的情况,首先要检查盘驱动器与硬盘控制器的连接是否正常,硬盘驱动器的电源线连接.如果有多个设备,需要检查硬盘之间或硬盘与光驱等设备之间是否有冲突. 2.主引导区检查及修复 主引导区如果被病毒.误操作等原因破坏,可能导致硬盘或数据无法访问.可以用U盘启动系统,看能否对硬盘进行访问.如果能访问,说明可能仅是操作系统受到破坏.如果不能访问,说明可能硬件故障,需要进行维修.

ps-扩容盘照片损坏能否修复

问题描述 扩容盘照片损坏能否修复 不小心买了个扩容盘,里面存了一些照片,有几张特别珍贵,但是现在打开一看全都损坏了,请问有办法能修复么-- 解决方案 看什么情况,所谓扩容sd卡或者u盘,无非就是把相同的存储单元分配给了不同的地址.造成的后果是,数据的覆盖和数据并不真实存在在这个地址上,前者没有办法恢复,后者,通过对存储单元扫描和重构,可以提取部分不完整的数据.

xls-XLS文件误删后恢复硬盘找回了,可是提示文件损坏,修复后却出现另一种问题,求大神解决QWQ

问题描述 XLS文件误删后恢复硬盘找回了,可是提示文件损坏,修复后却出现另一种问题,求大神解决QWQ 修复后,大量的lost label,请问这种情况怎么修复啊各位大神,这个表格很重要的,当时竟然忘了备份,跪求解决啊QWQ 解决方案 有两个可能,一个是存放文件的实际的簇被别的数据覆盖了,如果是这样,没辙. 还可能是你的恢复软件不行,它没有真正定位文件头,那么这个需要手工去寻找了.如果文件很重要,建议你找数据恢复的公司帮你.