ITPub博客

首页 > 数据库 > Oracle > 对坏块故障的讨论

对坏块故障的讨论

原创 Oracle 作者:hooca 时间:2016-04-08 16:25:52 0 删除 编辑
对Oracle中的坏块故障,现在分为预防、发现、解决三个层面来讨论。

首先区分两个概念:
物理完整性:检查块头、块尾,不包括载荷。
逻辑完整性:检查载荷。

1. 预防
两个相关的参数:
db_block_checking:默认FALSE。该参数指示数据库在修改了数据库后进行一次逻辑完整性检查。
db_block_checksum:默认TYPICAL。该参数控制物理完整性检查,一般默认值已足够应对。

2. 发现
可以用来检测的工具很多,如dbv,RMAN等都可以。推荐使用RMAN。

点击(此处)折叠或打开

  1. RMAN> backup validate check logical database;

  2. File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
    ---- ------ -------------- ------------ --------------- ----------
    5    OK     0              5292         239233          4409306   
      File Name: /u01/app/oracle/oradata/prod/1ar1sf1g.dbf
      Block Type Blocks Failing Blocks Processed
      ---------- -------------- ----------------
      Data       0              175384          
      Index      0              38502           
      Other      0              20054           


    channel ORA_DISK_1: starting full datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    including current control file in backup set
    including current SPFILE in backup set
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
    List of Control File and SPFILE
    ===============================
    File Type    Status Blocks Failing Blocks Examined
    ------------ ------ -------------- ---------------
    SPFILE       OK     0              2               
    Control File OK     0              590   

RMAN可以同时检查物理完整性和逻辑完整性,上例的检查包括了数据文件、参数文件和控制文件。
如果检查出了坏块,将会在视图v$database_block_corruption中查到坏块信息,如

点击(此处)折叠或打开

  1. select * from v$database_block_corruption;
         FILE#     BLOCK#     BLOCKS CORRUPTION_CHANGE# CORRUPTION_TYPE
    ---------- ---------- ---------- ------------------ ------------------
             5       1000          1                  0 CORRUPT

3. 解决
可以进入RMAN用以下语句修复。前提是拥有“足够”的备份。

点击(此处)折叠或打开

  1. BLOCKRECOVER DATAFILE 19 BLOCK 44,66,127;
  2. BLOCKRECOVER DATAFILE 19 BLOCK 44 DATAFILE 22 BLOCK 203;
注意:以上方法只能修复非文件头的坏块,文件头如果产生坏块只能还原恢复整个数据文件。

点击(此处)折叠或打开

  1. run {
  2. sql 'alter database datafile 5 offline';
  3. restore datafile 5;
  4. recover datafile 5;
  5. sql 'alter database datafile 5 online';
  6. }
其他参考:
模拟坏块故障并抢救数据(一.普通表) 

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

请登录后发表评论 登录
全部评论

注册时间:2009-09-29

  • 博文量
    215
  • 访问量
    403357