Oracle 性能监控体系概述

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 分钟"。

相关推荐
小旭952744 分钟前
MySQL 主从复制、MyCat 读写分离与分库分表实战
java·数据库·sql·mysql·database
计算机安禾1 小时前
【算法分析与设计】第38篇:最近点对与分治在几何中的应用
java·服务器·网络·数据库·算法
柏舟飞流1 小时前
向量数据库:从底层原理到选型实战
数据库
__Witheart__1 小时前
Android 驱动编译为模块或者built-in内核
android·linux·数据库
ZC跨境爬虫1 小时前
SQL学习日志 Day_1:初识SQL,开启数据之旅
数据库·sql·学习
计算机安禾1 小时前
【算法分析与设计】第37篇:平面扫描与线段交问题
java·大数据·数据库·算法·机器学习
志栋智能1 小时前
超自动化巡检:让运维工作可衡量、可优化
运维·数据库·自动化
zxfBdd1 小时前
doris insert into和with as 合用
数据库·sql
诸葛务农1 小时前
共沸脱水技术及其在光刻胶用PGMEA纯化中的应用(上)
java·数据库·算法