监控ASM实际可用空间,并发送邮件通知
由于asm空间日渐紧张,客户及开发需要每日知晓asm空间使用情况,并批量通过邮件发送通知
1 配置邮件配置文件
vi /etc/mail.rc添加以下内容
set from=cjf@163.com.cn --邮件
set smtp=mail.163.com --邮件服务器
set smtp-auth-user= cjf@163.com.cn --邮箱
set smtp-auth-password=xxx --密码或者授权码
set smtp-auth=login
非常简单,邮件服务就配好了。
测试是否能发送
mail -s “ASM容量监控date +'%Y%m%d'
” xx@qq.com< /home/oracle/mail/date +'%Y%m%d'
.txt
发送邮件在exadata Linux6.1遇到以下问题
Unknown command: “fwdretain”
解决方法
[root@db02 ~]# cd /bin
[root@db02 bin]# rm mail
[root@db02 bin]# ln -s ./mailx mail
2准备脚本
2个脚本即可
shell脚本
[root@db01 mail]# cat asmxj.sh
su - oracle <<EOF
export sdate=date +'%Y%m%d'
cd /home/oracle/mail/
sqlplus / as sysdba
@asmxj.sql
exit
EOF
SQL脚本
[root@db01 mail]# cat asmxj.sql
alter session set nls_date_format=“YYYY-MON-DD HH24:MI:SS”;
spool $sdate.txt
select USABLE_FILE_MB/1024 as "(GB)"from v$asm_diskgroup where name=‘DATA’;
spool off
exit
这里查看是是一个磁盘组的容量,可根据需求改。
3 添加定时任务
每天8:20分检查一次空间,8:30定时发送
[root@db01 mail]# crontab -l
20 8 * * * sh /home/oracle/mail/asmxj.sh
30 8 * * * sh /home/oracle/mail/sendmail.sh
[root@db01 mail]# cat sendmail.sh
mail -s “ASM容量监控date +'%Y%m%d'
” xx@qq.com< /home/oracle/mail/date +'%Y%m%d'
.txt
查看结果