在 CentOS 上监控 Oracle 的实用方案
一 监控方案总览
- 企业级与开源自建两类:企业级可选 Oracle Enterprise Manager(OEM);开源/自建常用 Prometheus + oracledb_exporter、Zabbix(含 Orabbix 插件)、Nagios(NRPE + check_oracle)。此外,Oracle 自带的 AWR/ASH/SQL Plan Baselines 用于性能诊断与历史分析;命令行工具 lsnrctl 用于监听状态;性能工具 oratop 适合实时会话与等待事件观察。
二 快速落地步骤 Prometheus + oracledb_exporter
- 准备数据库只读账号(示例):
- CREATE USER exporter IDENTIFIED BY ExP0rt3r;
- GRANT CONNECT, CREATE SESSION TO exporter;
- GRANT SELECT ANY DICTIONARY TO exporter;(可按需最小化授权)
- 部署采集器(示例为 oracledb_exporter 0.2.2):
- 下载解压并启动:
- wget https://github.com/iamseth/oracledb_exporter/releases/download/0.2.2/oracledb_exporter.0.2.2.linux-amd64.tar.gz
- tar -zxf oracledb_exporter.0.2.2.linux-amd64.tar.gz
- cd oracledb_exporter.0.2.2.linux-amd64
- 启动脚本 start-exporter.sh(注意替换 ORACLE_HOME、监听与服务名):
- #!/bin/bash
ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=‘SIMPLIFIED CHINESE_CHINA’.ZHS16GBK
export DEFAULT_METRICS=/usr/local/oracledb_exporter-0.2.2.linux-amd64/default-metrics.toml
export DATA_SOURCE_NAME=exporter/ExP0rt3r@//oracle_ip:1521/orcl
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
exec /usr/local/oracledb_exporter-0.2.2.linux-amd64/oracledb_exporter
–default.metrics=$DEFAULT_METRICS
- 验证:curl http://localhost:9161/metrics
- systemd 服务(/etc/systemd/system/oracledb_exporter.service):
- [Unit]
Description=oracledb_exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/oracledb_exporter-0.2.2.linux-amd64/start-exporter.sh
User=oracle
[Install]
WantedBy=multi-user.target
- systemctl daemon-reload && systemctl enable --now oracledb_exporter
- 配置 Prometheus(/etc/prometheus/prometheus.yml):
-
- job_name: ‘oracle’
static_configs:
- targets: [‘exporter_ip:9161’]
- Grafana 可视化:导入官方模板(如 11121、3333),按需调整变量与阈值。
三 Zabbix 与 Nagios 方案
- Zabbix + Orabbix(推荐批量 Oracle 监控)
- 在被监控端部署 Orabbix(Java 代理),配置 JDBC/监控账号,自动发现 实例、表空间、ASM、归档 等;Zabbix Server 端导入模板后即可出图与告警。适合多实例、多库统一纳管。
- Nagios + NRPE(轻量可用)
- 在数据库主机安装 NRPE,以 oracle 用户运行检查脚本;在 nrpe.cfg 中定义命令(示例):
- command[check_oracle_tns]=/usr/local/nagios/libexec/check_oracle --tns orcl
- command[check_oracle_db]=/usr/local/nagios/libexec/check_oracle --db orcl
- command[check_oracle_login]=/usr/local/nagios/libexec/check_oracle --login orcl
- command[check_oracle_cache]=/usr/local/nagios/libexec/check_oracle --cache orcl system pwd 80 90
- command[check_oracle_tablespace]=/usr/local/nagios/libexec/check_oracle --tablespace orcl system pwd tab 90 80
- 服务端通过 check_nrpe 调用并配置告警策略。
四 命令行与系统层监控
- 监听与连接
- 监听状态:lsnrctl status;启动:lsnrctl start
- 端口连通:ss -lntp | grep 1521 或 netstat -tlnp | grep 1521
- 进程与资源
- 数据库进程:ps -ef | grep ora_
- 资源使用:top/htop、vmstat、iostat -xz 1、sar、dstat、nmon
- Oracle 性能工具
- 实时会话/等待/SQL:oratop(需单独安装)
- 性能诊断:AWR/ASH/SQL Plan Baselines(需授权并定期快照)
五 关键监控指标与告警阈值建议
- 可用性:监听状态(LISTENER 是否 UP)、实例状态(OPEN)、登录连通性(ORA- 错误计数)
- 资源:CPU 利用率、内存使用率、I/O 等待(await、svctm)、网络吞吐
- 数据库会话:当前会话数/最大会话数、阻塞会话、长事务
- 存储:表空间使用率(建议阈值 ≥80% 预警、≥90% 严重)、归档空间、ASM 磁盘组使用
- SQL 与等待:TOP SQL(逻辑/物理读、执行时间)、非空闲等待事件(如 db file sequential read、log file sync)