1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 查看oracle磁盘组空间 shell脚本检查oracle中的ASM磁盘组空间并发送邮件

查看oracle磁盘组空间 shell脚本检查oracle中的ASM磁盘组空间并发送邮件

时间:2022-12-19 11:16:32

相关推荐

查看oracle磁盘组空间 shell脚本检查oracle中的ASM磁盘组空间并发送邮件

我正在尝试编写一个shell脚本来监视ORACLE中的ASM实例,并将相应的人员邮寄到邮件列表中。我写了下面的脚本。shell脚本检查oracle中的ASM磁盘组空间并发送邮件

#/bin/sh

#set -x

USER=xxx

PASS=yyy

CC_OFFSHORE="[emailprotected] , [emailprotected] , [emailprotected]"

CC_TEAM="$CC_OFFSHORE , [emailprotected]"

. /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实例查询之前,我们需要检查数据库是否已启动并正在运行。

并检查特定用户的密码是否已过期或活动。

然后运行ASM查询。如果上述两个约束均失败,则不应执行ASM实例查询。它应该退出。

我该如何实现它?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。