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 인스턴스 쿼리를 실행하면 안 됩니다. 종료되어야 합니다.

어떻게 구현할 수 있나요?

관련 정보