怎样根据Oracle AWR中的操作系统统计信息判断CPU是否超载?

星瑶君_3073

星瑶君_3073

2026-07-06

959人浏览

原创

真实CPU利用率需计算BUSY_TIME/(BUSY_TIME+IDLE_TIME)占比,而非看绝对值;IOWAIT_TIME飙升、LOAD持续超NUM_CPUS、PI/PO频繁交换等才是真实瓶颈信号。

看 BUSY_TIME 和 IDLE_TIME 的占比,不是绝对值

awr 里 busy_time 和 idle_time 数值很大(比如几千万),不代表 cpu 忙——得算比例:busy_time / (busy_time + idle_time) 才是真实 cpu 利用率。一个 112 核的机器,busy_time=12933418、idle_time=269466546,实际利用率仅约 4.6%,远没到瓶颈。

容易踩的坑:

  • 把 DB CPU 高等同于主机 CPU 超载——DB CPU 只统计 Oracle 进程,系统里还有备份、监控 agent 等非 Oracle 进程在抢资源
  • 忽略 IOWAIT_TIME:它飙升(比如从几十跳到上万)说明 CPU 大量时间在等磁盘,此时即使 BUSY_TIME 不高,也是 I/O 卡住导致的“假性空闲”
  • 不比对 LOAD 值:如果 LOAD 持续 > NUM_CPUS(如 112),哪怕 CPU 利用率才 30%,也可能因运行队列过长引发响应延迟

盯住 LOAD 和 IOWAIT_TIME 的组合信号

LOAD 和 IOWAIT_TIME 一起看,比单看 CPU% 更早暴露问题。例如 LOAD 从 4 升到 9,同时 IOWAIT_TIME 占 BUSY_TIME 比例超 5%,基本可断定是磁盘拖慢;若 LOAD 升高但 USER_TIME 占比很低(比如 1200 万 / 1293 万 ≈ 93%),说明负载集中在内核态或不可中断睡眠(D 状态),要翻 Top 5 Timed Events 查 db file sequential read 或 log file sync。

注意:LOAD 是三个值(1/5/15 分钟),如果 1 分钟值远高于 15 分钟,说明刚发生突发负载;反之则可能已持续过载。

警惕 AWR 里 LOAD 显示为 0 的情况

这通常不是真没负载,而是 Oracle 解析 /proc/loadavg 失败。Linux 2.6+ 内核该文件用空格分隔(如 0.12 0.25 0.33 1/256 12345),但老版本 Oracle(如 10g R2、11.1.0.x)仍按制表符解析,导致截断失败填入 0。

协同养育操作系统
协同养育操作系统

协同养育操作系统(Co-Parenting OS)— 离异家庭专业协同养育支持系统。12模块覆盖接送管理、成长记忆库、孩子观察站、亲子关系粘合剂、共同挑战中心、情绪冲突观察、父母成长、成长档案馆、成长阶段引擎、风险预警、驾驶舱、被恶意攻击急救包。当用户涉及离异家庭育儿、协同养育、抚养探视、接送安排、孩子成长记录、亲子关系、离异冲突、被恶意攻击、前任矛盾等话题时触发。

下载

实操建议:

  • 手动执行 cat /proc/loadavg 确认输出格式
  • 升级补丁:11.2.0.3+ 已修复;10g 需打 10.2.0.5 Patch Set 或单独补丁(如 9789725)
  • 临时绕过:查 GV$OSSTAT 视图的 LOAD 字段(不是 LOAD_AVERAGE)

别只信 AWR 的小时级汇总

AWR 默认每小时采样一次,会错过短时尖峰。比如某 SQL 每分钟跑一次、每次耗 CPU 5 秒,AWR 就可能只记到 5 秒,而实际每秒都在吃资源。

交叉验证方法:

  • 用 mpstat -P ALL 1 5 抓 5 秒粒度的实时 CPU 分布
  • 用 adb -w 1 5(Solaris)或 pidstat -u 1 5(Linux)看 Oracle 进程瞬时占用
  • 查 V$SYSMETRIC:执行 SELECT value/100 FROM v$sysmetric WHERE metric_name = 'CPU Usage Per Sec',这个才是每秒 Oracle 实际占的 CPU 毫秒数

真正难判断的,是那种 CPU 利用率不高但 LOAD 居高不下、且 IOWAIT_TIME 波动剧烈的情况——它往往指向底层存储响应不稳或驱动异常,AWR 看不出,得结合 iostat -x 1 和 dmesg 日志。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle 操作系统

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
视频服务器配置参数有哪些
视频服务器配置参数有哪些

视频服务器配置参数有处理器、内存、存储、视频编解码器、网络接口、视频输入输出接口、操作系统、安全性、环境适应性和成本。在搭建视频服务器时,需要根据实际需求和预算,合理选择这些参数,以实现高性能、高稳定性和低成本的目标。

2023.10.17

4140

11

linux的操作系统介绍
linux的操作系统介绍

Linux是一个灵活、稳定、安全的操作系统,适用于各种不同的应用场景,从个人电脑到服务器和嵌入式系统。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

2024.03.20

3306

12

Linux操作系统的主要用途
Linux操作系统的主要用途

Linux操作系统用途广泛,包括:服务器运营,软件开发,科学研究和教育,嵌入式系统,以及个人电脑和笔记本电脑。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

2024.03.21

5619

8

linux操作系统的作用
linux操作系统的作用

linux操作系统在以下领域发挥着关键作用:服务器和云计算;嵌入式系统;个人电脑和笔记本电脑;超级计算;其他领域等等。想了解更多linux操作系统的相关内容,可以阅读本专题下面的文章。

2024.04.12

2635

5

有哪些常见的网络操作系统
有哪些常见的网络操作系统

常见的网络操作系统有windows server、linux、unix、macos server、freebsd、cisco ios、juniper junos和hp-ux等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.12

3204

6

32位操作系统怎么改成62位的
32位操作系统怎么改成62位的

要将 32 位操作系统升级到 64 位,需要遵循以下步骤:1. 检查硬件和软件兼容性;2. 备份数据;3. 获取 64 位操作系统;4. 创建可启动安装媒体;5. 从安装媒体启动计算机;6. 选择“升级”选项;7. 完成安装。

2025.04.02

3323

9

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

2023.08.16

901

5

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

2023.09.15

2533

5

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

2023.09.18

2570

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程