在 Ubuntu 服务器上监控 Oracle 数据库,虽然不像在 Windows 或某些企业 Linux(如 RHEL)那样有现成的 GUI 工具,但你完全可以通过命令行工具、脚本、开源监控平台来实现全面监控,包含:
-
数据库性能指标(CPU、IO、连接数)
-
活跃会话、慢查询、锁等待
-
表空间使用、归档日志增长
-
实时 SQL 执行状态
-
告警与邮件通知
一、前提条件
在 Ubuntu 服务器上监控 Oracle,你需要满足以下基本条件:
1. Oracle 数据库已部署好
不管是 Oracle 12c、19c、21c,只要能正常运行即可。
2. 具备 Oracle 客户端工具(SQL*Plus、Oracle Instant Client)
可以远程连接 Oracle 数据库(即使 Oracle 不安装在 Ubuntu 本机上也可以监控)
安装 Oracle Instant Client(基本版):
php
sudo apt update
sudo apt install libaio1
wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip
unzip instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip
export LD_LIBRARY_PATH=$PWD/instantclient_21_9
二、命令行方式监控 Oracle(适合技术人员)
你可以使用 SQL*Plus 工具通过 SQL 查询实时监控数据库状态:
示例:查看当前连接数
php
SELECT COUNT(*) FROM v$session;
查看活跃 SQL
php
SELECT sql_text FROM v$sql WHERE executions > 1000 ORDER BY executions DESC FETCH FIRST 5 ROWS ONLY;
查询等待事件
php
SELECT event, COUNT(*) FROM v$session_wait GROUP BY event ORDER BY COUNT(*) DESC;
你可以将这些语句封装成脚本,通过 cron
定时采集、输出日志、触发告警。
三、集成开源监控工具(推荐)
以下工具可直接在 Ubuntu 上部署,对 Oracle 提供专属监控模块:
1. Prometheus + Grafana + Oracle Exporter
Oracle Exporter 是一个社区插件,可以采集 Oracle 性能指标,供 Prometheus 拉取,并在 Grafana 中展示图形化面板。
安装步骤简述:
-
安装 Oracle Instant Client + Golang 编译环境
-
获取 exporter 源码
phpgit clone https://github.com/iamseth/oracledb_exporter.git cd oracledb_exporter go build
-
设置连接配置: 编辑
config.yml
,添加用户名、密码、服务名等。 -
运行 exporter,并配置 Prometheus 抓取端口
-
在 Grafana 导入 Oracle 监控仪表板(已有很多开源模板)。优点:可视化好,自动采集,支持报警
2. Zabbix + Oracle Template
如果你偏向企业级监控,Zabbix 是首选。Zabbix 有专用 Oracle 模板支持以下功能:
-
表空间使用率
-
SGA/PGA 命中率
-
用户连接数
-
活跃事务数
-
DML 语句变化趋势
步骤:
-
安装 Zabbix Server、Zabbix Agent(或通过 Proxy)
-
使用 Oracle 模板(社区或官方)
-
在 Agent 主机配置
.tnsnames.ora
文件,保持能连接 Oracle -
通过自定义 item + SQL 查询方式抓取监控数据。优点:成熟稳定,支持历史趋势、告警规则灵活
四、监控内容建议清单
监控项 | 说明 |
---|---|
会话数 | 当前连接数、活跃数、锁定数 |
SQL执行 | 长时间运行SQL、TOP SQL |
表空间 | 剩余空间、增长率 |
等待事件 | 哪些操作在等待? |
重做日志 | 是否存在归档拥堵 |
PGA/SGA命中率 | 代表内存使用效率 |
锁与死锁 | 查看是否存在锁等待或死锁现象 |
CPU/IO负载 | 与数据库并发密切相关 |