Oracle 性能监控体系是一套覆盖从底层硬件到上层应用、从实时故障预警到长期容量规划的全链路数据采集、分析、诊断和优化闭环系统。它不是单一工具的堆砌,而是通过整合 Oracle 内置工具、操作系统工具和第三方平台,实现对数据库运行状态的7×24 小时全方位感知,提前发现性能瓶颈,快速定位故障根因,保障数据库稳定高效运行。
1、监控体系的三大核心目标
1.1、故障预警
- 提前发现潜在性能问题,在影响业务前解决
- 配置多级告警阈值,实现 "问题未发,预警先行"
- 目标:将故障发生率降低 90% 以上
1.2、快速诊断
- 当性能问题发生时,快速定位瓶颈所在(CPU/IO/ 内存 / SQL)
- 提供完整的诊断数据,避免 "盲人摸象" 式排查
- 目标:平均故障解决时间 (MTTR) 从小时级缩短到分钟级
1.3、容量规划
- 基于历史性能数据,预测未来资源需求
- 提前进行硬件扩容和架构调整
- 目标:避免因资源不足导致的业务中断
2、Oracle 性能监控体系四层架构
2.1、第一层:基础设施层监控
监控数据库运行的底层硬件和操作系统环境,是性能问题排查的起点。
| 工具 | 监控内容 | 关键指标 |
|---|---|---|
iostat |
磁盘 IO 性能 | %util(IO 使用率)、await(平均等待时间)、svctm(服务时间) |
vmstat |
系统内存和 CPU | us(用户 CPU)、sy(系统 CPU)、id(空闲 CPU)、si/so(交换) |
netstat |
网络性能 | 网络连接数、网络吞吐量、网络延迟 |
sar |
系统历史性能 | 所有系统资源的历史统计数据 |
OSWatcher |
Oracle 官方系统监控工具 | 自动收集系统资源数据,生成分析报告 |
oratop |
Oracle 官方实时监控工具 | 数据库进程、会话、SQL、等待事件的实时展示 |
核心原则:任何数据库性能问题,都必须先排除基础设施层的问题。
2.2、第二层:数据库内核层监控
这是 Oracle 性能监控的灵魂,所有数据库内部的运行状态都在这里体现。
Oracle 提供了一套完整的性能监控与诊断体系,核心由三大组件构成:
- AWR(Automatic Workload Repository):自动工作负载信息库,定期采集数据库性能快照,用于历史趋势分析和容量规划。
- ASH(Active Session History):活动会话历史,以秒级粒度记录活跃会话的等待事件和 SQL 信息,用于实时和近实时的性能诊断。
- ADDM(Automatic Database Diagnostic Monitor):自动数据库诊断监视器,基于 AWR 数据自动分析性能问题并给出优化建议。
三者关系:
- AWR 是 "全景照片",记录数据库每小时的整体状态
- ASH 是 "高速摄像机",每秒拍摄一次数据库的活动会话
- ADDM 是 "智能医生",自动分析 AWR 数据,诊断问题并开药方
动态性能视图:
所有 Oracle 性能数据的源头,AWR、ADDM、ASH 的数据都来自于 V$ 视图。
| 常用视图 | 作用 |
|---|---|
v$session |
当前所有会话信息 |
v$session_wait |
当前会话等待事件 |
v$sql |
SQL 语句执行统计信息 |
v$sysstat |
系统级统计信息 |
v$system_event |
系统级等待事件统计 |
v$filestat |
数据文件 IO 统计 |
2.3、第三层:应用与 SQL 层监控
80% 的数据库性能问题都是由不良 SQL引起的,这一层是性能优化的重点。
| 工具 | 作用 |
|---|---|
SQL Trace |
跟踪单个 SQL 语句的执行过程 |
10046事件 |
高级 SQL 跟踪,记录绑定变量和等待事件 |
SQL Tuning Advisor |
自动分析 SQL 性能,给出优化建议 |
Real-Time SQL Monitor |
实时监控长运行 SQL 的执行过程 |
AWR SQL Report |
分析历史 SQL 性能,找出 Top SQL |
2.4、第四层:统一展示与告警层
将分散在各个工具中的性能数据集中展示,实现统一监控和自动告警。
| 平台 | 特点 | 适用场景 |
|---|---|---|
| Oracle Enterprise Manager (OEM) | Oracle 官方企业级监控平台,深度集成 Oracle 数据库 | 大型企业,多数据库环境 |
| Grafana + Prometheus + oracle_exporter | 开源监控方案,灵活定制,可视化效果好 | 互联网企业,云环境 |
| Zabbix | 成熟的开源监控平台,支持丰富的告警方式 | 中小企业,混合环境 |
| 自研监控平台 | 完全定制化,与企业内部系统集成 | 超大型企业,特殊需求 |
3、监控体系工作流程
数据采集 → 存储分析 → 告警通知 → 问题排查 → 优化改进 → 效果验证
- 数据采集:通过各种工具和视图,实时采集基础设施、数据库和应用的性能数据
- 存储分析:将采集到的数据存储在数据库或时序数据库中,进行聚合和分析
- 告警通知:当指标超过阈值时,通过邮件、短信、钉钉等方式通知 DBA
- 问题排查:DBA 根据告警信息,使用 AWR、ASH、ADDM 等工具定位问题根因
- 优化改进:实施优化措施,如 SQL 优化、参数调整、硬件扩容等
- 效果验证:对比优化前后的性能指标,验证优化效果
- 持续改进:根据历史数据,调整监控阈值和优化策略
实例:从零搭建 Oracle 性能监控体系
**S --- Situation(场景):**某制造企业 Oracle 数据库上线后未配置任何性能监控。运行 3 个月后出现间歇性性能问题,但 DBA 无法定位原因------没有历史数据,没有基线,没有告警。
**T --- Task(任务):**建立完整的性能监控体系,实现问题可发现、可定位、可预防。
A --- Action(行动):
1、 启用 AWR 快照(默认已启用,确认间隔 1 小时):
sql
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval=>60);
END;
2、配置 ASH 采样(默认已启用,确认大小合理):
ALTER SYSTEM SET _ash_size=16777216; -- 16MB
3、建立性能基线(AWR Baseline);
4、配置 ADDM 自动分析;
5、建立关键指标告警(等待事件、SQL 响应时间、锁等待等);
6、定期生成 AWR 报告进行趋势分析。
**R --- Result(结果):**上线后第 4 个月,通过 AWR 报告发现了一条全表扫描 SQL 导致的 I/O 瓶颈,优化后数据库响应时间下降 40%。性能监控体系的建立使问题发现时间从"用户投诉后"缩短到"自动告警后 5 分钟"。