一、引言
近期,公司Oracle数据库频繁出现问题,影响了业务的稳定运行。为了及时发现并解决潜在问题,提高数据库的性能和稳定性,闲余时间决定调研一下开源的Oracle监控工具进行监控和诊断的方案。
二、开源监控工具介绍
开源Oracle监控工具选型与对比
| 工具名称 | 技术栈 | 核心优势 | 适用场景 | 参考来源 |
|---|---|---|---|---|
| Prometheus + oracledb_exporter | Go + PromQL | 云原生友好,支持动态扩缩容,集成Grafana可视化 | 容器化环境或混合架构 | 28 |
| Orabbix | Java + Zabbix | 与Zabbix无缝集成,支持自定义SQL监控项 | 已有Zabbix监控体系的企业 | 8 |
| Oracle Monitor脚本集 | Shell/PLSQL | 轻量级,覆盖会话、锁、SQL性能等全维度监控 | 快速部署或定制化需求 | 1 |
部署方案一:Prometheus + oracledb_exporter
1. 环境准备
- 操作系统:Linux (CentOS/Ubuntu)
- 依赖项:Oracle Instant Client、libaio库
- 权限要求:Oracle数据库用户需具备
SELECT_CATALOG_ROLE和CREATE SESSION权限2。
2. 部署步骤
2.1 安装oracledb_exporter
# 下载并解压
wget https://github.com/iamseth/oracledb_exporter/releases/download/v0.5.0/oracledb_exporter-0.5.0.linux-amd64.tar.gz
tar -xvf oracledb_exporter-0.5.0.linux-amd64.tar.gz
chmod +x oracledb_exporter
# 配置环境变量
export DATA_SOURCE_NAME=username/password@hostname:port/service_name
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
# 启动服务(后台运行)
nohup ./oracledb_exporter --log.level=info --web.listen-address=:9161 &
2.2 配置Prometheus
修改prometheus.yml,添加以下内容:
scrape_configs:
- job_name: 'oracle'
static_configs:
- targets: ['oracle_host:9161']
metrics_path: /metrics
2.3 集成Grafana
-
导入Oracle监控仪表盘(ID:3333)
-
配置Prometheus数据源,查看关键指标:
- 会话数、锁等待、SQL执行时间1
- 表空间使用率、缓冲区命中率4
3. 验证与调优
- 访问测试:
http://oracle_host:9161/metrics查看指标输出 - 性能优化:调整
--collector.interval参数控制采集频率2
部署方案二:Orabbix + Zabbix
1. 环境要求
- Java环境:JDK 1.8+
- 数据库驱动:ojdbc8.jar
- Zabbix Server:已部署且版本≥4.08
2. 配置流程
2.1 安装Orabbix
wget https://github.com/smartmarmot/orabbix/releases/download/v1.2.3/orabbix-1.2.3.zip
unzip orabbix-1.2.3.zip -d /opt/orabbix
2.2 修改配置文件
-
config.props:
DatabaseList=ORCL ORCL.Url=jdbc:oracle:thin:@host:1521/service_name ORCL.User=monitor_user ORCL.Password=password -
query.props:添加自定义监控项(如闪回区使用率)8
flashback_usage.Query=SELECT SUM(PERCENT_SPACE_USED) FROM V$RECOVERY_AREA_USAGE
2.3 启动服务
nohup java -jar orabbix.jar &
2.4 Zabbix配置
- 导入模板
Template_Orabbix.xml - 关联主机并设置触发器(如表空间使用>90%告警)8
部署方案三:Oracle Monitor脚本集
1. 获取与安装
git clone https://github.com/denglt/oracleMonitor.git
cd oracleMonitor
# 配置数据库连接信息
vim config/db_conn.cfg
2. 功能示例
-
监控会话锁阻塞:
@scripts/session_blocklock.sql -- 识别阻塞链:cite[1] -
SQL性能分析:
@scripts/sql_tuning.sql -- 生成执行计划优化建议:cite[1]
3. 自动化调度
通过crontab定期执行:
0 */2 * * * /opt/oracleMonitor/run_monitor.sh > /var/log/oracle_monitor.log
监控指标建议
| 监控维度 | 关键指标 | 工具支持 |
|---|---|---|
| 会话与锁 | 阻塞会话数、锁等待时间 | Prometheus/Orabbix/脚本18 |
| SQL性能 | 高负载SQL、执行计划偏差 | 脚本集/Orabbix18 |
| 空间管理 | 表空间使用率、ASM磁盘组状态 | Prometheus/Orabbix48 |
| 高可用性 | Data Guard同步延迟、RAC节点状态 | 需定制脚本4 |
注意事项
- 安全合规:监控账户权限最小化,避免使用SYS账户4
- 网络隔离:Exporter/Orabbix服务端口需防火墙放行(如9161、10050)
- 日志维护:定期清理Prometheus/Zabbix历史数据防止磁盘爆满
完整部署细节可参考:oracledb_exporter官方文档、Orabbix配置指南28。