PRVF-7531表示CVU无法读取/proc/meminfo,非内存不足;真实原因是权限不足、SELinux拦截、/proc挂载限制、容器隔离或Windows默认共享未启用,需查cvu_err.log确认具体报错。

PRVF-7531不是内存不足,而是检查被阻断
PRVF-7531报错信息里写的是“无法在节点上执行物理内存检查”,不是“物理内存不足”。它的真实含义是:Oracle的CVU(Cluster Verification Utility)脚本压根没读到/proc/meminfo里的数据——通常因为权限、路径不可达、挂载隔离或SELinux拦截导致。你看到的“预期值 : N/A 实际值 : N/A”就是典型信号:没取到任何值,而非值不达标。
常见触发场景和对应验证方式
这个错误几乎从不单独出现,往往和PRVF-7563、PRVF-7574等成组报出,说明CVU连基础系统信息都拿不到。排查优先级如下:
- 确认当前用户对
/proc/meminfo有读权限:cat /proc/meminfo | head -3能正常输出?不能则检查是否被容器/namespace隔离,或SELinux策略拦截(ausearch -m avc -ts recent | grep meminfo) - 检查
/proc是否被挂载为noexec或nosuid:mount | grep proc,输出中不应含这些flag - 若在CentOS/RHEL 8+或启用了cgroup v2的系统上,确认
/proc/sys/kernel/panic_on_oops等路径未因内核安全模块被隐藏(某些加固策略会屏蔽整个/proc/sys子树) - Windows平台(少见但存在):PRVF-7531常因未启用默认共享(
C$、ADMIN$)导致CVU无法远程访问本地/proc模拟路径;需改注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters\AutoShareWks为1并重启
别信“忽略就行”,先看cvu_err.log定位真因
运行runInstaller后,CVU会在/tmp/CVU_*/cvu_err.log里记录失败堆栈。打开它,搜索PRVF-7531,你会看到类似这样的行:
ERROR: [FATAL] PRVF-7531 : Unable to execute memory check on node 'host01' due to: java.io.FileNotFoundException: /proc/meminfo (Permission denied)
这才是关键线索。如果日志里明确写了Permission denied,就别去调swap或扩/tmp——那是治错了地方。临时修复可以:sudo setsebool -P oracle_read_proc_meminfo 1(OL/RHEL),或在容器环境加--cap-add=SYS_ADMIN。
Ubuntu等非认证系统要绕过版本检查,但不能绕过proc访问
Ubuntu上装Oracle 19c时,--ignorePrereqErrors能跳过发行版校验,但CVU仍会尝试读/proc。如果你用systemd-run --scope或unshare -r启动安装进程,/proc可能被重映射为空目录。最稳妥的做法是直接在root shell里运行./runInstaller,不要套任何沙箱命令。另外注意Ubuntu 22.04默认启用fs.protected_regular=2,会阻止非特权进程读/proc/meminfo,需临时设为0:sudo sysctl fs.protected_regular=0(仅调试用,装完应恢复)。


















