在 Linux 上监控 Oracle 数据库,通常从操作系统层、数据库实例层、性能与告警层三个维度来做。下面给你一套实用、可落地的配置思路。
重点关注:CPU、内存、I/O、网络、Swap
常用命令:
top / htop
free -h
iostat -x 1
vmstat 1
df -h
netstat -anp | grep oracle
示例(node_exporter):
./node_exporter &
https://<host>:1158/em
路径示例:
$ORACLE_BASE/diag/rdbms/<db>/<instance>/trace/alert_<instance>.log
监控错误:
grep -i "ORA-" alert_*.log
SELECT instance_name, status, database_status
FROM v$instance;
SELECT
tablespace_name,
ROUND(used_percent,2) used_pct
FROM dba_tablespace_usage_metrics;
SELECT event, count(*)
FROM v$session_wait
GROUP BY event;
SELECT sql_id, elapsed_time, executions
FROM v$sql
ORDER BY elapsed_time DESC
FETCH FIRST 10 ROWS ONLY;
zabbix-agent监控项:
常用:
oracle_exporter(用 Go 写)export DATABASE_URL=oracle://user:pass@host:1521/ORCL
./oracle_exporter
监控指标:
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'CHECK_TBS',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN IF used_pct > 90 THEN send_alert(); END IF; END;',
repeat_interval => 'FREQ=HOURLY'
);
END;
✅ OS:CPU / 内存 / IO / 磁盘
✅ Oracle:实例 / 表空间 / 会话 / 锁 / SQL
✅ 日志:alert log + listener log
✅ 工具:OEM / Zabbix / Prometheus
✅ 告警:邮件 / 钉钉 / 企业微信
如果你愿意,我可以:
你现在是 测试环境还是生产环境?用的 Oracle 几版本?