zoukankan      html  css  js  c++  java
  • 利用RMAN检测数据库坏块的脚本

    虽然我们也可以通过dbv(db file verify)工具做到对单个数据文件的坏块检测,但是直接使用RMAN的"backup validate check logical database;"结合V$DATABASE_BLOCK_CORRUPTION视图要方便地多。 Script:
    1) $ rman target / nocatalog
    
    2) RMAN> run {
    allocate channel d1 type disk;
    allocate channel d2 type disk;
    allocate channel d3 type disk;
    allocate channel d4 type disk;
    backup validate check logical database;
    }
    
    3) select * from V$DATABASE_BLOCK_CORRUPTION ;
    
    REM www.oracledatabase12g.com & www.askmaclean.com
    
    4) If V$DATABASE_BLOCK_CORRUPTION contains rows please run this query to 
    find the objects that contains the corrupted blocks:
    
    
    SELECT e.owner,
           e.segment_type,
           e.segment_name,
           e.partition_name,
           c.file#,
           greatest(e.block_id, c.block#) corr_start_block#,
           least(e.block_id + e.blocks - 1, c.block# + c.blocks - 1) corr_end_block#,
           least(e.block_id + e.blocks - 1, c.block# + c.blocks - 1) -
           greatest(e.block_id, c.block#) + 1 blocks_corrupted,
           null description
      FROM dba_extents e, v$database_block_corruption c
     WHERE e.file_id = c.file#
       AND e.block_id <= c.block# + c.blocks - 1
       AND e.block_id + e.blocks - 1 >= c.block#
    UNION
    SELECT s.owner,
           s.segment_type,
           s.segment_name,
           s.partition_name,
           c.file#,
           header_block corr_start_block#,
           header_block corr_end_block#,
           1 blocks_corrupted,
           'Segment Header' description
      FROM dba_segments s, v$database_block_corruption c
     WHERE s.header_file = c.file#
       AND s.header_block between c.block# and c.block# + c.blocks - 1
    UNION
    SELECT null owner,
           null segment_type,
           null segment_name,
           null partition_name,
           c.file#,
           greatest(f.block_id, c.block#) corr_start_block#,
           least(f.block_id + f.blocks - 1, c.block# + c.blocks - 1) corr_end_block#,
           least(f.block_id + f.blocks - 1, c.block# + c.blocks - 1) -
           greatest(f.block_id, c.block#) + 1 blocks_corrupted,
           'Free Block' description
      FROM dba_free_space f, v$database_block_corruption c
     WHERE f.file_id = c.file#
       AND f.block_id <= c.block# + c.blocks - 1
       AND f.block_id + f.blocks - 1 >= c.block#
     order by file#, corr_start_block#;
    
    
    SELECT tablespace_name, segment_type, owner, segment_name
    FROM dba_extents
    WHERE file_id = &fileid
    and &blockid between block_id AND block_id + blocks - 1;
    
    
  • 相关阅读:
    lvs中dr模式配置脚本
    使用AFNetworking第三方下载类
    java 经常使用測试框架
    Qt5的插件机制(1)--Qt 框架中的插件载入机制概述
    leetcode笔记:Merge Sorted Array
    oracle仿全文检索切词机制实现文本信息类似度查找
    hadoop学习;datajoin;chain签名;combine()
    php函数in_array奇怪现象
    Sql_Server中怎样推断表中某列是否存在
    Java Bean 简单介绍及其应用
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2968101.html
Copyright © 2011-2022 走看看