Ubuntu中Oracle性能如何监控
导读:Ubuntu上Oracle性能监控实践指南 一 监控体系总览 建议采用“OS层 + 数据库层 + 可视化告警平台”三层方案: OS层:用top、htop、vmstat、iostat、sar、dstat、iotop、iftop、ss等观察...
Ubuntu上Oracle性能监控实践指南
一 监控体系总览
- 建议采用“OS层 + 数据库层 + 可视化告警平台”三层方案:
- OS层:用top、htop、vmstat、iostat、sar、dstat、iotop、iftop、ss等观察CPU、内存、I/O、网络与关键进程,必要时配合sysstat收集历史数据。
- 数据库层:利用Oracle内置的AWR、ASH、动态性能视图(V$视图)定位等待事件、活跃会话、SQL执行、SGA/PGA、表空间、重做日志等瓶颈。
- 可视化与告警:小规模用Prometheus + Grafana + oracledb_exporter或Zabbix;企业级可用Oracle Enterprise Manager Cloud Control统一纳管主机与数据库,获得事件/告警、历史趋势、合规与自动化能力。
二 OS层监控与关键命令
- CPU与负载
- 实时与多核:top/htop;按核查看:mpstat -P ALL 1;历史:sar -u 1 3。
- 内存
- 概览:free -h;虚拟内存/进程/CPU:vmstat 1 5;更细:smem -r -k。
- 磁盘与I/O
- 空间:df -h;设备I/O:iostat -x 1 3;综合资源:dstat;按进程I/O:iotop。
- 网络
- 连接与端口:ss -tuln;带宽:nload;按连接排序:iftop;连通与路径:ping、mtr。
- Oracle相关
- 连接与监听:tnsping、sqlplus;进程快照:ps -ef | grep ora。
- 建议做法
- 将sar、iostat等采样加入cron长期留存;为CPU、I/O、连接数设定阈值并联动告警。
三 数据库层监控与常用SQL
- 快速健康检查
- 当前连接数:SELECT COUNT(*) FROM v$session;
- 活跃会话与等待:SELECT event, COUNT() FROM v$session_wait GROUP BY event ORDER BY COUNT() DESC;
- 高执行次数SQL:SELECT sql_text FROM v$sql WHERE executions > 1000 ORDER BY executions DESC FETCH FIRST 5 ROWS ONLY;
- 深入诊断
- 使用AWR/ASH报告识别Top SQL、等待类、实例效率;结合V$视图(如V$SESSION、V$SQL、V$SYSSTAT、V$FILESTAT、V$IOSTAT_FUNCTION)做细粒度分析。
- 实时长SQL与等待
- 监控正在运行的SQL(示例,按执行时长与等待排序):
col inst_sid heading "INST_ID|:SID" format a7 col username format a10 col machine format a12 col sql_exec_start heading "SQL|START|D HH:MM:SS" format a11 col sql_id format a13 col sql_text format a40 col event format a33 col wait_sec heading "WAIT|(SEC)" format 99999 set linesize 200 select ses.inst_id||chr(58)||ses.sid as inst_sid, username, (sysdate - sql_exec_start) day(1) to second(0) as sql_exec_start, ses.sql_id, substr(sql.sql_text,1,40) sql_text, substr(case time_since_last_wait_micro when 0 then (case wait_class when 'Idle' then 'IDLE: '||event else event end) else 'ON CPU' end,1,33) event, (case time_since_last_wait_micro when 0 then wait_time_micro else time_since_last_wait_micro end) /1000000 wait_sec from gv$session ses, gv$sqlstats sql where ses.inst_id||chr(58)||ses.sid < > sys_context('USERENV','INSTANCE')||chr(58)||sys_context('USERENV','SID') and username is not null and status='ACTIVE' and ses.sql_id = sql.sql_id (+) order by wait_sec desc, sql_exec_start, username, ses.sid, ses.sql_id;
- 监控正在运行的SQL(示例,按执行时长与等待排序):
- 日志与归档
- 数据库告警:$ORACLE_BASE/diag/rdbms///trace/alert_.log
- 监听器日志:查看listener.log定位连接与监听异常;归档监控可查询V$ARCHIVE_DEST等视图。
四 可视化与告警平台集成
- Prometheus + Grafana + oracledb_exporter
- 在Ubuntu部署Oracle Instant Client,构建oracledb_exporter(配置连接串/账号),Prometheus定时抓取,Grafana导入Oracle仪表盘实现可视化与阈值告警。
- Zabbix
- 使用Zabbix Server/Agent与Oracle模板或自定义Item(SQL查询)采集SGA/PGA命中率、表空间、活跃会话、DML趋势等,支持灵活告警与历史趋势。
- Oracle Enterprise Manager Cloud Control
- 纳管Linux主机与Oracle数据库,获得Host Summary、进程/资源分析、事件与告警、配置变更审计、历史与趋势、合规与自动化等一体化能力;若需增强Linux监控,可配合Management Pack for Linux获取120+指标与存储/作业/远程执行等运维能力。
五 监控清单与告警阈值建议
- 建议持续监控并设定阈值(示例为常见经验值,需结合业务压测校准):
- 性能指标:CPU利用率 > 80%、内存可用 < 10%、**磁盘util > 80%**持续5分钟
- 数据库:活跃会话数突增、Top SQL执行时间/次数异常、SGA/PGA命中率偏低
- 存储:表空间使用率 > 80%、归档日志增长过快或切换频繁
- 并发与等待:enq: TX - row lock contention、log file sync、db file sequential/scattered read等等待事件增多
- 日志与连接:alert.log/ listener.log出现**ORA-**错误、tnsping时延异常、连接数接近上限
- 实施要点
- 建立基线(工作日/峰值),以同比/环比判断异常;为长事务、锁等待、空间将满配置主动告警与自动扩容/清理脚本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu中Oracle性能如何监控
本文地址: https://pptw.com/jishu/755522.html
