• standby checking script 3则 V1 shell 脚本


    ---1

    #!/bin/sh

    export ORACLE_SID=hdb
    export ORACLE_BASE=/db/hdbdg/app/product/database
    export ORACLE_HOME=/db/hdbdg/app/product/database/11g
    export LANG=en_US
    export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
    export PATH=$PATH:$ORACLE_HOME/bin:.


    STATE_OK=0
    STATE_WARNING=1
    STATE_CRITICAL=2
    STATE_UNKNOWN=3
    #备库
    get_result=`sqlplus '/ as sysdba'<<EOF
    spool off;
    select 'stdcseq1=' || max(sequence#) from v\$archived_log where thread#=1 and applied='YES' group by thread#;
    quit;
    EOF`
    stdcseq1=`echo "$get_result"|grep stdcseq1|cut -d "=" -f2`
    echo $stdcseq1

    get_result=`sqlplus '/ as sysdba'<<EOF
    spool off;
    select 'stdcseq2=' || max(sequence#) from v\$archived_log where thread#=2 and applied='YES' group by thread#;
    quit;
    EOF`
    stdcseq2=`echo "$get_result"|grep stdcseq2|cut -d "=" -f2`
    echo $stdcseq2

    #主库
    get_result=`sqlplus dbmonopr/dbmonoprhdb11@hdb<<EOF
    spool off;
    select 'seq1=' || max(sequence#) from v\$archived_log where thread#=1 group by thread#;
    quit;
    EOF`
    echo "$get_result"
    seq1=`echo "$get_result"|grep seq1|cut -d "=" -f2`
    echo $seq1


    seqdiff1=`expr $seq1 - $stdcseq1`

    echo 'seqdiff1='$seqdiff1

    if [ $seqdiff1 -ge 10 ]
    then
    echo "CRITICAL - hdb database dataguard error large than 10."
    exit 2
    fi

    if [ $seqdiff1 -ge 6 ]
    then
    echo "WARNING - hdb database dataguard error large than 6."
    exit 1
    fi

    if [ $seqdiff1 -lt 6 ]
    then
    echo "OK - hdb database dataguard ok."
    exit 0
    fi

    ############2:

    version=`sqlplus -v|awk '{print $3}'|awk -F '.' '{print $1}'`

    process_status='select status from v$managed_standby where process!='"'ARCH' and process like '%MRP%';"
    status=`sqlplus -S / as sysdba<<EOF
    set heading off
    set feedback off
    $process_status
    exit
    EOF`
    echo mrp_status=$status

    synctime="select to_char(first_time,'""yyyy-mm-dd hh24:mi:ss'"') from v$log_history where recid in (select max(recid) from v$log_history b group by thread#);'
    time=`sqlplus -S / as sysdba<<EOF
    set heading off
    set feedback off
    $synctime
    exit
    EOF`
    echo synctime=$time


    system=`uname`
    case $system in
    AIX)
    disk_usage=`df -g|egrep -i "archive|fra" |awk '{print $(NF-3)}'`
    if [ -n "$disk_usage" ];
    then
    echo archivedisk_usage=$disk_usage
    fi
    ;;
    HP-UX)
    disk_usage=`bdf |egrep -i "archive|fra" |awk '{print $(NF-1)}'`
    if [ -n "$disk_usage" ];
    then
    echo archivedisk_usage=$disk_usage
    fi
    ;;
    Linux)
    disk_usage=`df -h|egrep -i "archive|fra" |awk '{print $(NF-1)}'`
    if [ -n "$disk_usage" ];
    then
    echo archivedisk_usage=$disk_usage
    fi
    ;;
    esac


    if [ -z "$disk_usage" ];
    then
    recovery_dest='select value from v$system_parameter where name = '"'db_recovery_file_dest';"
    dest=`sqlplus -S / as sysdba<<EOF
    set heading off
    set feedback off
    $recovery_dest
    exit
    EOF`
    dest=${dest#*+}

    asmdisk_usage_sql='select round((1-(free_mb/total_mb))*100,2) from v$asm_diskgroup where name='"'$dest';"
    asmdisk_usage=`sqlplus -S / as sysdba<<EOF
    set heading off
    set feedback off
    $asmdisk_usage_sql
    exit
    EOF`
    echo archivedisk_usage=${asmdisk_usage}%
    fi

    if [ $version -eq 10 ];
    then
    recovery_dest_usage='select PERCENT_SPACE_USED from v$flash_recovery_area_usage where FILE_TYPE like '"'%ARCHIVE%';"
    fi

    if [ $version -eq 11 ];
    then
    recovery_dest_usage='select PERCENT_SPACE_USED from v$flash_recovery_area_usage where FILE_TYPE = '"'ARCHIVED LOG';"
    fi

    usage=`sqlplus -S / as sysdba<<EOF
    set heading off
    set feedback off
    $recovery_dest_usage
    exit
    EOF`
    echo fra_usage=${usage}%

    ###########3

    #!/bin/bash
    #env
    PATH=/usr/local/bin:/usr/bin:$PATH:.
    source /home/oracle11g/.bash_profile


    f_getparameter(){
    if [ -z "$3" ]; then
    return
    fi
    PARAMETER=$1
    sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"
    ##sqlplus -s /nolog <<EOF
    set head off pagesize 0 feedback off linesize 200
    whenever sqlerror exit 1
    ##conn / as sysdba
    ##conn ${LOGIN_ID}@${db_name}
    conn $2@$3
    select 'a='||value from v$parameter where name = '$PARAMETER';
    EOF
    }

    f_getvalues(){
    if [ -z "$3" ]; then
    return
    fi
    PARAMETER=$1
    sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"
    ##sqlplus -s /nolog <<EOF
    set head off pagesize 0 feedback off linesize 200
    whenever sqlerror exit 1
    ##conn / as sysdba
    ##conn ${LOGIN_ID}@${db_name}
    conn $2@$3
    select 'a='||round(max_utilization/limit_value*100) from v$resource_limit where resource_name='$PARAMETER';
    EOF
    }


    f_getlist(){
    if [ -z "$1" ]; then
    return
    fi
    PARAMETER=$1
    # sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"
    sqlplus -s /nolog <<EOF
    set head off pagesize 0 feedack off linesize 50
    whenever sqlerror exit 1
    conn $2@$3
    select status from v$managed_standby where process!='ARCH' and process like '%MRP%';
    select to_char(first_time,'yyyy-mm-dd hh24:mi:ss') from v$log_history where recid in (select max(recid) from v$log_history b group by thread#);
    select PERCENT_SPACE_USED from v$flash_recovery_area_usage where FILE_TYPE like 'ARCHIVE%';
    EOF
    }


    db_list_checking(){

    db_list="ora11g_test sdbs"
    #db_list="sdbs"
    ##remove rdbs because 210.187 can't telnet 58.8.95.3 port 1528,need network check more
    for db_name in ${db_list}

    do
    LOGIN_ID=dbmgr/t1234DBA

    echo "###########$db_name###"

    #echo $list
    f_getlist ANY $LOGIN_ID $db_name

    done


    }
    main()
    {
    echo '----------------'`date`'------------------checing konw---------------------------'



    db_list_checking

    echo '----------------'`date`'------------------over---------------------------'

    }

    main

    ###sample 3:

    step 1 :create table tbspct 


    set heading on

    clear computes columns breaks

    column name new_value _dbname noprint
    column spool_time new_value _spool_time noprint
    column spooltime new_value _spooltime noprint

    select name,to_char(sysdate,'YYYYMMDD') as "spool_time",
    to_char(sysdate,'YYYY-MM-DD') as "spooltime"
    from v$database;

    define _rpt_db_name=&_dbname
    define _rpt_spool_time="&_spooltime"


    create table tbspct as
    SELECT '&_dbname' db_name,'&_spooltime' time,a.tablespace_name ,b.maxbytes/1024/1024/1024 "maxbyes_GB",total/1024/1024/1024 "bytes_GB",free/1024/1024/1024 "free_GB",(total-free) /1024/1024/1024 "use_GB",
    ROUND((total-free)/total,4)*100 "use_%",ROUND((total-free)/b.maxbytes,4)*100 "maxuse_%"
    FROM
    (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE
    GROUP BY tablespace_name
    ) a,
    (SELECT tablespace_name,sum(case autoextensible when 'YES' then maxbytes else bytes end) maxbytes,SUM(bytes) total FROM DBA_DATA_FILES
    GROUP BY tablespace_name
    ) b
    WHERE a.tablespace_name=b.tablespace_name
    order by "maxuse_%" desc
    ;

    step 2:

    #!/bin/bash
    #env
    #the script is used for init dbmgr passwd every two month;

    PATH=/usr/local/bin:/usr/bin:$PATH:.
    export $PATH
    source /home/oracle11g/.bash_profile


    f_getparameter(){
    if [ -z "$3" ]; then
    return
    fi
    PARAMETER=$1
    sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"
    ##sqlplus -s /nolog <<EOF
    set head off pagesize 0 feedback off linesize 200
    whenever sqlerror exit 1
    ##conn / as sysdba
    ##conn ${LOGIN_ID}@${db_name}
    conn $2@$3
    select 'a='||value from v$parameter where name = '$PARAMETER';
    EOF
    }

    f_getvalues(){
    if [ -z "$3" ]; then
    return
    fi
    PARAMETER=$1
    sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"
    ##sqlplus -s /nolog <<EOF
    set head off pagesize 0 feedback off linesize 200
    whenever sqlerror exit 1
    ##conn / as sysdba
    ##conn ${LOGIN_ID}@${db_name}
    conn $2@$3
    select 'a='||round(max_utilization/limit_value*100) from v$resource_limit where resource_name='$PARAMETER';
    EOF
    }


    f_getlist(){
    if [ -z "$1" ]; then
    return
    fi
    PARAMETER=$1
    # sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"

    time=`date +"%Y-%m-%d"`
    db=$3

    QUERYRES=`
    sqlplus -s /nolog <<EOF
    set echo off feedback off heading off underline off linesize 300;
    conn $2@$3

    SELECT a.tablespace_name ,b.maxbytes/1024/1024/1024 "maxbyes_GB",total/1024/1024/1024 "bytes_GB",free/1024/1024/1024 "free_GB",(total-free) /1024/1024/1024 "use_GB",
    ROUND((total-free)/total,4)*100 "use_%",ROUND((total-free)/b.maxbytes,4)*100 "maxuse_%"
    FROM
    (SELECT tablespace_name,SUM(bytes) free FROM DBA_FREE_SPACE
    GROUP BY tablespace_name
    ) a,
    (SELECT tablespace_name,sum(case autoextensible when 'YES' then maxbytes else bytes end) maxbytes,SUM(bytes) total FROM DBA_DATA_FILES
    GROUP BY tablespace_name
    ) b
    WHERE a.tablespace_name=b.tablespace_name
    order by "maxuse_%" desc
    ;
    exit;
    EOF`

    echo 'echo variable_1: '${QUERYRES}


    while read -r tablespace_name maxbyes_GB bytes_GB free_GB used_GB use_percent maxuse_percent
    do
    echo "..${tablespace_name}..${maxbyes_GB}..${bytes_GB}..${free_GB}..${used_GB}..${use_percent}..${maxuse_percent}.."
    time=`date +"%Y-%m-%d"`
    db=$3
    sqlplus -S dbmgr/crbank1234DBA <<EOF
    insert into tabpct values ('${db}','${time}','${tablespace_name}',${maxbyes_GB},${bytes_GB},${free_GB},${used_GB},${use_percent},${maxuse_percent});
    commit;
    exit
    EOF
    done <<< "${QUERYRES}"
    echo "------------------------------------------------------"


    echo "------------------------------------------------------"
    }

    f_init_passwd(){
    if [ -z "$1" ]; then
    return
    fi
    PARAMETER=$1
    # sqlplus -s /nolog <<EOF | awk -F= "/^a=/ {print $2}"
    sqlplus -s /nolog <<EOF
    set head off pagesize 0 feedback off linesize 50
    whenever sqlerror exit 1
    conn $2@$3
    select '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    +++++++++++++++++++++++++++++++++++++++++++++++++' from dual;
    alter user dbmgr profile default;
    alter user dbmgr identified by crbank1234DBA;
    alter user dbmgr profile dba_profile;
    EOF
    }

    db_list_checking(){
    db_list="core1 core2 tbs cfront1 cfront2 otp ebank tler1 tler2 hsms NSP crbesb epcc afa dbs fpip igfs1 igfs2 epp meta ctl itos itsm pfss biee fms ods1 ods2 csmi crpt vas acp dssdb ofsaa amls osas pcis ecis imwf ccms scf eams aas etf2 crbp crbclyt fmp gcmp ems pas rrs tmap crma cafcs fams oivs pcms oid1 oid2 bpo1 bpo2 filnet kms cdbs frs rcfe bcds crcs ams dlpeds bdlp infa fibs ccmsrpt fcc edfe cifs mpcs cus oas crmo1 crmo2 ivms1 ivms2 nmbs ccfs ccif cccs cems moa bimp epcc bcss crss pcon imwf cop1 cop2 portal ilog omcp vats skdb imbs fcs abm bstv pisa cfms reb iqms ptsmdm moa esa osasv5 rbad um hdp ncdp ftms odshst htfb pcus grc mip opics virs ves ebcs cmms olp olprule"
    #db_list="opics ccms cems ccmsrpt afa eft2 fibs epcc skdb vats fms paca scf aas bcds bms ems pas rrs moa edfe edfe pisa frs portal meta infa ods crpt odshst ftms nsp"
    #db_list="ora11g"
    #db_list="afa_dg nsp_dg"

    for db_name in ${db_list}

    do
    LOGIN_ID=dbmgr/crbank1234DBA

    echo "###########$db_name###"


    #para=`f_getparameter processes $LOGIN_ID $db_name`
    ##echo $para
    #
    #if [ -z "$para" ]; then
    ### return "please check $db_name connect issue"
    # echo return "please check $db_name connect issue"
    # continue
    #fi
    #
    #
    #if [ $para -ge 151 ]
    #then
    # echo "OK"
    #else
    # echo "$db_name processes values is 150, please increase to 500;"
    #fi
    #
    #value=`f_getvalues processes $LOGIN_ID $db_name`
    ###echo $value
    #
    #if [ $value -ge 80 ]
    #then
    # echo "$db_name processes values is $para and not more , please increase to more;"
    #fi
    #

    #list=`f_getlist ANY $LOGIN_ID $db_name`

    #echo $list
    f_getlist ANY $LOGIN_ID $db_name
    #f_init_passwd ANY $LOGIN_ID $db_name

    done


    }
    main()
    {
    echo '----------------'`date`'------------------checing konw---------------------------'



    #/*每月27号清理alert_log{异常分析}、listener(监听log)*,udit_log(跟踪)、log_xml/
    ## date_=`date +%d`
    ## if [ $date_ -eq 27 ]
    ## then
    ## alert_log
    db_list_checking


    ##fi
    echo '----------------'`date`'------------------over---------------------------'

    }

    main

  • 相关阅读:
    从零开始——PowerShell应用入门(全例子入门讲解)
    详解C# Tuple VS ValueTuple(元组类 VS 值元组)
    How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On——RHEL Pacemaker中配置STONITH
    DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
    SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)
    SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)
    微软SQL Server认证最新信息(17年5月22日更新),感兴趣的进来看看哟
    Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
    3分钟带你了解PowerShell发展历程——PowerShell各版本资料整理
    由Find All References引发的思考。,
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/8547778.html
Copyright © 2020-2023  润新知