首页主机资讯Ubuntu中Oracle性能如何监控

Ubuntu中Oracle性能如何监控

时间2025-11-25 13:48:04发布访客分类主机资讯浏览429
导读: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_exporterZabbix;企业级可用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;
          
      
  • 日志与归档
    • 数据库告警:$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 contentionlog file syncdb file sequential/scattered read等等待事件增多
    • 日志与连接:alert.log/ listener.log出现**ORA-**错误、tnsping时延异常、连接数接近上限
  • 实施要点
    • 建立基线(工作日/峰值),以同比/环比判断异常;为长事务、锁等待、空间将满配置主动告警自动扩容/清理脚本

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu中Oracle性能如何监控
本文地址: https://pptw.com/jishu/755522.html
Debian如何确保LNMP高可用 Debian SSH如何查看连接日志

游客 回复需填写必要信息