Oracle 19c单机ASM安装前必须检查4个核心依赖:①binutils≥2.23;②libaio与libaio-devel同时安装;③sysstat必需(asmca依赖iostat);④内核参数shmall/shmmax按物理内存精确计算,否则CRS启动失败。
Oracle 19c 单机 ASM 安装前必须检查的 4 个依赖项
不装 grid infrastructure 就没法用 asm,但直接跑 runinstaller 大概率卡在“checking operating system requirements”或报 prve-0426。根本原因不是缺包,而是缺**特定版本+特定编译选项**的系统级依赖。
-
binutils必须 ≥ 2.23(RHEL7/CentOS7 默认是 2.27,OK;但某些裁剪版可能降级到 2.20,会触发PRVF-9802) -
libaio和libaio-devel要同时装,缺-devel会导致oracleasm初始化失败,错误信息里藏的是ORA-15018: cannot create diskgroup -
sysstat不是可选——asmca创建磁盘组时会调iostat,没它会静默超时,日志只写ASMCA: Disk group creation timed out - 内核参数
kernel.shmall和kernel.shmmax必须按物理内存算,不是按 Oracle 推荐值硬套。比如 64G 内存,shmall至少设为16777216(即 64G / 4KB),否则crsctl start crs启动失败,报CRS-4640: Oracle High Availability Services is already active(实际是共享内存分配失败导致 CRS 假死)
/dev/sdX 设备权限没配对,ASM 磁盘扫描永远为空
很多人用 udev 规则绑定磁盘后仍看到 asmcmd lsdsk 返回空,问题不在规则语法,而在设备节点权限继承链断了。
- 确保
udev规则里包含OWNER="grid"、GROUP="asmadmin"、MODE="0660",三者缺一不可——MODE不写0660而写660会被忽略 - 规则文件名必须以
.rules结尾且放在/etc/udev/rules.d/,执行udevadm control --reload-rules && udevadm trigger后,用ls -l /dev/sd*确认属主已变,别只信udevadm info输出 - 如果用 NVMe 盘(如
/dev/nvme0n1),udev匹配要改用SUBSYSTEM=="block", KERNEL=="nvme[0-9]n[0-9]",不能套 SCSI 的sd模式 - 重启服务器后,运行
oracleasm scandisks前先systemctl restart oracleasm,否则旧缓存不刷新
Grid Infrastructure 静默安装时 configToolAllCommands 报错的三个高频点
图形界面装完常提示 “Run configuration tools”,这时候手动跑 configToolAllCommands 极易失败,错误全堆在 $ORACLE_HOME/cfgtoollogs/ 下,但真正卡点就那几个。
-
ora.crsd起不来?检查/etc/oracle/olr.loc是否存在且内容指向正确的 OCR 位置,静默安装若漏掉-ignorePrereqFailure又遇到 DNS 解析失败,这个文件可能压根没生成 -
root.sh执行中途退出?看最后几行有没有Failed to create keys in Oracle wallet——这是orapki找不到 Java,需提前设好ORACLE_HOME/jdk/bin/java软链接,或手动把$ORACLE_HOME/jdk替换为系统已装的 JDK 路径 -
asmca静默建盘失败?命令里必须显式加-silent -diskGroupName DATA -diskList /dev/oracleasm/disks/DISK1,/dev/oracleasm/disks/DISK2,漏掉-diskList参数会返回ORA-15018: cannot create diskgroup,而不是提示参数缺失
单机 ASM 环境下 crsctl 启动失败却显示 “already active” 的真实原因
这不是 CRS 真活了,是 ohasd 进程僵死但锁文件残留,导致后续所有启动都误判。最典型现象是 ps -ef | grep ohasd 看不到进程,但 crsctl check crs 仍报 CRS-4640。
- 先删锁:
rm -f /var/tmp/.oracle/npohasd和/var/tmp/.oracle/npohasd_<pid></pid>(如果有) - 再清状态:
rm -f /u01/app/19.0.0/grid/cdata/localhost.localdomain/backup_*.ocr(OCR 备份锁) - 最后强制重启:
sudo $ORACLE_HOME/bin/crsctl stop crs -f && sudo $ORACLE_HOME/bin/crsctl start crs,别信crsctl check crs的返回值,要用crsctl stat res -t看ora.asm和ora.cssd是否真 ONLINE - 如果还起不来,立刻查
$ORACLE_HOME/log/localhost.localdomain/crsd/crsd.log,搜索 “CSSD” 开头的 ERROR 行,大概率是cssd连不上 ASM 实例——这时要确认+ASM实例是否已用sqlplus / as sysasm手动启过
ASM 不是装完就自动跑的服务,它的启动顺序和依赖关系比数据库实例更脆,任何一步权限、路径、锁文件没清理干净,都会让整个 GI 停在“半激活”状态。别跳过每一步的验证输出,尤其 crsctl stat res -t 里的状态码。










