监控oracle表空间是否超过80%

先点赞后观看,养成好习惯

1.监控脚本

oracle_cron.sh

source /home/oracle/.bash_profile
sqlplus -s /  as  sysdba  > /tmp/tablespace.log<<EOF
CLEAR COLUMNS BREAKS COMPUTES
set lines 134 pages 200
COLUMN STATUS                              HEADING 'Status'            ENTMAP off
COLUMN TABLESPACE_NAME                     HEADING 'Name'              ENTMAP off
COLUMN CONTENTS          FORMAT a12        HEADING 'TS Type'           ENTMAP off
COLUMN ALL_MB            FORMAT 9,999,999  HEADING 'All Size(MB)'          ENTMAP off
COLUMN MAX_MB            FORMAT 9,999,999  HEADING 'Max Size(MB)'          ENTMAP off
COLUMN FREE_MB           FORMAT 9,999,999  HEADING 'Free Size(MB)'         ENTMAP off
COLUMN FREE_EXT          FORMAT 9,999,999  HEADING 'Max Free'          ENTMAP off
COLUMN PCT_FREE          FORMAT 999        HEADING 'Pct. Free'         ENTMAP off
COLUMN PCT_FREE_EXT      FORMAT 999        HEADING 'Max Free%'         ENTMAP off
SELECT T.TABLESPACE_NAME TABLESPACE_NAME,
       T.CONTENTS CONTENTS,
       ROUND(SUM(A.BYTES) / 1048576) ALL_MB,
       ROUND(SUM(DECODE(MAXBYTES, 0, A.BYTES, MAXBYTES)) /1048576) MAX_MB,
       ROUND(SUM(NVL(F.BYTES,0)) / 1048576) FREE_MB,
       ROUND((SUM(DECODE(MAXBYTES, 0, 0, MAXBYTES-A.BYTES)) + SUM(NVL(F.BYTES, 0))) / 1048576) FREE_EXT,
       ROUND(100 * SUM(NVL(F.BYTES, 0)) / SUM(A.BYTES)) PCT_FREE,
       ROUND(100 * (SUM(DECODE(MAXBYTES, 0, 0, MAXBYTES-A.BYTES)) + SUM(NVL(F.BYTES, 0))) / SUM(DECODE(A.MAXBYTES, 0, A.BYTES, A.MAXBYTES)))  PCT_FREE_EXT
  FROM DBA_DATA_FILES A,
       DBA_TABLESPACES T,
       (SELECT FILE_ID,SUM(BYTES) BYTES FROM DBA_FREE_SPACE GROUP BY FILE_ID) F
 WHERE A.FILE_ID = F.FILE_ID(+)
   AND A.TABLESPACE_NAME = T.TABLESPACE_NAME
   AND T.CONTENTS != 'TEMPORARY'
 GROUP BY T.TABLESPACE_NAME, T.CONTENTS, T.STATUS
 ORDER BY ROUND(100 * SUM(NVL(F.BYTES, 0)) / SUM(A.BYTES));
EOF
sed -i '$d'   /tmp/tablespace.log
sed -i '$d'   /tmp/tablespace.log
sed -i 's/,//g'   /tmp/tablespace.log

#取第8列数据;去掉不是数字的;去掉大于20的;有返回数据插入NO,没有返回数据插入YES
if cat /tmp/tablespace.log | awk '$8 <= 20 {print $8}' | grep -qE '[0-9]+'; then
    echo "NO" > /tmp/tablespace.log
else
    echo "YES" > /tmp/tablespace.log
fi


2.zabbix创建模板

监控项

vfs.file.regmatch[/tmp/tablespace.log,NO]

触发器

last(/Check the Oracle tablespace/vfs.file.regmatch[/tmp/tablespace.log,NO])=1

1.查找文件中的字符串,如果有则返回1,没有则返回0。
2.是否存在与字符串"NO"匹配的内容,如果匹配结果为1,则触发报警

3.定时任务

su - oracle

crontab -e

# Check the Oracle tablespace
0 */3 * * * /home/oracle/scripts/oracle_cron.sh > /tmp/oracle_cron.sh.log 2>&1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大虾别跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值