ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 坏块恢复的深入研究

坏块恢复的深入研究

原创 Linux操作系统 作者:赵宇 时间:2008-05-05 20:52:51 0 删除 编辑

用UE替换了datafile中的几个字符,注意个数要一致,否则会出现ORA错误,提示datafile大小与blocksize不匹配,或者提示实际块大小小于指定块大小等错误.

C:\Documents and Settings\oracle>dbv file='D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'

DBVERIFY: Release 10.2.0.4.0 - Production on 星期一 5月 5 20:22:55 2008

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

DBVERIFY - 开始验证: FILE = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
页 201 标记为损坏
Corrupt block relative dba: 0x018000c9 (file 6, block 201)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018000c9
 last change scn: 0x0000.000b0e50 seq: 0x1 flg: 0x06
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e500601
 check value in block header: 0x2969
 computed block checksum: 0x3939

页 339 标记为损坏
Corrupt block relative dba: 0x01800153 (file 6, block 339)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x01800153
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x4d14
 computed block checksum: 0x1e36

页 492 标记为损坏
Corrupt block relative dba: 0x018001ec (file 6, block 492)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018001ec
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x2421
 computed block checksum: 0x3a36

页 511 标记为损坏
Corrupt block relative dba: 0x018001ff (file 6, block 511)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018001ff
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x9f65
 computed block checksum: 0x362f

 

DBVERIFY - 验证完成

检查的页总数: 1280
处理的页总数 (数据): 497
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 30
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 749
标记为损坏的总页数: 4
流入的页总数: 0
最高块 SCN            : 728966 (0.728966)

我们制造了4个坏块.这时我们用RMAN进行恢复,必须用RMAN.

16进制0x018000c9 相当于 10进制25166025 (在UE中可以进行进制转换)

RMAN> blockrecover tablespace "TEST" DBA 25166025 from datafilecopy;

启动 blockrecover 于 2008-05-05 20:39:01
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在从数据文件副本 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1 还原块

正在开始介质的恢复
介质恢复完成, 用时: 00:00:08

完成 blockrecover 于 2008-05-05 20:39:10


C:\Documents and Settings\oracle>dbv file='D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'

DBVERIFY: Release 10.2.0.4.0 - Production on 星期一 5月 5 20:40:38 2008

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

DBVERIFY - 开始验证: FILE = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
页 339 标记为损坏
Corrupt block relative dba: 0x01800153 (file 6, block 339)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x01800153
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x4d14
 computed block checksum: 0x1e36

页 492 标记为损坏
Corrupt block relative dba: 0x018001ec (file 6, block 492)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018001ec
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x2421
 computed block checksum: 0x3a36

页 511 标记为损坏
Corrupt block relative dba: 0x018001ff (file 6, block 511)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018001ff
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x9f65
 computed block checksum: 0x362f

 

DBVERIFY - 验证完成

检查的页总数: 1280
处理的页总数 (数据): 498
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 30
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 749
标记为损坏的总页数: 3
流入的页总数: 0
最高块 SCN            : 728966 (0.728966)

我们可以看到已经成功恢复了一个坏块.

339对应的DBA应该是25166163,这时我故意写错,测试是否可以通过block号进行恢复,即使DBA写错
RMAN> blockrecover datafile 6 block 339 tablespace "TEST" DBA 25166164 from datafilecopy;

启动 blockrecover 于 2008-05-05 20:43:33
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在从数据文件副本 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1 还原块

正在开始介质的恢复
介质恢复完成, 用时: 00:00:03

完成 blockrecover 于 2008-05-05 20:43:38


我们查看DBV,发现已经恢复了:
C:\Documents and Settings\oracle>dbv file='D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'

DBVERIFY: Release 10.2.0.4.0 - Production on 星期一 5月 5 20:44:08 2008

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

DBVERIFY - 开始验证: FILE = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF
页 492 标记为损坏
Corrupt block relative dba: 0x018001ec (file 6, block 492)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018001ec
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x2421
 computed block checksum: 0x3a36

页 511 标记为损坏
Corrupt block relative dba: 0x018001ff (file 6, block 511)
Bad check value found during dbv:
Data in bad block:
 type: 6 format: 2 rdba: 0x018001ff
 last change scn: 0x0000.000b0e91 seq: 0x2 flg: 0x04
 spare1: 0x0 spare2: 0x0 spare3: 0x0
 consistency value in tail: 0x0e910602
 check value in block header: 0x9f65
 computed block checksum: 0x362f

 

DBVERIFY - 验证完成

检查的页总数: 1280
处理的页总数 (数据): 499
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 30
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 749
标记为损坏的总页数: 2
流入的页总数: 0
最高块 SCN            : 728966 (0.728966)


还剩2个坏块,我们通过块号和DBA来分别指定:


RMAN> blockrecover datafile 6 block 492 tablespace "TEST" DBA 25166335 restore until scn 728966 from datafilecopy
2> ;

启动 blockrecover 于 2008-05-05 20:47:40
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在从数据文件副本 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF1 还原块

正在开始介质的恢复
介质恢复完成, 用时: 00:00:07

完成 blockrecover 于 2008-05-05 20:47:49

25166335 是551块的DBA地址.


C:\Documents and Settings\oracle>dbv file='D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF'

DBVERIFY: Release 10.2.0.4.0 - Production on 星期一 5月 5 20:48:20 2008

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

DBVERIFY - 开始验证: FILE = D:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST.DBF


DBVERIFY - 验证完成

检查的页总数: 1280
处理的页总数 (数据): 501
失败的页总数 (数据): 0
处理的页总数 (索引): 0
失败的页总数 (索引): 0
处理的页总数 (其它): 30
处理的总页数 (段)  : 0
失败的总页数 (段)  : 0
空的页总数: 749
标记为损坏的总页数: 0
流入的页总数: 0
最高块 SCN            : 728966 (0.728966)


再次检查,我们发现已经没有坏块,全部修复.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/175005/viewspace-260443/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-25

  • 博文量
    73
  • 访问量
    916776