对坏块故障的讨论

对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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22621861/viewspace-2077519/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值