首页主机资讯如何监控Ubuntu Oracle的性能指标

如何监控Ubuntu Oracle的性能指标

时间2025-12-05 15:40:04发布访客分类主机资讯浏览1103
导读:Ubuntu 上监控 Oracle 性能的可落地方案 一 监控体系与工具选型 系统层:使用 top/htop、vmstat、iostat、sar、dstat、nmon 观察 CPU、内存、I/O、网络 等基础资源,定位瓶颈是否来自操作系统...

Ubuntu 上监控 Oracle 性能的可落地方案

一 监控体系与工具选型

  • 系统层:使用 top/htop、vmstat、iostat、sar、dstat、nmon 观察 CPU、内存、I/O、网络 等基础资源,定位瓶颈是否来自操作系统。
  • 数据库层:优先使用 Oracle Enterprise Manager(OEM)oratop 做实时与历史性能观测;在具备相应许可时,利用 Diagnostics Pack 提供的 AWR/ASH/ADDM 做深度分析与对比。
  • 平台化:中小型环境可用 Zabbix 通过 ODBC/脚本采集;云上或混合环境可用 OCI Database Management 统一监控、性能管理与 SQL 调优。
  • 日志与连通性:关注 alert.log、listener.log,并用 tnsping、sqlplus 验证连接与监听状态。

二 快速上手的命令行监控

  • 系统资源快检
    • CPU/内存/进程:top/htop;整体资源:vmstat 1;磁盘 I/O:iostat -xz 1;历史/系统活动:sar;多合一:dstat;可视化:nmon。
  • Oracle 连通与健康
    • 监听与连接:tnsping ORCL;sqlplus / as sysdba 登录检查实例状态。
  • 实时会话与慢 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 sql_exec_start, username, ses.sid, ses.sql_id;
          
      
  • 日志与告警线索
    • 数据库告警:查看 $ORACLE_BASE/diag/rdbms///trace/alert_.log
    • 监听日志:查看 $ORACLE_HOME/diag/tnslsnr//trace/listener.log
    • 归档与空间:确认归档开启与增长,必要时监控 FRA/归档目录 使用率。

三 图形化与平台化监控

  • Oracle Enterprise Manager(OEM)
    • 适合集中监控与性能诊断;在许可前提下,内置 AWR/ASH/ADDM 提供自动化性能诊断、时段对比与实时 ADDM,能显著缩短定位时间。
  • Zabbix
    • 通过 ODBCexternal check 采集数据库指标,结合模板实现 会话、SQL、表空间、等待事件 等监控与告警;适合已有 Zabbix 体系的团队。
  • Prometheus + oracle_exporter
    • Prometheus 为时序库,配合 oracle_exporter 拉取 Oracle 指标,Grafana 做可视化与阈值告警,适合云原生与容器化环境。
  • OCI Database Management
    • 面向 云与本地 数据库的统一控制台,提供 舰队监控Performance HubSQL Tuning Advisor 等;每小时为单个数据库采集 1300+ 指标,支持跨库聚合分析与作业编排。

四 关键指标与阈值建议

  • 资源类
    • CPU:持续高于 80% 需排查热点 SQL/并行/系统负载。
    • 内存:应用可用内存长期偏低或 swap 持续使用,检查 SGA/PGA 配置与工作负载。
    • I/O:iostat 的 await、svctm、util 偏高,关注存储延迟与队列;util 接近 100% 表示设备饱和。
  • 数据库类
    • 活动会话与等待:V$SESSION/V$ACTIVE_SESSION_HISTORY 中等待事件(如 db file sequential/scattered read、log file sync)占比高时,优先分析对应 SQL 与 I/O。
    • SQL 执行:长时运行 SQL、高逻辑读/物理读、频繁硬解析;结合 执行计划基线 优化。
    • 容量与增长:表空间/FRA/归档 使用率超过 80% 及时扩容或清理;监控 AWR 基线 的周同比变化。

五 告警与自动化巡检脚本

  • 告警思路
    • 指标阈值:CPU> 80%、I/O 高 util、表空间> 80%、长事务/锁等待、归档失败、监听异常等触发 严重/警告 分级告警。
    • 通道:企业微信/钉钉/邮件/短信;建议采用 告警去抖升级策略,避免告警风暴。
  • 巡检脚本示例(节选)
    • 表空间使用率
      set linesize 200
      col tablespace_name for a30
      select tablespace_name, round((used_space/ total_space)*100,2) pct_used
      from (
        select df.tablespace_name,
               sum(fs.bytes) used_space,
               sum(df.bytes) total_space
        from dba_data_files df,
             dba_free_space fs
        where df.file_id = fs.file_id(+)
        group by df.tablespace_name
      )
      where round((used_space/ total_space)*100,2) >
           80
      order by pct_used desc;
          
      
    • 长事务与活跃会话
      -- 超过 5 分钟未提交的会话
      select sid, serial#, username, sql_id, last_call_et/60 mins_inactive
      from v$session
      where status='ACTIVE' and last_call_et >
           300
      order by mins_inactive desc;
          
      
    • 部署建议:将上述 SQL 集成到 Shell/Python 脚本,由 cron 定时执行,结果通过 Zabbix senderWebhook 推送告警。

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


若转载请注明出处: 如何监控Ubuntu Oracle的性能指标
本文地址: https://pptw.com/jishu/764801.html
Ubuntu Oracle权限设置如何进行 Ubuntu如何安装PyTorch的依赖库

游客 回复需填写必要信息