当前位置: 首页 > news >正文

Oracle RAC ‘Metrics Global Cache Blocks Lost‘告警解决处理

1. 引言:

前段时间鄙人检查处理过Oracle RAC 'Metrics Global Cache Blocks Lost’告警,在此总结分享下针对该报警的原因分析及处理办法。

2. 具体事件

在这里插入图片描述
通过排查发现造成该告警的原因是共享存储控制器损坏导致的。由于发生已经有段时间了,没有来得及整理相关报警日志,所以具体的告警排查分析以及处理过程就不再叙述了。下面给大家总结分享下针对该告警的可能原因及对应排查处理及解决方案。

3. 原因分析

Oracle数据库的告警 “Global Cache Blocks Lost i” 表示在RAC(Real Application Clusters)环境中,节点间因全局缓存(Global Cache)同步数据块时发生了丢失。常见原因有以下几类:

3.1 网络问题(大多数情况是由改原因触发)

  1. RAC节点间的私网(Interconnect)出现延迟、丢包或带宽不足,导致数据块传输失败。
  2. 网卡驱动、交换机配置错误或硬件故障。

3.2 存储性能瓶颈

  1. 存储I/O延迟过高,导致数据块无法及时写入或读取,触发全局缓存超时。
  2. 共享存储(如ASM磁盘组)响应缓慢。

3.3 资源争用(Resource Contention)

  1. 多个节点频繁请求同一数据块,引发 gc buffer busy 或 gc cr block busy 等待事件。
  2. 热点数据块(Hot Blocks)导致全局缓存争用。

3.4 Oracle参数配置不当

  1. lm_resources、gc* 相关参数(如 gc_latches)设置不合理。
  2. 私网通信参数(如 cluster_interconnects)未优化。

3.5 系统资源不足

CPU或内存资源不足,导致节点处理全局缓存请求缓慢。

4. 解决方案

4.1 检查网络健康状态

  1. 诊断网络延迟/丢包
# 在RAC节点间执行ping测试(持续观察)
ping <节点IP> -c 100
# 使用traceroute检查路径
traceroute <节点IP>
# 使用OS工具检测丢包(如netstat)
netstat -s | grep -i "errors\|retransmit"

在这里插入图片描述
2. 验证私网配置
确认 cluster_interconnects 参数指向正确的私网接口:SHOW PARAMETER cluster_interconnects;
使用高带宽、低延迟的专用网络(如InfiniBand或10G+以太网)。

4.2 优化存储性能

  1. 检查存储I/O延迟(使用 iostat、AWR报告 的 “Top 5 Timed Events” 或 V$EVENT_HISTOGRAM)。
  2. 避免存储热点,分散数据文件到多个磁盘组。
  3. 优化SQL以减少物理I/O(例如通过索引减少全表扫描)。

4.3 减少全局缓存争用

  1. 识别热点数据块
-- 查询当前全局缓存争用
SELECT * FROM GV$SYSTEM_EVENT WHERE EVENT LIKE '%gc%';
-- 查找热点对象
SELECT FILE#, BLOCK#, CLASS#, COUNT(*) 
FROM GV$SEGMENT_STATISTICS 
WHERE STATISTIC_NAME = 'gc buffer busy' 
GROUP BY FILE#, BLOCK#, CLASS#;
  1. 优化策略
    对热点表进行分区(Partitioning),分散数据块访问。
    使用应用层缓存(如Oracle Coherence)或调整应用逻辑,减少跨节点访问。

4.4 调整Oracle参数

  1. 优化全局缓存参数
-- 增加资源限制(需谨慎评估)
ALTER SYSTEM SET "_lm_resources"=2000 SCOPE=SPFILE;
-- 调整全局缓存进程数
ALTER SYSTEM SET gc_processes=4 SCOPE=SPFILE;
  1. 启用大帧(Jumbo Frames)
    如果网络支持,配置MTU为9000以减少小包传输开销。

4.5 检查系统资源

  1. 监控CPU利用率(top、vmstat)和内存压力(free -m)。
    确保RAC节点负载均衡,必要时使用Services隔离工作负载:
-- 创建Service定向到特定节点
EXEC DBMS_SERVICE.CREATE_SERVICE('OLAP_SVC', 'OLAP_SVC');
EXEC DBMS_SERVICE.START_SERVICE('OLAP_SVC', 'node1');

4.6 收集诊断信息

  1. 生成AWR/ASH报告分析全局缓存事件:
-- 生成AWR报告
@?/rdbms/admin/awrrpt.sql
-- 生成ASH报告
@?/rdbms/admin/ashrpt.sql
  1. 检查Oracle日志:
    alert_.log
    crsd.log、cssd.log(Clusterware日志)

5. 注意事项

  1. 避免直接修改隐含参数:如 _lm_resources,需先联系Oracle Support评估。
  2. 测试环境验证:参数调整前在非生产环境验证。
  3. 长期监控:部署持续监控工具(如OEM、Prometheus),跟踪 gc blocks lost 趋势。
    4.及时收集以下信息:
    –AWR/ASH报告
    –RAC节点trace文件(diag/rdbms/<DB_NAME>//trace)
    –网络诊断结果(如tcpdump)

关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等.

相关文章:

  • 火语言RPA--DestoonV8商品发布
  • Qt 中实现观察者模式(Observer Pattern)
  • ros2 humble 控制真实机械臂(以lerobot为例)
  • 【Unity】XLua访问C#文件
  • 人工智能助力工业制造:迈向智能制造的未来
  • HarmonyOS NEXT——DevEco Studio的使用(还没写完)
  • Vue实现成绩增删案例
  • 在pycharm profession 2020.3将.py程序使用pyinstaller打包成exe
  • (37)VTK C++开发示例 ---纹理地球
  • [更新完毕]2025东三省B题深圳杯B题数学建模挑战赛数模思路代码文章教学:LED显示屏颜色转换设计与校正
  • 【掌握 DDL】:SQL 中的数据库与表管理
  • with的用法
  • 机器学习_线性回归
  • 数据库基础-库,表的操作
  • 大模型开发的环节
  • IDEA回滚代码操作
  • REINFORCE蒙特卡罗策略梯度算法详解:python从零实现
  • 【算法刷题笔记day one】滑动窗口(定长基础版)
  • Lua 基础 API与 辅助库函数 中关于创建的方法用法
  • python中的yield关键字用法
  • 中国人民银行:5月8日起降息,15日起降准
  • 上海国际电影节特设“走进大卫·林奇的梦境”单元
  • 以色列计划“占领加沙”,特朗普下周中东行结束之际将是“机会窗口”
  • 中国医药科技出版社回应发布“男性患子宫肌瘤”论文:正在核查
  • 今年五一档电影票房已破7亿
  • 中国驻美国使领馆提醒在美中国公民注意交通安全