首页主机资讯Debian系统Oracle数据库监控技巧

Debian系统Oracle数据库监控技巧

时间2025-12-15 18:07:03发布访客分类主机资讯浏览592
导读:Debian系统上的Oracle数据库监控实践 一 监控体系与工具选型 操作系统层:用 top/htop、vmstat、iostat、sar、dstat、nmon 观察 CPU、内存、I/O、网络 等基础资源,配合 ps -ef | gr...

Debian系统上的Oracle数据库监控实践

一 监控体系与工具选型

  • 操作系统层:用 top/htop、vmstat、iostat、sar、dstat、nmon 观察 CPU、内存、I/O、网络 等基础资源,配合 ps -ef | grep ora_ 检查 PMON/SMON/DBWn/LGWR 等关键进程是否存活。
  • 数据库层:使用 oratop 实时查看会话、SQL、等待事件与 RAC/ADG 概况;通过 AWR/ASH/ADDM 做周期性与短时性能诊断;必要时用 SQL Developer 做可视化辅助。
  • 日志与诊断:利用 ADRCI 统一访问告警/跟踪日志;在 Data Guard 场景监控 v$archived_log.applied 确认备库应用延迟。
  • 平台化监控:中小规模可用 Zabbix(ODBC/External Check)或 Prometheus + oracle_exporter 做指标采集与告警;企业级可用 Oracle Enterprise Manager(OEM) 集中监控与诊断。

二 关键SQL与阈值示例

  • 活跃会话与长时SQL
    • 活跃会话与执行中SQL(含已运行时间、事件/CPU、SQL文本前40字符):
      • select ses.inst_id||‘:’||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 when time_since_last_wait_micro=0 then (case wait_class when ‘Idle’ then ‘IDLE: ‘||event else event end) else ‘ON CPU’ end,1,33) event, (case when time_since_last_wait_micro=0 then wait_time_micro else time_since_last_wait_micro end)/1e6 wait_sec from gv$session ses, gv$sqlstats sql where ses.inst_id||’:’||ses.sid < > sys_context(‘USERENV’,‘INSTANCE’)||‘:’||sys_context(‘USERENV’,‘SID’) and username is not null and status=‘ACTIVE’ and ses.sql_id=sql.sql_id(+);
    • 按耗时定位TOP SQL(秒级):
      • select sql_id, sql_text, elapsed_time/1e6 “耗时(秒)”, executions from v$sql order by elapsed_time desc fetch first 10 rows only;
  • 表空间使用率(超过 80% 建议扩容或清理)
    • select a.tablespace_name, round(a.bytes/1024/1024,2) “总大小(MB)”, round((a.bytes-b.bytes)/1024/1024,2) “已用(MB)”, round((a.bytes-b.bytes)/a.bytes*100,2) “使用率%” from (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) b where a.tablespace_name = b.tablespace_name;
  • 等待事件与回滚争用
    • 等待事件汇总(识别热点等待):
      • select event, sum(decode(wait_time,0,0,1)) “累计等待”, sum(decode(wait_time,0,1,0)) “当前等待”, count(*) “总次数” from v$session_wait group by event order by 4;
    • 回滚段争用(waits/gets 越小越好):
      • select name, waits, gets, waits/gets “Ratio” from v$rollstat a, v$rollname b where a.usn = b.usn;
  • 内存命中率(逻辑读/物理读视角)
    • select a.value+b.value “logical_reads”, c.value “phys_reads”, round(100*((a.value+b.value)-c.value)/(a.value+b.value)) “BUFFER HIT RATIO” from v$sysstat a, v$sysstat b, v$sysstat c where a.statistic#=38 and b.statistic#=39 and c.statistic#=40;
  • Data Guard 备库应用延迟(阈值可按业务调整)
    • 思路:取已应用的最大序列号对应 next_time,与当前时间比较,超过阈值(如 1–3 小时)即告警。

三 告警与自动化

  • Shell 巡检脚本范式(示例要点)
    • 环境:设置 ORACLE_SID、ORACLE_HOME、PATH;以 sqlplus -s / as sysdba 执行查询;将结果写入日志并根据阈值 if 判断 触发 mailx 告警。
    • 可扩展项:检查 PMON 进程、监听状态(lsnrctl status)、表空间使用率、活跃会话数、备库 applied 延迟等,统一纳入 crontab 定时执行。
  • 平台化告警
    • Zabbix:通过 ODBC 采集表空间/会话/SQL 指标,配置触发器(如 > 80% 使用率、> N 个活跃会话、备库延迟超阈值)。
    • Prometheus + oracle_exporter:暴露会话、等待、I/O、命中率等指标,用 Alertmanager 定义告警规则并推送至企业微信/钉钉/邮件。

四 日志与诊断

  • 日志位置与追踪
    • 告警与跟踪文件:select value from v$diag_info where name=‘default trace file’;
    • 旧参数兼容查询:select value from v$parameter where name in (‘user_dump_dest’,‘background_dump_dest’);
    • 使用 ADRCI 统一查看/打包告警与跟踪日志,便于问题回溯。
  • 性能基线与分析
    • 定期生成 AWR/ASH/ADDM 报告定位瓶颈与异常;在 Data Guard 场景结合 v$archived_log 校验备库 applied 进度与延迟。

五 实用检查清单

维度 关键指标 建议阈值或动作
可用性 PMON 进程、监听状态 进程缺失或监听异常立即处理
表空间 使用率 > 80% 预警,> 90% 紧急扩容/清理
会话 活跃会话数、长时SQL 超过基线或阈值触发排查与限流
等待事件 前N大等待 结合 AWR/ASH 优化热点等待
内存 Buffer Hit Ratio 持续偏低需调优 SGA/PGA 与 SQL
备库 已应用日志时间差 超过 1–3 小时 告警并核查 MRP/网络/存储

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


若转载请注明出处: Debian系统Oracle数据库监控技巧
本文地址: https://pptw.com/jishu/771880.html
Debian GCC编译器如何进行代码优化 Laravel依赖如何在Debian上安装

游客 回复需填写必要信息