zabbix监控Oracle表空间使用率

本文介绍了如何利用Zabbix监控Oracle数据库的表空间使用情况。首先,提供了获取Oracle表空间信息的原始脚本和自动发现脚本,包括设置定时任务以定期更新数据。接着,详细说明了在Zabbix Web端配置监控项原型,包括表空间使用率、剩余容量和自动扩展状态的监控,并设置了触发器,在表空间使用率达到95%时发出告警。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、获取Oracle数据库表空间信息的原始脚本和自动发现脚本

 Oracle表空间的信息需要SQL语句查询得到,因此,我们首先创建一个获取表空间信息的原始脚本/home/oracle/tablespace.sh,这个脚本由oracle用户去执行,脚本编写如下: 

确认环境变量:

[root@racdb1 tmp]# cat /home/oracle/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/db
export ORACLE_HOSTNAME=p19c01
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=plm1
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
alias sas='sqlplus / as sysdba'
export PS1="[`whoami`@`hostname`:"'$PWD]$ '
################OracleEnd#########################
[root@racdb1 ~]# cat /home/oracle/tablespace.sh
#!/bin/bash

#export ORACLE_BASE=/u01/app/oracle
#export ORACLE_HOME=/u01/app/oracle/product/19.3.0/db
#export PATH=$ORACLE_HOME/bin:$PATH
#export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
source ~/.bash_profile  #执行此步可确保定时任务能执行成功,否则任务可能找不到变量

sqlplus  -S / as sysdba <<EOF
set heading off
set pagesize 0
set feedback off
set linesize 200

spool /tmp/ora_tablespace.txt

SELECT aa.tablespace_name,
       round(aa.usd / bb.maxs * 100, 2) "USED%",
       round((bb.maxs - aa.usd) / 1024 / 1024 / 1024, 2) "FREE(G)",
       round(bb.maxs / 1024 / 1024 / 1024, 2) "MAX(G)",
       round(aa.usd / 1024 / 1024 / 1024, 2) "USED(G)"
  FROM (SELECT b.Tablespace_Name, (b.Bytes - NVL(a.Bytes, 0)) "USD"
          FROM (SELECT tablespace_name, SUM(bytes) bytes
                  FROM Dba_Free_Space
                 GROUP BY tablespace_name) a,
               (SELECT tablespace_name, SUM(bytes) bytes
                  FROM Dba_Data_Files
                 GROUP BY tablespace_name) b
         WHERE b.tablespace_name = a.tablespace_name(+)
        ) aa,
       (SELECT tablespace_name,
               SUM(CASE
                     WHEN maxbytes = 0 THEN
                      user_bytes
                     ELSE
                      maxbytes
                   END)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值