2016-04-05 4 views
0

ORMLEの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が稼動しているかどうかを確認する必要があります。

そして、特定のユーザーのパスワードの期限が切れたり、アクティブにしたかどうか確認してください。

そして、ASMクエリを実行します。上記の制約が両方とも失敗すると、ASMインスタンス問合せは実行されません。それは終了する必要があります。

どのように達成できますか?

答えて

0

このような何か:

echo "select 1 from dual "|sqlplus yourUsername/[email protected] >/dev/null 2>&1 

if [ $? -eq 0 ] 
then 
echo "Connected" 
else 
echo "not connected " 
fi 
関連する問題