OracleでASMディスク・グループ・スペースを確認して電子メールを送信するシェル・スクリプト

OracleでASMディスク・グループ・スペースを確認して電子メールを送信するシェル・スクリプト

私はOracleでASMインスタンスを監視し、メーリングリストの適切な人にメールを送信するシェルスクリプトを作成しようとしています。私は次のスクリプトを書いた。

#/bin/sh    
#set -x
    USER=xxx
    PASS=yyy
    CC_OFFSHORE="[email protected] , [email protected] , [email protected]"
    CC_TEAM="$CC_OFFSHORE , [email protected]"
    . /home/oracle/.TESTenv             #(NOT MANDATORY. DEPENDS ON YOUR ENVIRONMENT)
    sqlplus -s $USER/$PASS << EOF
    spool /home/oracle/SABARISH/RETVAL.log
    set linesize 140
    SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
    col group_number format 999
    col diskgroup  format a20
    col total_mb  format 999,999,999
    col free_mb  format 999,999,999
    col tot_used format 999,999,999
    col pct_used format 999
    col pct_free format 999
    select group_number,
           name diskgroup,
           total_mb,
           free_mb,
           total_mb-free_mb tot_used,
           pct_used,
           pct_free
      from (select group_number,name,total_mb,free_mb,
                 round(((total_mb-nvl(free_mb,0))/decode(total_mb,0,1,total_mb))*100) pct_used,
                 round((free_mb/total_mb)*100) pct_free
          from v\$asm_diskgroup
          where total_mb >0
          order by pct_free
         )
    /
    spool off;
    EOF

    while read -r values
    do
        USED_PCT=$(echo $values | awk '{print $6}')
        DISKGROUP_NAME=$(echo $values | awk '{print $2}')
        WARNING_LIMIT=60
        CRITICAL_LIMIT=70
        if [ ${USED_PCT} -ge ${WARNING_LIMIT} ] && [ ${USED_PCT} -lt ${CRITICAL_LIMIT} ]
        then
            echo "WARNING ALERT. $DISKGROUP_NAME disk has used $USED_PCT%" | mailx -s "(WARNING ALERT $USED_PCT% used)" $CXC_OFFSHORE
        elif [ ${USED_PCT} -ge ${CRITICAL_LIMIT} ]
        then
            echo "CRITICAL ALERT.$DISKGROUP_NAME disk has used $USED_PCT%" | mailx -s "(CRITICAL ALERT $USED_PCT% used)" $CXC_TEAM
        fi
    done < /home/oracle/SABARISH/RETVAL.log

上記のスクリプトは完全に実行されます。

私がしなければならないのは、スクリプトに詳細を追加することだけです。 ASMインスタンスクエリを実行する前に、DBが実行されていることを確認する必要があります。

そして、特定のユーザーのパスワードが期限切れになっているか、Oracleで有効になっていることを確認してください。

次に、ASMクエリを実行します。上記の制約がすべて失敗した場合は、ASMインスタンスクエリを実行しないでください。終了する必要があります。

どのように実装できますか?

ベストアンサー1

おすすめ記事