在Oracle RAC环境中,节点间通信和资源争用是性能问题的高发区。我们经常会碰到节点通信和资源争用的问题,下面给出一个我经常用到的基于 ORADEBUG 和 CRSCTL 的深度排查流程,帮助定位问题根源:
检查私网配置
一、节点间通信排查
1. 确认集群网络健康状态
crsctl check cluster -all # 检查集群整体状态
crsctl status res -t -init # 查看网络资源(如ora.net1.network)状态
oifcfg getif # 查看网络接口配置(公网/私网)
验证节点间连通性
cluvfy comp nodereach -n all # 检查节点间通信
cluvfy comp network -n all # 验证网络配置一致性
跟踪CSS(Cluster Synchronization Service)
2. 启用集群通信跟踪
crsctl debug log css "CSSD:1" # 启用CSS组件跟踪(日志级别1-3)
crsctl debug trace css # 开始CSS跟踪
日志路径:$GRID_HOME/log//cssd/ocrcl*.log
跟踪节点心跳(ping监控)
crsctl debug log res ora.crsd:1 # 跟踪CRSD资源通信
crsctl debug log res ora.ctssd:1 # 跟踪时间同步服务
使用系统工具
3. 分析通信延迟或丢包
ping <私网IP> # 基础延迟测试
traceroute <私网IP> # 检查路由路径
netstat -s | grep -i "retransmit" # 查看TCP重传(丢包指标)
Oracle网络诊断
ORADEBUG setmypid
ORADEBUG ipc # 查看IPC缓冲区使用情况
ORADEBUG gerc stack <pid> # 跟踪指定进程的IPC栈
跟踪Global Enqueue Service (GES)
二、资源争用排查
1. 全局资源争用(GCS/GES)
ORADEBUG setmypid
ORADEBUG event 10704 trace name context forever, level 15 -- 跟踪全局锁操作
日志路径:$ORACLE_BASE/diag/rdbms///trace/*.trc
分析Global Cache Service (GCS)延迟
SELECT * FROM gv$cr_block_server; -- 查看块服务进程状态
SELECT * FROM gv$ges_enqueue; -- 查看全局锁队列
查看资源争用历史
2. 集群资源状态监控
crsctl status res -v -f # 显示资源详细状态及失败历史
crsctl debug log res "ora.<resource>.db:1" # 跟踪特定资源(如ora.prod.db)
启用资源操作跟踪
crsctl trace res ora.scan1.vip -f # 跟踪VIP资源操作
动态性能视图
3. 诊断锁争用(Enqueue/LM)
SELECT * FROM gv$enqueue_stat WHERE eq_type = 'US'; -- 查看用户级锁统计
SELECT * FROM gv$lock WHERE block=1; -- 查找阻塞锁
ORADEBUG高级跟踪
ORADEBUG setmypid
ORADEBUG event 10046 trace name context forever, level 12 -- SQL跟踪
ORADEBUG event 10200 trace name context forever, level 1 -- 跟踪锁分配
Clusterware日志
三、日志收集与分析
1. 关键日志文件
$GRID_HOME/log/<node>/agent/ohasd/oraagent_oracle.trc
$GRID_HOME/log/<node>/crsd/crsd.trc
数据库实例日志
$ORACLE_BASE/diag/rdbms/<dbname>/<instance>/trace/alert_<instance>.log
2. 使用DIAGCOLLECT工具
diagcollection.pl --collect --crshome $GRID_HOME --incidenttime <时间范围> # 统一收集集群诊断包
现象
四、常见问题案例
案例1:节点驱逐(Node Eviction)
:节点频繁被踢出集群。
排查
crsctl lsmodules css # 检查CSS模块状态
grep -i "evict" $GRID_HOME/log/<node>/cssd/ocssd.log # 搜索驱逐记录
案例2:GC Buffer Busy
现象
:gc buffer busy 等待事件频发。
排查
SELECT * FROM gv$session WHERE event='gc buffer busy';
ORADEBUG tracefile_name # 确认跟踪文件路径
五、注意事项
- 谨慎使用跟踪工具
:高粒度跟踪(如level 15)可能快速生成GB级日志,建议在Oracle Support指导下操作。
- 时间同步
:确保所有节点时间同步(使用cluvfy comp clocksync验证)。
- 网络优化
:私网建议使用专用高速网络(如InfiniBand),启用Jumbo Frames。
通过上述方法,可系统化定位通信瓶颈或资源争用点,结合AWR/ASH报告进一步关联分析
编辑推荐:
- Oracle RAC节点通信与资源争用排查指南03-03
- Oracle RAC集群健康监控技术分析03-03
- Oracle UNDO表空间的深入研究03-03
- 研究Oracle profile文件对sysdba用户的影响03-03
- 一次stream_pool不足导致的expdp失败的解决03-03
- 调整arraysize减少逻辑读的测试03-03
- 关于tnsping跟踪的研究及测试03-03
- 一次Undo表空间耗尽问题03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 一次Undo表空间耗尽问题
一次Undo表空间耗尽问题
26-03-03 - 19C统计信息引发的数据库慢问题
19C统计信息引发的数据库慢问题
26-03-03 - SQL优化之数据倾斜解决方案
SQL优化之数据倾斜解决方案
26-03-03 - 一次报表查询优化
一次报表查询优化
26-03-03 - 一次数据库CPU使用100%异常处理及分析报告
一次数据库CPU使用100%异常处理及分析报告
26-03-03 - 一次expdp备份hang住问题分析
一次expdp备份hang住问题分析
26-03-03 - 利用Deepseek 割韭菜的套路有哪些?
利用Deepseek 割韭菜的套路有哪些?
26-03-03 - 一次dg搭建坏块处理
一次dg搭建坏块处理
26-03-03 - Oracle误truncate操作恢复(二)
Oracle误truncate操作恢复(二)
26-03-03 - 一次参数设置导致数据库故障分析报告
一次参数设置导致数据库故障分析报告
26-03-03
