zoukankan      html  css  js  c++  java
  • scnhealthcheck

    在CPU补丁中,Oracle提供了一个脚本 scnhealthcheck.sql 用于检查数据库当前SCN的剩余情况。
    该脚本的算法和以上描述相同,最终将最大合理SCN 减去当前数据库SCN,计算得出一个指标:HeadRoom。也就是SCN尚余的顶部空间,这个顶部空间最后折合成天数:
    以下是这个脚本的内容:

    Rem
    Rem $Header: rdbms/admin/scnhealthcheck.sql st_server_tbhukya_bug-13498243/8 2012/01/17 03:37:18 tbhukya Exp $
    Rem
    Rem scnhealthcheck.sql
    Rem
    Rem Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 
    Rem
    Rem    NAME
    Rem      scnhealthcheck.sql - Scn Health check
    Rem
    Rem    DESCRIPTION
    Rem      Checks scn health of a DB
    Rem
    Rem    NOTES
    Rem      .
    Rem
    Rem    MODIFIED   (MM/DD/YY)
    Rem    tbhukya     01/11/12 - Created
    Rem
    Rem
    
    define LOWTHRESHOLD=10
    define MIDTHRESHOLD=62
    define VERBOSE=FALSE
    
    set veri off;
    set feedback off;
    
    set serverout on
    DECLARE
     verbose boolean:=&&VERBOSE;
    BEGIN
     For C in (
      select 
       version, 
       date_time,
       dbms_flashback.get_system_change_number current_scn,
       indicator
      from
      (
       select
       version,
       to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS') DATE_TIME,
       ((((
        ((to_number(to_char(sysdate,'YYYY'))-1988)*12*31*24*60*60) +
        ((to_number(to_char(sysdate,'MM'))-1)*31*24*60*60) +
        (((to_number(to_char(sysdate,'DD'))-1))*24*60*60) +
        (to_number(to_char(sysdate,'HH24'))*60*60) +
        (to_number(to_char(sysdate,'MI'))*60) +
        (to_number(to_char(sysdate,'SS')))
        ) * (16*1024)) - dbms_flashback.get_system_change_number)
       / (16*1024*60*60*24)
       ) indicator
       from v$instance
      ) 
     ) LOOP
      dbms_output.put_line( '-----------------------------------------------------'
                            || '---------' );
      dbms_output.put_line( 'ScnHealthCheck' );
      dbms_output.put_line( '-----------------------------------------------------'
                            || '---------' );
      dbms_output.put_line( 'Current Date: '||C.date_time );
      dbms_output.put_line( 'Current SCN:  '||C.current_scn );
      if (verbose) then
        dbms_output.put_line( 'SCN Headroom: '||round(C.indicator,2) );
      end if;
      dbms_output.put_line( 'Version:      '||C.version );
      dbms_output.put_line( '-----------------------------------------------------'
                            || '---------' );
    
    
      IF C.version > '10.2.0.5.0' and 
         C.version NOT LIKE '9.2%' THEN
        IF C.indicator>&MIDTHRESHOLD THEN 
          dbms_output.put_line('Result: A - SCN Headroom is good');
          dbms_output.put_line('Apply the latest recommended patches');
          dbms_output.put_line('based on your maintenance schedule');
          IF (C.version < '11.2.0.2') THEN
            dbms_output.put_line('AND set _external_scn_rejection_threshold_hours='
                                 || '24 after apply.');
          END IF;
        ELSIF C.indicator<=&LOWTHRESHOLD THEN
          dbms_output.put_line('Result: C - SCN Headroom is low');
          dbms_output.put_line('If you have not already done so apply' );
          dbms_output.put_line('the latest recommended patches right now' );
          IF (C.version < '11.2.0.2') THEN
            dbms_output.put_line('set _external_scn_rejection_threshold_hours=24 '
                                 || 'after apply');
          END IF;
          dbms_output.put_line('AND contact Oracle support immediately.' );
        ELSE
          dbms_output.put_line('Result: B - SCN Headroom is low');
          dbms_output.put_line('If you have not already done so apply' );
          dbms_output.put_line('the latest recommended patches right now');
          IF (C.version < '11.2.0.2') THEN
            dbms_output.put_line('AND set _external_scn_rejection_threshold_hours='
                                 ||'24 after apply.');
          END IF;
        END IF;
      ELSE
        IF C.indicator<=&MIDTHRESHOLD THEN
          dbms_output.put_line('Result: C - SCN Headroom is low');
          dbms_output.put_line('If you have not already done so apply' );
          dbms_output.put_line('the latest recommended patches right now' );
          IF (C.version >= '10.1.0.5.0' and 
              C.version <= '10.2.0.5.0' and 
              C.version NOT LIKE '9.2%') THEN
            dbms_output.put_line(', set _external_scn_rejection_threshold_hours=24'
                                 || ' after apply');
          END IF;
          dbms_output.put_line('AND contact Oracle support immediately.' );
        ELSE
          dbms_output.put_line('Result: A - SCN Headroom is good');
          dbms_output.put_line('Apply the latest recommended patches');
          dbms_output.put_line('based on your maintenance schedule ');
          IF (C.version >= '10.1.0.5.0' and
              C.version <= '10.2.0.5.0' and
              C.version NOT LIKE '9.2%') THEN
           dbms_output.put_line('AND set _external_scn_rejection_threshold_hours=24'
                                 || ' after apply.');
          END IF;
        END IF;
      END IF;
      dbms_output.put_line(
        'For further information review MOS document id 1393363.1');
      dbms_output.put_line( '-----------------------------------------------------'
                            || '---------' );
     END LOOP;
    end;
    /

    我发现我实施的一个RAC11G库,这个报警出现过一段时间,也没事。

    Mon Aug 29 19:09:37 2016
    ALTER DATABASE OPEN
    This instance was first to open
    ************************************************************
    Warning: The SCN headroom for this database is only 4 days!
    ************************************************************
    ************************************************************
    Warning: The SCN headroom for this database is only 4 days!
    ************************************************************
    Picked broadcast on commit scheme to generate SCNs

    问题是,这个告警真的不用理会吗?

  • 相关阅读:
    java IO选择流的原则及其与IO流相关类的关系
    图形用户界面(graphical user interface)
    泛型
    流、文件及基于文本的应用
    java线程
    多态与方法调用
    在eclipse中使用javap工具反汇编
    java类的访问控制符与其他几个特殊修饰符的总结
    java中几个特殊的类
    @property在内存管理中的参数问题
  • 原文地址:https://www.cnblogs.com/likingzi/p/6420927.html
Copyright © 2011-2022 走看看