Oracle数据库如何使用AWR定位操作系统负载异常

风宇酱_5122

风宇酱_5122

2026-08-15

911人浏览

原创

必须先确认快照覆盖异常时段,因os指标是分钟级聚合的快照数据,非实时;若cpu或内存突增发生在快照间隔中(如14:00–15:00),仅取整点快照会漏掉峰值,需查最近快照时间点并优先选用异常前后15分钟内的连续快照对,必要时手动补采。

oracle数据库如何使用awr定位操作系统负载异常

看Operating System Statistics前先确认快照是否覆盖异常时段

AWR的OS指标只存在于快照中,不是实时数据。如果CPU或内存突增发生在两个快照之间(比如14:00–15:00),而你只取了14:00和15:00的snap_id,就可能漏掉峰值——FREE_MEMORY_BYTES在14:32跌了20GB,但在快照里只体现为平滑下降。

实操建议:

  • 用SELECT snap_id, begin_interval_time FROM dba_hist_snapshot WHERE begin_interval_time BETWEEN SYSDATE-1 AND SYSDATE ORDER BY snap_id查最近快照时间点,优先选异常发生前后15分钟内的连续快照对
  • 若默认1小时间隔不够细,手动执行EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT()补采
  • RAC环境必须用@?/rdbms/admin/awrrpti.sql按实例生成报告,否则NUM_CPUS_ONLINE和LOAD会被平均失真

FREE_MEMORY_BYTES和INACTIVE_MEMORY_BYTES走势比绝对值重要

单看FREE_MEMORY_BYTES=12.4G毫无意义。真正危险的是它持续单向下跌,且INACTIVE_MEMORY_BYTES没同步上升——说明内存没被释放,而是被进程长期占用(比如未关闭的游标、泄漏的PGA)。

常见错误现象:

  • SWAP_FREE_BYTES剩68GB,但PI和PO每秒几百KB → 内存已不足,Swap正在高频换页
  • INACTIVE_MEMORY_BYTES从30G降到5G,FREE_MEMORY_BYTES却从15G升到18G → 可能是Oracle自动释放了SGA_TARGET,需查v$memory_target_advice
  • Linux上/proc/meminfo里的Active(anon)比AWR的INACTIVE_MEMORY_BYTES更敏感,怀疑泄漏时必须两边比对

IOWAIT_TIME占比超5%或LOAD > NUM_CPUS时别只查磁盘

IOWAIT_TIME本身数值低不等于安全。如果它占BUSY_TIME比例超过5%,说明CPU大量时间在等IO——这时db file sequential read等待高,大概率是存储慢,而不是SQL问题。

Crypto Sniper Oracle
Crypto Sniper Oracle

机构级量化市场预言机,提供订单簿失衡(OBI)、VWAP分析、自动化报告及Telegram预警。

下载

但更隐蔽的情况是:LOAD从4升到9,而USER_TIME占比仅12%,SYS_TIME和IOWAIT_TIME飙升 → 瓶颈在内核态或驱动层,比如网卡中断风暴、文件系统锁争用。

实操建议:

  • 对比LOAD和NUM_CPUS:若LOAD > NUM_CPUS(如NUM_CPUS=112,LOAD=120),即使CPU利用率才30%,也说明运行队列已满
  • 查v$osstat里NUM_CPU_CORES和NUM_CPUS是否相等:不等说明开了超线程,某些SQL绑定核心后会导致调度不均
  • TCP_RECEIVE_SIZE_MAX和GLOBAL_RECEIVE_SIZE_MAX不匹配(如前者1MB,后者4MB)会引发RAC节点间网络延迟,表现为gc cr block lost增多

OS指标“全正常”时更要翻ASH验证瞬时毛刺

AWR的OS统计是分钟级聚合,会抹平秒级尖峰。曾遇到FREE_MEMORY_BYTES在快照里稳定在15G,但ASH显示每分钟有3个会话因ORA-04030(内存不足)被杀——根源是某PL/SQL过程每分钟分配2GB临时内存又不释放。

所以当OS指标看似健康但业务报慢时:

  • 立刻查SELECT sample_time, session_state, event FROM v$active_session_history WHERE sample_time > SYSDATE-1/24 AND event LIKE '%memory%' ORDER BY sample_time
  • 重点关注session_state = 'ON CPU'但event为空的记录,这代表纯计算消耗,不是等待
  • 结合DBA_HIST_SQLSTAT查sql_id的pga_allocated峰值,比AWR报告里的平均值更有参考价值

OS负载异常最麻烦的地方不在数据难找,而在指标之间存在隐性耦合:比如SWAP_USED_BYTES上涨会拖慢log file parallel write,进而抬高log file sync,最后让DBA误判为归档日志写慢——实际得先停掉非Oracle进程,再调Oracle内存参数。

相关文章

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

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

下载

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

相关专题

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

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

2023.10.17

3840

11

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

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

2024.03.20

3086

12

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

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

2024.03.21

5139

8

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

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

2024.04.12

2415

5

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

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

2024.09.12

2984

6

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

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

2025.04.02

3223

9

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

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

2023.08.16

841

5

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

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

2023.09.15

2333

5

oracle怎么分页
oracle怎么分页

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

2023.09.18

2350

5

热门下载

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

精品课程

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