温馨提示×

centos sqlplus性能监控工具推荐

小樊
43
2025-12-29 06:20:29
栏目: 云计算

CentOS 上基于 SQL*Plus 的 Oracle 性能监控工具推荐

一 工具选型总览

  • 企业级统一监控:优先选用 Oracle Enterprise Manager Cloud Control 13c/14c,提供监控、告警、事件压缩、维护窗口(Blackouts)、自动修复与模板化治理,适合多库集中管理。
  • 开源平台集成:
    • Zabbix(ODBC):在 Zabbix Server/Proxy 安装 Oracle Instant Client + ODBC,配置 DSN 后导入 Oracle 模板即可采集数据库、表空间、ASM 等指标。
    • Prometheus + oracle_exporter:部署 exporter 暴露指标,Prometheus 拉取、Grafana 可视化与阈值告警,适合云原生与容器化。
  • 轻量命令行与脚本:使用 oratop(官方轻量工具)实时查看进程、SQL、等待事件与 ADG 信息;配合 SQL*Plus 快速巡检与补充采集。
  • 操作系统层监控:在数据库主机配合 top/htop、iostat、vmstat、sar、nmon 观察 CPU、内存、I/O、网络,作为数据库观测的重要上下文。

二 仅用 SQL*Plus 的高频巡检 SQL

  • 实例与数据库状态
    • 实例状态:select instance_name, status from v$instance;
    • 数据库状态:select name, open_mode from v$database;
  • 会话与负载
    • 会话统计:select count(*), status from v$session group by status;
    • 活跃会话概览:select sid, serial#, username, program, action, state from v$session where status='ACTIVE';
  • SQL 负载与资源
    • Top SQL(按执行时间):select sql_text, executions, elapsed_time from v$sql order by elapsed_time desc where rownum <= 10;
    • 系统级资源:select * from v$sysstat where name in ('CPU used by this session','physical reads','physical writes');
  • 等待事件
    • 实时等待:select event, count(*) from v$session_wait group by event order by count(*) desc;
    • 系统级等待:select event, total_waits, total_timeouts, time_waited from v$system_event order by time_waited desc;
  • 表空间使用率
    • 使用率与剩余空间:col TABLESPACE_NAME for a20
      select tbs_used_info.tablespace_name,
             tbs_used_info.alloc_mb,
             tbs_used_info.used_mb,
             tbs_used_info.max_mb,
             tbs_used_info.free_of_max_mb,
             tbs_used_info.used_of_max || '%' used_of_max_pct
      from (
        select a.tablespace_name,
               round(a.bytes_alloc/1024/1024) alloc_mb,
               round((a.bytes_alloc - nvl(b.bytes_free,0))/1024/1024) used_mb,
               round((a.bytes_alloc - nvl(b.bytes_free,0))*100/a.maxbytes) used_of_max,
               round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free,0))/1048576) free_of_max_mb,
               round(a.maxbytes/1048576) max_mb
        from (select f.tablespace_name,
                     sum(f.bytes) bytes_alloc,
                     sum(decode(f.autoextensible,'YES',f.maxbytes,'NO',f.bytes)) maxbytes
              from dba_data_files f group by f.tablespace_name) a,
             (select f.tablespace_name, sum(f.bytes) bytes_free
              from dba_free_space f group by f.tablespace_name) b
        where a.tablespace_name = b.tablespace_name(+)
      ) tbs_used_info
      order by tbs_used_info.used_of_max desc;
      
  • 备份与归档
    • RMAN 备份检查:rman target / list backup;
  • 监听与连通
    • 监听状态:lsnrctl status;端口连通:netstat -tlnp | grep 1521

三 轻量命令行工具与脚本化采集

  • oratop:Oracle 官方轻量工具,适合在终端实时观察 进程、SQL、等待事件、ADG 等,弥补纯 SQL*Plus 实时性的不足。
  • 定时巡检脚本:将常用 SQL 保存为 monitor.sql,使用 sqlplus -s 静默执行并接入日志或告警系统;例如每 5 分钟采集一次:
    */5 * * * * sqlplus -s username/password@service @/path/monitor.sql >> /var/log/oracle_monitor.log 2>&1
    
  • 操作系统上下文:配合 top/htop、iostat -xz 1、vmstat 1 5、sar -n DEV 1 5、nmon 观察主机资源,有助于判断瓶颈是在数据库还是 OS/I/O。

四 企业级与开源平台集成

  • Zabbix(ODBC):在 Zabbix Server/Proxy 安装 Oracle Instant Client(Basic/SQL*Plus/ODBC),解决依赖(如 libaio、libnsl),配置 ODBC DSN,导入开箱即用的 Oracle 模板后即可采集数据库、表空间、ASM 等指标;用 sqlplus 验证连通性后由 Zabbix 定时抓取并告警。
  • Prometheus + oracle_exporter:部署 oracle_exporter 暴露指标,Prometheus 拉取并存储,Grafana 做可视化与阈值告警;适合云原生与容器化环境,可与主机与日志系统统一观测。

五 关键告警阈值与巡检清单

  • 表空间使用率:>80% 预警、>90% 严重(扩容/清理回收站/调整自动扩展)。
  • 会话数:接近 PROCESSES/SESSIONS 上限(排查异常连接/应用泄漏)。
  • 长时间运行 SQL:超过阈值(如 600s)触发终止或优化。
  • 等待事件:db file sequential/scattered read、log file sync 持续偏高(定位 I/O 或提交瓶颈)。
  • 备份:最近一次 RMAN 备份失败或 归档断档(立即核查通道/磁盘/保留策略)。
  • 监听器:1521 端口不可达或异常(影响业务连接)。

0