怎么通过Oracle AWR的RAC部分评估私网带宽是否足够

秋静吖_7220

秋静吖_7220

2026-09-06

463人浏览

原创

estd interconnect traffic突增至mb/s级别(如24 mb/s)表明gc流量严重超载,主因是重传、分片或缓冲区溢出引发的“流量雪崩”,需结合gc block lost、avg global cache block receive time、blocks served/received倾斜比及ipreasmfails等指标综合诊断网络瓶颈。

怎么通过oracle awr的rac部分评估私网带宽是否足够

看 Estd Interconnect traffic 是否突增到 MB/s 级别

AWR 里 Estd Interconnect traffic (KB) 是最直接的私网带宽使用指标。正常 RAC 私网流量是 KB/s 级别(几百 KB/s 属常见),一旦该值持续超过 1–2 MB/s(比如报告里显示 24 MB/s),基本说明 GC 流量已严重超载。这不是业务增长带来的合理上升,而是重传、分片、缓冲区溢出引发的“流量雪崩”——UDP 包被丢,LMS 不断重发,把本该一次传完的块拆成几十个包来回跑。

注意:这个值在 AWR 的 RAC Statistics 部分,不是 Load Profile 或 Instance Efficiency。别在 Top SQL 里找原因,它和 SQL 写法无关。

  • 若该值比基线高 5–10 倍,且同期 gc cr block lostgc current block lost 显著上升 → 基本锁定私网带宽或 MTU 问题
  • 若该值高但 gc cr block 2-way 占比也高 → 更可能是某类 SQL(如大表并行扫描)触发了大量合法 GC 流量,需结合 db_file_multiblock_read_count 和执行计划判断
  • 该值本身不反映延迟,只反映“量”。高流量 + 低延迟(Avg global cache block receive time 20ms)必须立刻干预

交叉验证 Avg global cache block receive time 是否超标

Avg global cache block receive time (ms) 在同一份 AWR 的 Global Cache Stats 表格里,它才是带宽是否“够用”的真实标尺。这个值不是理论吞吐,而是实测端到端耗时:从请求块发出,到本地收到响应块的平均毫秒数。

Oracle 官方建议阈值是 ≤ 5ms,生产环境能压到 2ms 内最佳。一旦 >10ms(比如报告里出现 1473ms),哪怕 Estd Interconnect traffic 还不到 1MB/s,也说明私网链路已出现严重瓶颈——很可能是交换机 QoS 限速、MTU 不匹配导致反复分片重传、或 UDP 接收缓冲区(udp_recvspace)被撑爆后内核直接丢包。

Agent Git Oracle
Agent Git Oracle

高级仓库分析与重构指南。基于AI推理识别技术债务与架构反模式。

下载
  • 该值突增但 gc buffer busy acquire 也同步飙升 → 后者是结果,不是根源;优先查网络,别调 SQL
  • 该值稳定在 3–4ms,但 Estd Interconnect traffic 持续 8–10 MB/s → 可能是 PARALLEL_EXECUTION_MESSAGE_SIZE 设得过大,或并行度失控,需查 GV$SQL 中 buffer_gets/executions 高但 disk_reads/executions 极低的语句
  • 该值在不同节点间差异巨大(如节点1为 18ms,节点2为 2ms)→ 直接指向单点网卡/驱动/物理链路故障,不是集群配置问题

别忽略 Blocks served / Blocks received 的倾斜比

Global Cache Load Profile 下,看 Blocks served(本节点服务的块数)和 Blocks received(本节点接收的块数)两个数字。健康 RAC 应该大致均衡,比值接近 1:1。如果某节点 Blocks receivedBlocks served 的 3–5 倍以上(比如 120k vs 25k),说明它正被动“拉块”,大概率已成为 GC 流量黑洞或瓶颈节点。

这种倾斜往往和应用连接策略强相关:比如应用 TNS 配置没开 LOAD_BALANCE=on,或 service 绑定到了特定 instance,导致大部分会话集中在单节点,而它又频繁访问其他节点持有的热点块(如序列、状态表)。

  • 先确认是否真有倾斜:用 SELECT inst_id, SUM(blocks_received) r, SUM(blocks_served) s FROM gv$sysstat WHERE name IN ('gc blocks received', 'gc blocks served') GROUP BY inst_id 手动核对
  • 若倾斜存在,再查 GV$SERVICE_STATS 看各 service 的 CONNECTIONS 分布,而非直接怀疑网络带宽
  • 单纯加大私网带宽不能解决倾斜问题;必须配合应用层负载均衡或业务逻辑改造(如拆分热点块)

OS 层 netstat -s 必须验证 reasm fails 是否上涨

AWR 的 RAC 统计只是结果,真因得下 OS 查。重点跑:netstat -s | grep -i "reasm\|frag\|drop",盯紧 IpReasmFails —— 这个值只要持续非零增长,99% 就是 MTU 不匹配(比如一端设了 9000,交换机或对端还卡在 1500)。它比 ping 测试更准,因为反映的是真实 GC UDP 流量的分片失败情况,不是 ICMP。

很多团队改完 ip link set dev eth1 mtu 9000 就以为搞定,结果 IpReasmFails 照涨。根本原因是没停集群统一配,或交换机端口没开 jumbo frame,或网卡驱动不支持(ethtool eth1 显示 Supports jumbo frames: No)。

  • 必须所有节点、所有中间交换机、所有网卡驱动,端到端一致支持 9000 MTU,缺一不可
  • 改完 MTU 后,重启 CRS(crsctl stop crs && crsctl start crs),否则 LMS 进程仍读旧值
  • 抓包验证:用 tshark -i eth1 -f "udp port 12560" -T fields -e frame.len | sort -u,看到大量 8972 字节帧才算真正走通巨帧
实际排查时,最容易被跳过的就是 IpReasmFails 这一行输出。它不报错,不中断,但每秒几个失败,累积起来就让 GC 等待翻倍。别等节点驱逐才动手。

相关文章

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

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

下载

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

相关专题

更多
oracle清空表数据
oracle清空表数据

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

2023.08.16

821

5

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

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

2023.09.15

2253

5

oracle怎么分页
oracle怎么分页

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

2023.09.18

2270

5

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

2023.09.19

1329

3

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2023.09.19

1913

7

oracle imp
oracle imp

imp是Oracle数据库中的一个命令行工具,用于将导出的数据和对象从一个数据库实例导入到另一个数据库实例。imp命令的一般语法为“imp username/password@connect_string file=file_name [options]”。

2023.09.19

2469

4

常用的数据库软件
常用的数据库软件

常用的数据库软件有MySQL、Oracle、SQL Server、PostgreSQL、MongoDB、Redis、Cassandra、Hadoop、Spark和Amazon DynamoDB。更多关于数据库软件的内容详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.02

4029

19

oracle通配符有哪些
oracle通配符有哪些

oracle通配符有“%”、“_”、“[]”和“[^]"。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.08

237

5

oracle四舍五入怎么操作
oracle四舍五入怎么操作

oracle四舍五入操作可以使用ROUND函数来实现,其语法为“ROUND(number, decimal_places)”,其中,number是要进行四舍五入的数值,decimal_places是指定的小数位数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.14

626

5

热门下载

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

精品课程

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