1. RAC安装前的环境检查与准备工作
在Oracle RAC(Real Application Clusters)安装过程中,环境准备阶段的问题往往会导致后续安装失败。根据我多年部署经验,90%的安装问题都源于前期环境配置不当。
1.1 操作系统层面的关键检查项
首先需要确认所有节点满足以下条件:
- 相同的操作系统版本和补丁级别(使用
uname -a核对) - 完全一致的内核参数设置(重点关注
/etc/sysctl.conf中的)bash复制
kernel.shmall = 4294967296 kernel.shmmax = 68719476736 kernel.shmmni = 4096 semmsl=250 semmns=32000 - 禁用透明大页(Transparent HugePages):
bash复制echo never > /sys/kernel/mm/transparent_hugepage/enabled - 关闭NUMA平衡(可能导致性能问题):
bash复制echo 0 > /proc/sys/kernel/numa_balancing
1.2 共享存储配置要点
ASM磁盘组配置是RAC的核心难点,常见问题包括:
- 多路径配置不一致:各节点看到的磁盘UUID必须相同
bash复制# 使用multipath -ll检查 /dev/mapper/mpathb (3600a09803830445455244b4a387a6a72) dm-1 EMC,SYMMETRIX - 磁盘权限问题:确保grid用户对ASM磁盘有读写权限
bash复制chown grid:asmadmin /dev/oracleasm/* chmod 660 /dev/oracleasm/* - 使用UDEV规则替代ASMLib(Oracle已弃用):
bash复制# /etc/udev/rules.d/99-oracle-asmdevices.rules KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="3600a09803830445455244b4a387a6a72", SYMLINK+="oracleasm/disk1", OWNER="grid", GROUP="asmadmin", MODE="0660"
1.3 网络配置的魔鬼细节
网络问题是RAC安装失败的高发区:
- 各节点
/etc/hosts必须包含所有VIP、SCAN、私网IPcode复制192.168.1.10 node1-priv 192.168.1.11 node2-priv 192.168.1.100 node1-vip 192.168.1.101 node2-vip 192.168.1.200 cluster-scan - MTU值必须统一(建议9000):
bash复制
ifconfig eth1 mtu 9000 - 禁用反向路径过滤:
bash复制echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. GRID安装阶段的典型问题处理
2.1 OUI安装界面卡顿问题
当安装程序在"Cluster Verification Utility"阶段停滞时:
- 检查
$GRID_HOME/cfgtoollogs/cvu/cvutrace.log - 常见原因是DNS解析超时,临时方案:
bash复制echo "192.168.1.200 cluster-scan" >> /etc/hosts - 彻底解决方案是配置DNS服务器或使用GNS
2.2 ASM磁盘组创建失败
报错"ORA-15031"时的排查步骤:
- 确认磁盘路径在所有节点可见:
sql复制SELECT path, header_status FROM v$asm_disk; - 检查磁盘签名是否冲突:
bash复制
oracleasm querydisk -d /dev/sdb1 - 使用force选项强制创建(仅限测试环境):
sql复制CREATE DISKGROUP DATA NORMAL REDUNDANCY DISK '/dev/oracleasm/disk1','/dev/oracleasm/disk2' ATTRIBUTE 'compatible.asm'='19.0';
2.3 OCR/VOTE磁盘权限问题
当出现"PRCR-1079 : Failed to start resource ora.asm"时:
- 检查ocr.loc位置:
bash复制
ocrcheck -config - 重建OCR(极端情况):
bash复制
ocrconfig -restore /u01/app/grid/cdata/cluster_name/backup_20151112.ocr
3. 数据库软件安装的特殊场景处理
3.1 ORACLE_HOME路径冲突
多版本共存时的解决方案:
- 使用不同的ORACLE_BASE路径:
bash复制export ORACLE_BASE=/u01/app/oracle_19c - 通过OUI选择"Software Only"安装选项
- 修改
/etc/oratab避免服务启动冲突
3.2 SPFILE位置引发的启动问题
RAC环境下SPFILE的最佳实践:
- 必须存放在共享存储(ASM):
sql复制CREATE SPFILE='+DATA/racdb/spfileracdb.ora' FROM PFILE; - 各节点pfile中只需保留指向语句:
bash复制# $ORACLE_HOME/dbs/initracdb1.ora SPFILE='+DATA/racdb/spfileracdb.ora' - 修改参数时的正确姿势:
sql复制ALTER SYSTEM SET sga_target=4G SCOPE=SPFILE SID='*';
4. 集群验证与后期调优
4.1 集群健康状态检查
必须定期执行的诊断命令:
bash复制crsctl check cluster -all # 检查集群服务状态
crsctl stat res -t # 查看资源详细状态
asmcmd lsdg # ASM磁盘组空间监控
4.2 网络性能优化
针对RAC私网通信的TCP优化:
bash复制# 添加到/etc/sysctl.conf
net.core.rmem_default=4194304
net.core.wmem_default=4194304
net.core.rmem_max=16777216
net.core.wmem_max=16777216
4.3 AWR报告中的关键指标
需要特别关注的RAC特有指标:
- Global Cache等待事件(gc cr block busy)
- 实例间负载均衡情况(Service Statistics)
- interconnect流量(Cluster Interconnect Statistics)
5. 疑难杂症处理经验
5.1 ORA-29740错误处理
当节点驱逐(Node Eviction)发生时:
- 检查ocssd.log定位根本原因:
bash复制grep -i "evict" $GRID_HOME/log/`hostname`/cssd/ocssd.log - 网络问题导致时的恢复步骤:
bash复制
crsctl stop crs crsctl start crs
5.2 补丁安装的坑
PSU补丁安装的正确流程:
- 必须使用opatchauto(19c开始强制要求):
bash复制
opatchauto apply -oh /u01/app/oracle/product/19.0.0/dbhome_1 - 回滚补丁的特殊命令:
bash复制opatchauto rollback -id 12345678
5.3 存储心跳超时调整
针对EMC/VMAX存储的优化参数:
bash复制crsctl set css misscount 60 # 默认30秒调整为60
crsctl set css diagwait 13 # 诊断等待时间
我在实际运维中发现,RAC环境的问题往往具有"牵一发而动全身"的特点。建议每次变更前做好回退方案,特别是涉及网络和存储的配置调整。对于生产环境,务必在测试集群验证后再实施。
