ins-40406 是因 inventory.xml 中 grid home 缺失 crs="true" 或版本信息错误导致注册信息损坏,安装程序在读取 orainst.loc 和 inventory.xml 阶段即误判无现有 gi,故 asmca 无效;需修正 crs 属性、版本字段及文件权限。
ins-40406 不是磁盘组问题,而是 grid infrastructure 注册信息损坏导致的误判。安装程序根本没走到 asm 磁盘组创建环节,就卡在“找不到现有 gi 安装”这一步——所以用 asmca 预先建磁盘组完全无效,属于方向性错误。
为什么 asmca 创建磁盘组对 INS-40406 无用
报错 [INS-40406] The installer detects no existing Oracle Grid Infrastructure software 发生在安装程序读取 /etc/oraInst.loc 和 $ORACLE_HOME/inventory/ContentsXML/inventory.xml 阶段,此时 Grid Home 还未完成配置,asmca 甚至无法启动(缺少 oraenv 环境、CRS 服务未运行、grid 用户权限未就绪)。
-
asmca依赖已运行的 Oracle Clusterware 或 HAS(High Availability Services),而 INS-40406 意味着 CRS 根本未注册或注册损坏 - 强行运行
asmca会报ORA-15032: not all alterations performed或ORA-15260: permission denied on ASM disk group - 即使伪造出磁盘组,安装程序仍会在 inventory 校验阶段失败,不进入 ASM 配置流程
真正要改的是 inventory.xml 中的 CRS 标记
核心问题是 inventory.xml 里 Grid Home 条目缺失 CRS="true" 属性,或版本字段被升级脚本写乱。安装程序据此判定“这不是一个有效的 GI Home”。
- 先确认路径:
cat /etc/oraInst.loc查出inventory_loc,例如/u01/oraInventory - 进入
$INVENTORY_LOC/ContentsXML/,编辑inventory.xml - 找到对应 Grid Home 的
<home></home>行,确保包含CRS="true",例如:<home name="Ora11g_gridinfrahome1" loc="/u01/app/11.2.0/grid" type="O" idx="2" crs="true"></home> - 检查
<saved_with></saved_with>和<minimum_ver></minimum_ver>值是否与你正在安装的 GI 版本匹配(如 11.2.0.4 升级,不应残留 11.2.0.3 的 SAVED_WITH) - RAC 所有节点都必须同步修改该文件,否则添加节点时仍会失败
补救:roothas.pl 可绕过 inventory 直接激活 HAS
如果 inventory.xml 已严重损坏,或你只想快速恢复单节点 HAS(非 RAC),可跳过安装界面,直接运行 roothas.pl 初始化本地集群服务:
- 以 root 身份执行:
/u01/app/11.2.0/grid/crs/install/roothas.pl(路径按实际 Grid Home 调整) - 该脚本会重建 OCR key、写入 inittab/systemd、启动
ohasd进程,使crsctl check has返回CRS-4638: Oracle High Availability Services is online - 注意:此操作仅适用于单节点(HAS 模式),不能替代 RAC 的完整 CRS 安装;后续仍需用 OUI 完成 GI 配置,但 INS-40406 将不再出现
最易被忽略的一点:修改 inventory.xml 后,必须确保文件权限为 grid:oinstall 且不被编辑器意外添加 BOM 或空格——哪怕多一个不可见字符,OUI 也会静默跳过该 HOME 条目,继续报 INS-40406。











