ORA-27123 错误主因是 /etc/oraInst.loc 指向的 inventory 目录权限不当(如 root 创建后 oracle 用户无读写权),而非锁文件未清;需确保 oraInst.loc 存在可读、inventory 目录属主为 oracle:oinstall 且权限为 750、父目录有 r-x 权限。
ORA-27123 错误出现时,oraInst.loc 文件权限是否被忽略?
报错常发生在新节点执行 runinstaller 或 addnode.sh 时提示无法访问 oracle inventory,根本原因往往不是锁文件没清,而是 /etc/orainst.loc 指向的 inventory 目录本身权限不对——尤其当该目录由 root 创建、但安装用户(如 oracle)无读写权时。
-
/etc/oraInst.loc必须存在且内容可读,格式为:inventory_loc=/u01/app/oraInventory inst_group=oinstall
- 检查
inventory_loc路径属主和权限:ls -ld /u01/app/oraInventory,应为oinstall:oinstall且至少含rwxr-x--- - 若用 root 创建过 inventory,务必运行:
chown -R oracle:oinstall /u01/app/oraInventory和chmod -R 750 /u01/app/oraInventory - 别漏掉父目录:
/u01/app至少需r-x权限给oracle用户,否则连路径都进不去
addNode.sh 卡在 “Checking for OUI lock” 怎么破?
OUI 锁文件不只存在于 inventory 目录里,它可能残留在共享存储或本地临时路径,且 addNode.sh 默认只查 inventory 下的 locks 子目录,容易漏掉真实锁定点。
- 先确认锁文件位置:OUI 实际使用的是
$ORACLE_HOME/.oui/locks和$ORACLE_HOME/inventory/locks(注意两个路径),不是只看/u01/app/oraInventory/locks - 在待加节点上,逐个检查:
ls -la $ORACLE_HOME/.oui/locks/和ls -la $ORACLE_HOME/inventory/locks/;若有非空.lock文件,直接rm -f *.lock - 若 RAC 使用 ASM 或 NFS 共享
$ORACLE_HOME,必须在所有已有节点上同步清理,否则锁状态不一致,新加节点仍会感知到“正在安装” - 别信
runInstaller -ignoreSysPrereqs能绕过锁检查——它跳不过 OUI 底层的文件锁校验逻辑
为什么 root.sh 在新节点执行失败后,Inventory 就变脏了?
root.sh 执行一半中断(比如网络闪断、脚本超时),会导致 inventory 中注册信息不完整,后续再跑 addNode.sh 会因元数据冲突直接拒绝,错误常表现为 OPatch failed with error code 73 或 inventory is corrupted。
- 验证 inventory 完整性:用
opatch lsinventory -detail看是否报Unable to lock Central Inventory或列出组件明显缺失 - 修复前先备份:
cp -r /u01/app/oraInventory /u01/app/oraInventory.bak.$(date +%s) - 强制重建 inventory 元数据(仅限新节点未成功加入):
rm -rf /u01/app/oraInventory/ContentsXML/*,然后重新跑addNode.sh—— 不要手动改 XML,OUI 不认 - 若已有节点也受影响,说明共享 inventory 被污染,此时必须从健康节点导出:
runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={old1,old2}" -local,再在新节点补全
跨版本加节点时,oraInventory 兼容性有哪些隐形坑?
Oracle 11gR2 之后 inventory 结构变化不大,但 19c 引入了 oui-patch 相关字段,若老节点 inventory 未升级,新节点用新版 OUI 写入时可能写坏结构,导致后续 patch 失败。
- 检查 inventory 版本:
cat /u01/app/oraInventory/ContentsXML/inventory.xml | grep "version=",应与当前$ORACLE_HOME/inventory/ContentsXML/inventory.xml的 version 一致(如 19.0.0.0.0) - 若不一致,别手动生成 XML —— 正确做法是用老节点的
runInstaller(同版本)执行一次-updateNodeList,触发 inventory 自动升级 - 注意
inst_group在/etc/oraInst.loc中必须和所有节点的 OS 组名完全一致(大小写敏感),哪怕只是多一个空格,OUI 就会拒绝写入 - 时间不同步也会干扰 inventory 时间戳校验,确保所有节点
ntpq -p显示偏移










