温馨提示×

如何监控 Linux Oracle 运行状态

小樊
34
2025-12-06 15:38:50
栏目: 云计算

监控 Linux 上的 Oracle 运行状态

一 快速健康检查清单

  • 监听与连接
    • 检查监听状态:lsnrctl status
    • 检查本地监听端口(默认 1521):netstat -tlnp | grep 1521
  • 数据库实例状态
    • sysdba 身份登录:sqlplus / as sysdba
    • 查看实例:select instance_name, status, database_status from v$instance;
    • 查看数据库:select name, open_mode from v$database;
  • 关键后台进程
    • 进程存活:ps -ef | grep ora_(常见如 ora_pmon_ora_smon_ora_dbw0_ora_lgwr_ora_ckpt_
  • 表空间与归档
    • 表空间使用:select tablespace_name, round(sum(bytes)/1024/1024,2) mb, round(sum(maxbytes)/1024/1024,2) max_mb from dba_data_files group by tablespace_name;
    • 归档模式:archive log list;
  • 告警日志
    • 位置:select value from v$diag_info where name=‘Diag Trace’;,实时查看:tail -f <trace_dir>/alert_.log

二 系统资源监控

  • CPU 与多核
    • 2 秒采样、共 5 次:mpstat -P ALL 2 5
    • 同时打印中断统计:mpstat -A
  • 整体资源与负载
    • 实时:top(关注 %CPU%MEM、负载均值)
  • 虚拟内存、I/O、系统
    • 连续报告:vmstat 1(关注 rbsi/sobi/bowa
  • I/O 设备
    • 详细设备统计:iostat -xz 1 1
  • 历史与综合
    • 历史采集与回放:sar(配合 cron 长期留存)
  • 可视化与多指标
    • 综合资源监控:nmondstat
      以上命令适用于 Oracle Linux 与常见 Linux 发行版,用于定位 CPU、内存、I/O 与负载瓶颈。

三 数据库性能与活动监控

  • OEM 与 AWR
    • 集中监控与告警:Oracle Enterprise Manager(OEM)
    • 性能基线与分析:AWR(识别瓶颈、SQL 调优)
  • 实时与等待事件
    • 官方轻量工具:oratop(进程、SQL、等待事件、ADG 支持)
  • 会话与正在运行的 SQL
    • 快速定位长事务/高耗 SQL(示例 SQL 见下节)
  • 计划与变更审计
    • 执行计划稳定:SQL Plan Baselines
    • 变更审计:LogMiner
      上述工具覆盖从实时监控到历史分析、从实例到 SQL 的全链路观测。

四 常用命令与 SQL 示例

  • 监听与端口
    • 查看监听:lsnrctl status
    • 端口连通:netstat -tlnp | grep 1521
  • 实例与数据库状态
    • 登录:sqlplus / as sysdba
    • 实例:select instance_name, status, database_status from v$instance;
    • 数据库:select name, open_mode from v$database;
  • 会话与正在运行的 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;
      
  • 表空间与归档
    • 表空间:select tablespace_name, round(sum(bytes)/1024/1024,2) mb, round(sum(maxbytes)/1024/1024,2) max_mb from dba_data_files group by tablespace_name;
    • 归档:archive log list;
  • 告警日志
    • 路径:select value from v$diag_info where name=‘Diag Trace’;
    • 跟踪:tail -f <trace_dir>/alert_.log
      以上命令覆盖实例、会话、SQL、空间与日志的高频检查场景。

五 告警与可视化搭建

  • 企业级监控平台
    • Zabbix:支持 ODBC 采集 Oracle 指标、表空间、ASM 等,配置告警与可视化看板
    • Prometheus + oracle_exporter:拉取 Oracle 指标,结合 Grafana 展示与告警
    • Datadog / Nagios / SolarWinds:多源集成、丰富可视化与告警能力
  • 落地建议
    • 指标分层:系统层(CPU/内存/I/O/网络)+ 实例层(会话、SQL、等待、命中率)+ 业务层(关键作业、延迟)
    • 采集频率:系统/实例 15–60 秒,日志与长周期指标 5–15 分钟
    • 告警策略:设多级阈值与抑制,避免告警风暴;对“实例宕机、表空间 > 85%、长事务/阻塞、归档失败”等关键场景配置 PagerDuty/企业微信/钉钉通知
    • 容量与趋势:保留 7–30 天 细粒度数据,90 天+ 聚合数据用于容量规划与复盘
      上述平台与做法可构建从主机到数据库、从实时监控到长期趋势的一体化监控体系。

0