数据库监控脚本

# 定义日志文件存放的目录和日志文件名,将当前用户目录设置为LOG_PATH
LOG_PATH=/arch/check
LOG_FILE=/arch/check/logfile
CPU_VALUE=85
DISK_VALUE=85
TS_VALUE=85


# 检查 CPU的使用情况
echo "***************************************** Check CPU *****************************************" >$LOG_FILE
vmstat 1 10 | awk '{print $0;if($1 ~ /^[0-9].*/) (totalcpu+=$16);(avecpu=100-totalcpu/10)}; END {print "The average usage of cpu is :"avecpu}' >$LOG_PATH/cpu_info
 
cat $LOG_PATH/cpu_info >>$LOG_FILE
 
cpu_used_pct=$(cat $LOG_PATH/cpu_info | grep "The average usage of cpu is" |awk -F ":" '{print $2;}')
 if  [  "$cpu_used_pct"  -gt  "$CPU_VALUE" ] ; then
echo "LOG-Warnning:'date +%Y'-'%m'-'%d' '%H':'%M':'%S', The CPU usage is up to $cpu_used_pct%. Please check the system." >>$LOG_FILE
else
echo "  The CPU load is OK!!" >>$LOG_FILE
fi


# 内存使用监控,包括交换区的使用情况监控 
echo >>$LOG_FILE
echo >>$LOG_FILE
echo "***************************************** check memory useage *****************************************" >>$LOG_FILE
cat $LOG_PATH/cpu_info | awk '{print $0;if($1 ~ /^[0-9].*/) (totalpi+=$6)(totalpo+=$7)};
END {if(totalpi<10 && totalpo<10) print " The memory usage  is OK!!"; if(totalpi>10 || totalpo>10) print "The memory pagein  and pageout is to high,Please check the usage of the memory!"} ' >>$LOG_FILE


# 检查磁盘空间. 
echo >>$LOG_FILE
echo "***************************************** check disk space *****************************************">>$LOG_FILE
df -k >>$LOG_FILE
df -k |grep -v proc |grep -v Filesystem |awk '{x=1*$4}{print $1","$2","$3","$4","$5","$6","$7}'>$LOG_PATH/disk_info
 
cat $LOG_PATH/disk_info | grep -v '^#' | grep -v '-' | while read line
do
item1=$(echo $line | awk -F ',' '{print $1}')
item2=$(echo $line | awk -F ',' '{print $2}')
item3=$(echo $line | awk -F ',' '{print $3}')
item4=$(echo $line | awk -F ',' '{print $4}' |awk -F '%' '{print $1}')
item5=$(echo $line | awk -F ',' '{print $5}')
item6=$(echo $line | awk -F ',' '{print $6}')
item7=$(echo $line | awk -F ',' '{print $7}')
if [ "$item4" -gt "$DISK_VALUE" ]; then
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,$item7 is not have enough space ,please check." >>$LOG_FILE/logfile
echo " The space of disk $item7 is OK!!" >>$LOG_FILE
fi
done


# 检查磁盘I/O
echo >>$LOG_FILE
echo >>$LOG_FILE
echo "***************************************** check iostat *****************************************">>$LOG_FILE
iostat 1 3 >>$LOG_FILE


# 对网络流量进行监控
echo >>$LOG_FILE
echo >>$LOG_FILE
echo "***************************************** check netstat *****************************************">>$LOG_FILE
netstat -i >>$LOG_FILE
 
# Check the oracle background processes . 
echo >>$LOG_FILE
echo >>$LOG_FILE
echo "***************************************** check oracle process *****************************************">>$LOG_FILE
ps -ef | grep ora_ | grep -v grep | awk -F '-' '{print $2}' | awk '{print $2}' >$LOG_FILE/ora_process_info
ps -ef | grep ora_ | grep -v grep >>$LOG_FILE
 
# background process ckpt 
if [ `grep ora_ckpt_kwerpdb1 $LOG_PATH/ora_process_info` ]; then
COUNT=1
else
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,The Process ora_ckpt_kwerpdb1 was terminated!" >>$LOG_FILE
fi
 
# background process dbwr 
if [ `grep ora_dbw0_kwerpdb1 $LOG_PATH/ora_process_info` ]; then
COUNT=$((COUNT+1))
else
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,The Process ora_dbw0_kwerpdb1 was terminated !" >>$LOG_FILE
fi
 
# background process reco 
if [ `grep ora_reco_kwerpdb1 $LOG_PATH/ora_process_info` ]; then
COUNT=$((COUNT+1))
else
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,The Process ora_reco_kwerpdb1 was terminated !" >>$LOG_FILE
fi
 
# background process lgwr
if [ `grep ora_lgwr_kwerpdb1 $LOG_PATH/ora_process_info` ]; then
COUNT=$((COUNT+1))
else
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,The Process ora_lgwr_kwerpdb1 was terminated !" >>$LOG_FILE
fi
 
# background process pmon
if [ `grep ora_pmon_kwerpdb1 $LOG_PATH/ora_process_info` ]; then
COUNT=$((COUNT+1))
else
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,The Process ora_pmon_kwerpdb1 was terminated !" >>$LOG_FILE
fi
 
# background process smon 
if [ `grep ora_smon_kwerpdb1 $LOG_PATH/ora_process_info` ]; then
COUNT=$((COUNT+1))
else
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,The Process ora_smon_kwerpdb1 was terminated !" >>$LOG_FILE
fi
 
if [ "$COUNT" -eq 6 ];then
echo >>$LOG_FILE
echo " The main six Oracle processes is OK !!" >>$LOG_FILE
else
:
fi



# Check the oracle tablespace.

echo >>$LOG_FILE
echo >>$LOG_FILE
echo "***************************************** check oracle tablespace *****************************************">>$LOG_FILE
sqlplus -s must/must < $LOG_PATH/ts_info
set linesize 140 pagesize 10000
col "Status" for a10
col "Name" for a25
col "Type" for a10
col "Extent" for a15
col "Size (M)" for a20
col "Used (M)" for a20
col "Used %" for a20
SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",
TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990') "Size (M)",
TO_CHAR(NVL(a.bytes - NVL(f.bytes, 0), 0)/1024/1024,'999,999,999') "Used (M)",
TO_CHAR(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0), '990.00') "Used %"
FROM sys.dba_tablespaces d,
(select tablespace_name, sum(bytes) bytes from dba_data_files
group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE
d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) AND NOT
(d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')
UNION ALL
SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",
TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,999') "Size (M)",
TO_CHAR(NVL(t.bytes,0)/1024/1024,'999,999,999') "Used (M)",
TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Used %" FROM sys.dba_tablespaces d,
(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select
tablespace_name, sum(bytes_cached) bytes from v$temp_extent_pool group by tablespace_name) t WHERE
d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND
d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY'
ORDER BY 7;
exit
!EOF
 
cat $LOG_PATH/ts_info>>$LOG_FILE
cat $LOG_PATH/ts_info |grep ONLINE |awk '{print $2":"$3":"$4":"$5}' |while read line
do
ts_name=$(echo $line |awk -F ':' '{print $1}')
ts_total=$(echo $line |awk -F ':' '{print $2}')
ts_used=$(echo $line |awk -F ':' '{print $3}')
ts_used_pct=$(echo $line |awk -F ':' '{print $4}' |awk -F '%' '{print $1}'|awk -F '.' '{print $1}')
if [ "$ts_used_pct" -gt "$TS_VALUE" -o "$ts_used_pct" -eq "$TS_VALUE" ]; then
echo "LOG-Warnning: `date +%Y'-'%m'-'%d' '%H':'%M':'%S`,表空间$ts_name 的剩余空间紧张,请尽快清理表空间!" >>$LOG_FILE 
else
echo " The tablespace of $ts_name is OK!!" >>$LOG_FILE 
fi
done



# Check the oracle session.

sqlplus -s must/must <>$LOG_FILE
select 'The Total sessions number is '||count(*)||'.' from v$session ; 
select 'table mt: ' ,count(*) from t_dxh_mt where msgresult='SUCCESS';
select 'table detect:' ,count(*) from t_dxh_opendetect where msgresult='SUCCESS';
exit
!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30268819/viewspace-1680743/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30268819/viewspace-1680743/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值