oracle grid infrastructure 安装前必须满足4个硬性条件:/dev/shm≥6.8gb且非默认tmpfs挂载;主机名需nslookup和ping双向解析,/etc/hosts无重复或ipv6回环干扰;所有节点时间差≤1s;selinux必须禁用。
oracle grid infrastructure 安装前必须检查的 4 个硬性条件
不满足这几点,runinstaller 启动后大概率卡在“正在验证先决条件”或直接报 prvf-0002 错误。不是配置问题,是系统压根没准备好。
-
/dev/shm大小必须 ≥ 6.8GB(19c 要求),且不能是 tmpfs 的默认挂载(很多发行版默认 4GB);用mount -o remount,size=7g /dev/shm临时改,再写进/etc/fstab - 主机名必须能被
nslookup和ping -c1 $(hostname)双向解析,且/etc/hosts中不能有重复条目或 IPv6 回环地址干扰 - 所有节点时间差必须 chronyd 配置里要加
makestep 1.0 -1,否则cluvfy stage -pre crsinst直接失败 - ASM 所用磁盘必须是裸设备或 ASMLIB 管理的
/dev/oracleasm/disks/XXX,不能是 LVM 逻辑卷或带文件系统的分区——哪怕只建了 ext4 但没挂载,udev规则也会让asmca识别为“已使用”
用 asmca 创建 ASM 实例时最常选错的两个参数
界面看着简单,但选错一个就导致后续 DB 无法启动或磁盘组无法挂载。重点盯死这两个:
-
Redundancy类型:单节点独立部署选EXTERNAL,别手滑点成NORMAL;后者强制要求至少 3 块盘,否则CREATE DISKGROUP报ORA-15018,且无法回退 -
ASM Disk Group Name必须全大写、无下划线、长度 ≤ 30 字符(如DATA或FRA),小写或含特殊字符会导致 DB 控制文件里记录的磁盘组名和实际不一致,启动时报ORA-15032+ORA-15017
示例:创建命令行等效操作是 sqlplus / as sysasm 后执行 CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK '/dev/oracleasm/disks/DISK1';
Grid Infrastructure 启动失败卡在 CRS-4124 怎么快速定位
现象是 crsctl start crs 后停住,日志里反复刷 CRS-4124: Oracle High Availability Services has been started,但 crsctl check crs 显示 CRS-4639: Could not contact Oracle High Availability Services。
- 先看
$GRID_HOME/log/$(hostname)/agent/crsd/orarootagent_root/orarootagent_root.log,搜ORA-或Failed to initialize,90% 是 root 用户没权限读/dev/oracleasm或 udev 权限未同步 - 确认
oracle用户能否执行asmcmd lsdg;如果报ASMCMD-08102: no connection to ASM,说明+ASM实例根本没起来,去查$GRID_HOME/log/$(hostname)/asm/alert_+ASM.log - 常见真凶:
oracle用户的ORACLE_HOME指向了数据库软件而非 GI 软件,导致srvctl找不到 ASM;检查srvctl config asm输出的Oracle home路径是否为/u01/app/19c/grid这类 GI 路径
独立 ASM 实例和数据库实例之间最关键的通信路径
DB 实例启动时连不上 ASM,错误通常是 ORA-01078 + ORA-15032,根源不在磁盘,而在连接通道没通。
- 数据库的
spfile里必须有asm_diskstring='/dev/oracleasm/disks/*'(或对应裸设备路径),且该路径对oracle用户可读——用su - oracle -c "ls -l /dev/oracleasm/disks/"验证 - 监听器必须包含
ASM服务名:检查$GRID_HOME/network/admin/listener.ora是否有SID_LIST_LISTENER段,其中包含(SID_DESC = (SID_NAME = +ASM) (ORACLE_HOME = /u01/app/19c/grid)) - 数据库实例的
INSTANCE_TYPE参数必须是RDBMS,而不能是ASM;这个值写在spfile里,一旦错成ASM,实例会试图以 ASM 模式启动,直接报ORA-29760
真正麻烦的是跨版本混用:比如 GI 19c 管理 12c 数据库,asm_diskstring 路径格式稍有差异,老版本可能不认新 udev 规则生成的设备名,得手动软链到传统命名。










