[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 , 我猜测不出来。

1104File Space Bitmap Block损坏能修复吗相关推荐

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

    [20161108]File Space Bitmap Block损坏能修复吗? --这阵子做了数据文件的一些探究,还是回到File Space Bitmap Block损坏修复的问题. --链接ht ...

  2. fastcopy会损坏硬盘_电脑硬盘损坏如何修复?自己动手就能解决

    电脑硬盘损坏如何修复?上周有粉丝突然问我,说他的硬盘不小心摔坏了,通电时还会咔咔的响,发生这种情况他不知道该怎么办.那么我们应该如解决硬盘损坏问题呢?硬盘损坏该如何修复呢?下面小编就来带大家看看硬盘修 ...

  3. oracle normal bitmap,深入解析Oracle ASSM结构之Level 1 Bitmap Block

    一.概念介绍 L1 BMB中存储了一组连续的同一个extent中的数据块空间使用信息,L1内部结构由Cache Header.Header Control及DBA range三层结构组成,Oracle ...

  4. TF卡里删掉文件后内存没变大_内存卡损坏怎么修复?数据恢复方法教程

    内存卡损坏怎么修复?内存卡又叫SD卡,是一种很轻便小巧的便携存储装置,往往内置于各种便携媒体设备内部.内存卡本身具有坚固.抗冲击等外部特性和读写快.空间大等内部特性,但是内存卡因为每天都要读写大量数据 ...

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

    推荐:Windows Server 2003 下配置 MySQL 集群(Cluster)教程这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本 ...

  6. SQL Server FILESTREAM数据库损坏和修复

    This article will cover corruption and recovery scenarios in the context of SQL Server FILESTREAM in ...

  7. 零磁道损坏如何修复?【硬盘故障软修理技巧】

    u大师电脑维护常识:零磁道损坏如何修复?[硬盘故障软修理技巧]  如果在对硬盘进行格式化时,系统弹出"Track0Bad"对话框的话,这就意味着硬盘的零磁道被损坏了.根据专业人士的 ...

  8. 内存卡损坏怎么修复?分享实际经验

    内存卡损坏怎么修复? 我们在数码相机.手机等设备中常用到内存卡,它可以帮助我们存放很多数据,当然内存卡在使用过程中也不可避免的发生一些损坏现象,下面将给大家分享下内存卡修复的方法,希望能够给大家提供一 ...

  9. 计算机u盘驱动坏了如何的修复,u盘损坏怎么修复 u盘损坏再次使用

    u盘损坏怎么修复 u盘损坏再次使用 发布时间:2013-03-12 14:52:49   作者:佚名   我要评论 如果忘记了执行卸载操作直接将U盘从USB接口拔出,就有可能会导致U盘损坏,导致计算机 ...

最新文章

  1. 将文本随意插入网页表单的 textarea
  2. 书评与访谈:the Scrumban [R]Evolution
  3. 移动web开发常用JavaScript代码(转)
  4. 权变措施 弹回计划 应急计划的区别
  5. php常用操作字符串函数,php字符串几个常用的操作函数
  6. 日常生活小技巧 -- 虚拟串口工具
  7. 尽梨了(贪心+dp)
  8. HTML——初识html,元素 属性 段落 文本格式化 链接 头部入门
  9. 面经——操作系统(linux为例)
  10. iOS - 个人项目流程(建立项目和提交Git 进行代码迭代管理)
  11. 怎么修改mysql主键(id)的值为自增
  12. Root原理分析及防Root新思路
  13. 阻止计算机访问注册表,电脑中毒了,注册表打不开了,提示注册表已被管理员禁止,这该怎么办...
  14. 马蹄疾 | 2019年,是时候认真学一波 Grid 布局了
  15. matlab median filter,matlab--fftshift,filter2,median用法. (转)
  16. zookeeper的羊群效应
  17. 亨登谈判策略(转载)
  18. php-java-net-python-报修修改计算机毕业设计程序
  19. 快速去除照片的背景颜色和修改照片的背景颜色
  20. NAS开通外网访问功能的三种方法

热门文章

  1. 先装vs还是先装sql_止回阀该装在出口阀前还是阀后?
  2. linux密码忘记grub登陆,CentOS7 忘记密码后通过修改grub进系统重置密码
  3. mysql无法连接10061错误1067_解决MySQL启动的error 2003和1067 10061错误问题
  4. gmail邮箱 收信服务器,用fetchmail 通过gmail 收邮件
  5. java map转xml 工具类_xml和map互转工具类
  6. java 同步异步_Java中的同步于异步
  7. java歌词添加,分享 :java实现 歌词文件的智能命名解决方法
  8. php 变量类型 typeof,typeof和instanceof的区别是什么
  9. 20190831:(leetcode习题)汉明距离
  10. mysql 表名是变量_MySQL深层次的总结