- 首页 >
- 问答 >
-
云计算 >
- 怎样在Linux中监控Oracle性能
怎样在Linux中监控Oracle性能
小樊
44
2025-11-28 19:42:36
Linux下Oracle性能监控实操指南
一 监控体系与工具选型
- 数据库内置:优先使用 OEM(Oracle Enterprise Manager) 做集中监控与告警;配合 AWR/ASH/ADDM 做历史与实时瓶颈分析。
- OS层:用 top/htop、vmstat、mpstat、iostat、sar、dstat、nmon 观察 CPU、内存、I/O、负载。
- 开源监控:用 Zabbix、Nagios 做主机/进程/端口/自定义 SQL 的监控与告警;用 Prometheus + oracle_exporter + Grafana 做时序可视化与灵活告警。
- 第三方与轻量:开发/DBA 常用 SQL Developer、Toad for Oracle、Spotlight on Oracle、MyOra 做辅助诊断与图形化展示。
- 命令行利器:Oracle 官方 oratop 实时查看进程、SQL、等待事件,支持 ADG 场景。
二 OS层监控命令与关键指标
- CPU:用 mpstat -P ALL 2 5 查看每个 CPU 利用率,关注 %usr、%sys、%idle、%iowait;配合 top/htop 定位高占用进程。
- 内存与换页:用 vmstat 1 观察 free、si/so(换入/换出),持续非零 si/so 常提示内存压力。
- I/O:用 iostat -xz 1 查看 await、r/s、w/s、util,识别磁盘瓶颈。
- 综合与历史:用 sar、dstat、nmon 获取 CPU、内存、I/O、网络的趋势数据,便于容量与根因回溯。
- 连接与监听:用 ps -ef | grep ora_ 检查实例进程;用 netstat -tlnp | grep <端口> 确认监听端口连通性。
三 数据库层监控与常用SQL
- 实例与空间健康:
- 实例状态:
- select instance_name,host_name,startup_time,status,database_status from v$instance;
- 在线日志:
- select group#,status,type,member from v$logfile;
- 表空间:
- select tablespace_name,status from dba_tablespaces;
- 数据文件:
- select name,status from v$datafile;
- 负载与会话:
- 当前会话数:
- select count(*) from v$session;
- 会话明细:
- select sid,serial#,username,program,machine,status from v$session;
- 性能基线(示例阈值,需结合业务评估):
- 缓冲区命中率(建议不低于90%):
- SELECT a.VALUE + b.VALUE logical_reads, c.VALUE phys_reads, round(100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio FROM v$sysstat a, v$sysstat b, v$sysstat c WHERE a.NAME = ‘db block gets’ AND b.NAME = ‘consistent gets’ AND c.NAME = ‘physical reads’;
- 共享池命中率(建议不低于95%):
- select sum(pinhits)/sum(pins)*100 from v$librarycache;
- 排序区(disk/(mem+row) 过高需增大 PGA 或调整 workarea):
- select name,value from v$sysstat where name like ‘%sort%’;
- 日志缓冲区(若 redo buffer allocation retries/redo entries > 1%,考虑增大 log_buffer):
- select name,value from v$sysstat where name in (‘redo entries’,‘redo buffer allocation retries’);
- 诊断增强:结合 AWR/ASH/ADDM 定期分析 Top SQL、等待事件与系统瓶颈,并据此做针对性优化。
四 告警与可视化搭建
- Zabbix:通过 ODBC 无代理采集数据库指标,监控 表空间、ASM、会话、SQL 等,配置阈值与告警通道。
- Prometheus:部署 oracle_exporter 暴露 Oracle 指标,配合 Grafana 做面板展示与多维告警。
- OEM:集中式监控、性能分析、容量规划与自动告警,适合中大型环境统一运维。
五 快速排障流程
- 资源先行:用 top/htop、mpstat、vmstat、iostat 判断是否存在 CPU 饱和、内存紧张、I/O 等待 等系统瓶颈。
- 连接与监听:用 ps -ef | grep ora_ 与 netstat -tlnp | grep <端口> 确认实例与监听正常。
- 数据库健康:查询 v$instance、v$logfile、dba_tablespaces、v$datafile 排除实例异常、日志/数据文件问题。
- 负载与 SQL:统计 v$session 会话数,结合 AWR/ASH/ADDM 定位 Top SQL 与等待事件,优先处理高影响 SQL。