预检查失败主因是系统未按oracle 19c rac规则对齐:kernel参数须实时生效、rpm包须完整安装且所有节点值严格一致;/proc/sys下运行时值决定校验结果,非/etc/sysctl.conf;rac需按多实例sga总和配置sem/shmall/shmmax;suse等非认证系统应通过cvu_config设cv_assume_distid绕过prvg-0282。
预检查失败不是安装被拒,而是系统没按oracle 19c rac的硬性规则“对齐”——重点在kernel参数必须实时生效、rpm包不能只装一半、且所有节点值要完全一致。
kernel参数改了但runInstaller仍报错?查实时值而非配置文件
Oracle runinstaller 在预检阶段直接读取 /proc/sys/ 下的运行时值,不解析 /etc/sysctl.conf。常见误区是改完配置就跑安装,结果报 PRVF-7532 或 kernel parameter check failed。
- 先用
sysctl kernel.shmmax看当前值,不是cat /etc/sysctl.conf | grep shmmax - 临时生效:运行
sysctl -w kernel.shmmax=4398046511104(示例值,按SGA大小算) - 再执行
sysctl kernel.shmmax确认输出匹配,不匹配说明写错或权限不足 - 持久化:把参数追加到
/etc/sysctl.conf后,必须运行sysctl -p;若用 Oracle Linux 8+,还需确认systemd-sysctl服务已启用并加载了你的配置 - RAC所有节点都要单独执行
sysctl -p,别只在一个节点改完就scp同步了事
哪些RPM包能跳过?哪些绝对不能动?
用 --ignorePrereq 不是乱跳,它只绕过Oracle白名单里标注为“验证专用、非运行必需”的包。真缺核心依赖,安装完也起不来实例。
- 可安全忽略的:
sysstat、smartmontools、bc—— 缺失不影响数据库启动 - 绝不能忽略的:
libaio(异步I/O)、glibc(版本必须严格匹配19c要求)、libstdc++、unixODBC(如需ODBC连接) - 验证是否装全:运行
rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}\n' libaio glibc libstdc++ unixODBC - 最省事方案:在 Oracle Linux 上直接
yum install -y oracle-database-preinstall-19c,它已打包全部必需项和合理内核参数
RAC特有参数:kernel.sem 和 shmall/shmmax 的计算逻辑
单机和RAC对共享内存的要求完全不同。RAC多实例共用同一套IPC资源,kernel.sem 四字段和 shmall 必须覆盖全部实例SGA总和,不能按单个实例配。
-
kernel.sem必须整体满足:至少250 32000 100 142(semmsl, semmns, semopm, semmni),少一个都报错 -
kernel.shmmax≥ 单个实例最大SGA(如规划32G SGA → 设为34359738368) -
kernel.shmall单位是页(默认4KB),公式:(物理内存GB × 1024³) / 4096;128GB内存 →33554432;若部署3个实例,SGA总和超128GB,shmall还得往上提 - 填太大风险:内核可能拒绝分配,报
ORA-27123: unable to attach to shared memory segment
SUSE等非认证系统报 PRVG-0282?别硬改os-release
强行修改 /etc/os-release 可能引发其他软件兼容问题。Oracle官方支持的绕过方式是告诉CVU“我就是SUSE”,而不是骗它“我是RHEL”。
- 定位CVU配置目录:
find $ORACLE_HOME -name cvu_config 2>/dev/null - 编辑
cvu_config,添加两行:CV_ASSUME_DISTID=SUSE15CV_ASSUME_CL_VERSION=19.1.0.0.0 - 该配置仅影响CVU预检,不影响后续安装和运行时行为
- 改完立刻用
runcluvfy.sh stage -pre crsinst -n node1,node2验证是否通过
真正卡住RAC安装的,从来不是“哪个参数没设”,而是“设了但没生效”“节点间不一致”“包名对但版本错”。每次改完,必须用对应命令验证实时值,而不是相信配置文件里写了就算数。











