当前位置: 首页 > 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核心知识和排障案例及经验、性能调优等.

http://www.xdnf.cn/news/263269.html

相关文章:

  • 小程序滚动条隐藏(uniapp版本)
  • 【Java学习】通配符?
  • Java多语言DApp质押挖矿盗U源码(前端UniApp纯源码+后端Java)
  • 使用 Selenium 爬取动态网页数据 —— 实战与坑点详解
  • 基于LangChain 实现 Advanced RAG-后检索优化(下)-上下文压缩与过滤
  • 将Airtable导入NocoDB
  • 多协议 Tracker 系统架构与传感融合实战 第六章 多传感器时钟同步与数据对齐
  • SETNX的存在问题和redisson进行改进的原理
  • 【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means
  • 【Hive入门】Hive与Spark SQL深度集成:执行引擎性能全面对比与调优分析
  • C语言蓝桥杯真题代码
  • Go反射-通过反射调用结构体的方法(带入参)
  • 解决奥壹oelove婚恋原生小程序上架问题,彻底解决解对问题增强版旗舰版通用
  • 计算机网络八股文--day4 --传输层TCP与UDP
  • WebAPI项目从Newtonsoft.Json迁移到System.Text.Json踩坑备忘
  • 【项目实践】boost 搜索引擎
  • 基于 JSP 和 Servlet 的数字信息分析小应用
  • 【Linux】驱动开发方法
  • ES6/ES11知识点 续一
  • 人工智能发展史 — 物理学诺奖之 Hopfield 联想和记忆神经网络模型
  • 19:常见的Halcon数据格式
  • 优化01-统计信息
  • 深入解析 SqlSugar 与泛型封装:实现通用数据访问层
  • 图论之幻想迷宫
  • 使用Rust + WebAssembly提升前端渲染性能:从原理到落地
  • 网络安全:sql注入练习靶场——sqli_labs安装保姆级教程
  • 【tcp连接windows redis】
  • c++_2011 NOIP 普及组 (1)
  • Python Django基于小波变换的数字水印技术实现系统【附源码、文档说明】
  • (37)VTK C++开发示例 ---纹理地球