cvu检查失败主因是系统未按oracle 19c rac硬性规则对齐:内核参数须实时生效(读取/proc/sys/值)、rpm包须完整安装、所有节点参数值严格一致;shmmax/shmall/sem需按多实例总和配置,transparent_hugepage必须通过grub永久禁用,网卡扫描须显式指定public/private/asm接口并确保/etc/hosts全静态解析。
cvu 检查失败不是 cvu 本身坏了,而是它读到的系统实时状态和 oracle 19c rac 的硬性要求对不上——尤其在内核参数这块,改了配置文件不等于生效,值不对、范围错、节点不一致,全都会直接触发 prvf-7532、prve-0405 或 prvf-9802 等错误。
sysctl 参数必须实时生效,不能只改 /etc/sysctl.conf
runInstaller 和 cluvfy.sh 在预检阶段直接读取 /proc/sys/ 下的运行时值,完全不解析 /etc/sysctl.conf。
常见错误是:
- 编辑完
/etc/sysctl.conf就跑安装,结果报kernel parameter check failed - 把参数写进
/etc/sysctl.d/99-oracle.conf,但没用sysctl -p /etc/sysctl.d/99-oracle.conf加载,重启后更彻底失效
实操建议:
- 先用
sysctl kernel.shmmax确认当前值,不是grep shmmax /etc/sysctl.conf - 临时生效:运行
sysctl -w kernel.shmmax=4398046511104(按你规划的 SGA 总和计算) - 持久化:追加到
/etc/sysctl.conf后,必须执行sysctl -p;若用 Oracle Linux 8+,还要确认systemd-sysctl服务已启用并 reload 过
shmmax、shmall、sem 必须按 RAC 多实例总和配置
RAC 不是单实例,shmmax 要 ≥ 所有节点上所有 Oracle 实例 SGA 最大值之和,shmall 要 ≥ 总物理内存页数 × 1.2(单位是 page),sem 中第 3 个值(SEMMSL)要 ≥ 单实例最大进程数,第 4 个值(SEMMNI)要 ≥ 节点数 × 2。
容易踩的坑:
- 按单实例 SGA 设
shmmax,装完第二个节点就启动失败 -
shmall单位误用字节而非 page,导致实际分配远低于预期 -
sem写成250 32000 100 128这种固定模板,没随节点数扩容
验证方式:
-
ipcs -lm输出的max total shared memory应 ≥shmmax值 -
cat /proc/sys/kernel/shmall输出应 ≥ 计算值(如 64GB 内存 ≈ 16777216 pages)
transparent_hugepage 必须永久禁用,不能只 echo never
Oracle 19c RAC 明确不兼容 transparent_hugepage=always,哪怕只开一秒,都可能在 CRS 启动或 ASM mount 阶段引发 ORA-27102: out of memory 或静默崩溃。
临时命令无效:
-
echo never > /sys/kernel/mm/transparent_hugepage/enabled重启即恢复 -
echo never > /sys/kernel/mm/transparent_hugepage/defrag只是补丁,不治本
正确做法:
- 修改
/etc/default/grub,在GRUB_CMDLINE_LINUX行末加transparent_hugepage=never - 运行
grub2-mkconfig -o /boot/grub2/grub.cfg - 重启后验证:
cat /sys/kernel/mm/transparent_hugepage/enabled输出必须是[never],且grep AnonHugePages /proc/meminfo返回AnonHugePages: 0 kB
CVU 扫描网卡失败时,别让它瞎扫
CVU 默认调用 ifconfig 列出所有接口,但 RAC 只认三类:public、private、ASM(如用 udev 绑定)。遇到 docker0、bond0.100、vethxxx 就直接报 PRVF-9802。
解决方法很直接:
- 先用
oifcfg getif看 OCR 当前记录的接口;没配过就用oifcfg setif -global eth0/192.168.1.0:public固化 - 运行校验时显式指定网卡:
./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose -iface eth0,eth1,eth2 - 检查
/etc/hosts:所有 public IP、private IP、VIP、SCAN IP 必须静态解析,不能含域名(如node1.example.com)
最常被忽略的一点:参数值在所有节点上必须完全一致,包括空格、换行、注释位置——CVU 会逐字比对。同步配置时,别用 vim 手动编辑,用 scp 从一个节点直接复制过去。











