Oracle RAC安装预检直接读取/proc/sys实时值而非/etc/sysctl.conf,需确保所有节点kernel参数(如shmmax、shmall、sem四字段)严格满足RAC要求并执行sysctl -p生效,否则报PRVF-7532等错误。

Oracle RAC安装自检直接读/proc/sys/,不看配置文件
runInstaller在预检查阶段会逐项读取/proc/sys/下的实时内核值,比如cat /proc/sys/kernel/shmmax,而不是解析/etc/sysctl.conf。改完配置文件但没执行sysctl -p,或只在一个节点改、其他节点没同步执行,都会导致报错。常见错误信息如PRVF-7532或kernel parameter check failed,日志里会明确写出哪个参数、当前值、期望值。
kernel.sem四字段必须整体达标,不能只看单个
RAC要求kernel.sem四个值(semmsl, semmns, semopm, semmni)同时满足最低组合:至少250 32000 100 142。哪怕semmni=128(低于142),也会失败——不是“大部分对就行”,而是全部字段都得过线。验证命令是sysctl kernel.sem,输出应为kernel.sem = 250 32000 100 142,缺一不可。
shmall和shmmax按SGA总和算,不是拍脑袋填最大值
-
kernel.shmmax≥ 单个实例最大SGA(例如32GB SGA → 设为34359738368) -
kernel.shmall单位是页(默认4KB),公式是(所有节点SGA总和字节数) / 4096;若物理内存128GB但只配2个16GB SGA实例,shmall只需(32*1024*1024*1024)/4096 = 8388608,填太大反而触发内核拒绝分配 - RAC多实例共享IPC资源,
shmall必须覆盖全部SGA总和,不能按单机习惯只算一个实例
某些参数容易被忽略,但RAC启动时会直接崩溃
fs.aio-max-nr必须设为1048576,否则ora_pmon等进程可能因异步I/O资源不足而挂起;vm.min_free_kbytes设得过大(比如256GB内存下配300MB以上)会挤占用户态可用内存,导致ohasd无法启动——这类问题不会在预检报错,但root.sh执行到一半就卡死,查/var/log/messages才能看到OOM相关记录。真正麻烦的从来不是报错的参数,而是那些“看起来合理、实则越界”的临界值。


















