Debian下Oracle性能监控怎么做
导读:Debian下Oracle性能监控实操指南 一 监控体系与工具选型 数据库层:优先使用 Oracle Enterprise Manager(OEM) 做集中监控与告警;无OEM时,用 AWR/ASH 报告定位瓶颈,配合 oratop(官方...
Debian下Oracle性能监控实操指南
一 监控体系与工具选型
- 数据库层:优先使用 Oracle Enterprise Manager(OEM) 做集中监控与告警;无OEM时,用 AWR/ASH 报告定位瓶颈,配合 oratop(官方轻量工具)实时查看会话、SQL与等待事件;需要脚本化时可结合 SQL Developer/Toad 或 Python cx_Oracle 拉取指标。
- 系统层:用 top/htop、vmstat、iostat、sar、nmon、dstat、netstat 观察 CPU、内存、I/O、网络与连接数。
- 监听器:用 lsnrctl status/trace 检查监听状态与连接情况。
- 可视化与告警:开源方案可选 Prometheus + Grafana(配合 Oracle 导出器如 oracledb_exporter),或 Zabbix/Nagios 做主机/数据库一体化监控与阈值告警。
二 数据库层关键SQL与检查
- 活跃会话与正在执行的SQL(定位阻塞与高耗SQL)
SELECT s.inst_id||':'||s.sid AS inst_sid, s.username, (SYSDATE - s.sql_exec_start) DAY TO SECOND AS exec_dur, s.sql_id, SUBSTR(q.sql_text,1,60) AS sql_text, CASE WHEN s.wait_time_micro = 0 THEN CASE s.wait_class WHEN 'Idle' THEN 'IDLE: '||s.event ELSE s.event END ELSE 'ON CPU' END AS state, ROUND(CASE WHEN s.wait_time_micro = 0 THEN s.time_since_last_wait_micro ELSE s.wait_time_micro END / 1e6, 2) AS wait_sec FROM gv$session s LEFT JOIN gv$sql q ON q.sql_id = s.sql_id AND q.inst_id = s.inst_id WHERE s.status = 'ACTIVE' AND s.username IS NOT NULL ORDER BY wait_sec DESC NULLS LAST FETCH FIRST 20 ROWS ONLY; - 长时运行SQL TopN(按累计耗时)
SELECT sql_id, sql_text, ROUND(elapsed_time/1e6, 2) AS elapsed_sec, executions FROM v$sql ORDER BY elapsed_time DESC FETCH FIRST 10 ROWS ONLY; - 表空间使用率(超过 80% 建议扩容或清理)
SELECT a.tablespace_name, ROUND(a.bytes/1024/1024, 2) AS total_mb, ROUND((a.bytes - b.bytes)/1024/1024, 2) AS used_mb, ROUND((a.bytes - b.bytes)/a.bytes*100, 2) AS used_pct FROM (SELECT tablespace_name, SUM(bytes) AS bytes FROM dba_data_files GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) AS bytes FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ORDER BY used_pct DESC; - AWR/ASH 快照与报告(周期性采集,对比分析性能趋势与等待事件)
说明:AWR/ASH 为 Oracle 内置性能诊断数据,适合定位 Top SQL、等待事件、负载变化 等性能问题。-- 查看快照范围 SELECT snap_id, begin_interval_time, end_interval_time FROM dba_hist_snapshot ORDER BY snap_id DESC; -- 生成AWR报告(在SQL*Plus中执行,按提示选择开始/结束快照ID) @?/rdbms/admin/awrrpt.sql
三 系统层与监听器的监控
- 资源与I/O(建议持续采样并落库或推送至时序库)
top/htop # 进程与CPU/内存 vmstat 1 # 虚拟内存、CPU、I/O iostat -x 1 # 磁盘I/O与await、svctm sar 1 # 系统活动历史/实时 nmon # 综合资源监控 dstat # 多合一资源视图 free -h # 内存使用 df -h # 磁盘空间 netstat -tlnp | grep 1521 # 监听端口连通性 - 监听器(lsnrctl)
要点:lsnrctl 用于监听器的管理与状态查看,并非系统性能监控工具;系统层应配合 top/vmstat/iostat 等使用。lsnrctl status # 查看服务/客户端连接概况 lsnrctl reload # 重载配置(不中断现有连接) tail -f $ORACLE_HOME/network/log/listener.log lsnrctl trace start # 开启跟踪(排障用) lsnrctl trace stop # 关闭跟踪
四 自动化与告警落地
- 开源监控平台
- Prometheus + Grafana:部署 oracledb_exporter 采集 Oracle 指标,Grafana 做可视化看板,Prometheus 配置告警规则(如长事务、会话突增、表空间阈值)。
- Zabbix:通过 ODBC 或外部脚本采集数据库与表空间等指标,配置触发器与通知媒介(邮件/企业微信/钉钉)。
- Nagios:使用插件或脚本检查 ORA- 错误、会话数、表空间、备份状态等,形成服务健康检查与告警闭环。
- 轻量脚本示例(表空间阈值告警,可接入 Zabbix/Nagios)
建议:将脚本输出接入 Zabbix Agent 的 UserParameter 或 Nagios 插件,并设置 告警升级 与 值班通知。#!/usr/bin/env bash ORACLE_SID=your_sid ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 PATH=$ORACLE_HOME/bin:$PATH export ORACLE_SID ORACLE_HOME PATH THRESHOLD=80 ALERT_EMAIL=dba@example.com sqlplus -S / as sysdba < < 'EOF' SET HEADING OFF FEEDBACK OFF SELECT tablespace_name || ':' || ROUND(used_pct, 1) FROM ( SELECT a.tablespace_name, ROUND((a.bytes - b.bytes)/a.bytes*100, 1) AS used_pct FROM (SELECT tablespace_name, SUM(bytes) AS bytes FROM dba_data_files GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) AS bytes FROM dba_free_space GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name ) WHERE used_pct > $THRESHOLD / EXIT EOF
五 日常巡检清单与阈值建议
| 维度 | 关键指标 | 建议阈值或动作 |
|---|---|---|
| 表空间 | 使用率 | 超过 80% 预警,超过 90% 尽快扩容或清理 |
| 活跃会话 | 会话数、阻塞 | 突增或长期阻塞需排查 Top SQL 与锁等待 |
| 长时SQL | Elapsed Time、Executions | 结合 AWR/ASH 优化执行计划与索引 |
| 等待事件 | DB CPU、IO、锁 | 关注 db file sequential/scattered read、log file sync 等 |
| 监听器 | 状态、连接排队 | 使用 lsnrctl status 观察服务注册与连接数 |
| 系统资源 | CPU、内存、I/O | CPU 持续 > 80%、I/O await 高、内存紧张时联动排查 |
| Data Guard | 备库应用延迟 | 备库 LAST_APPLIED_TIME 落后超过阈值(如 1–3 小时)告警 |
| 日志 | Alert/Listener | 关键字 ORA-、TNS 错误、频繁重连及时告警 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下Oracle性能监控怎么做
本文地址: https://pptw.com/jishu/758333.html
