INS-30011 错误主因是 oraInst.loc 指针文件及旧 inventory 冲突,而非密码错误;需先删除 /etc/oraInst.loc 及其指向的 inventory.xml,再校验密码复杂度(8位以上、大小写字母、数字、特殊字符、字母开头)。
INS-30011 不是密码输错了,而是 Oracle Universal Installer(OUI)在启动时撞上了旧的 inventory 指针文件或残留配置,直接卡死——你输再合规的密码(比如 Or@cl3#2026),它根本不会校验。
为什么删 /etc/oraInst.loc 比改密码更关键
oui 启动第一件事不是看密码,而是读 /etc/orainst.loc(linux/unix)或 orainst.loc(windows)。只要这个文件存在,oui 就强制加载它指向的 inventory 目录下的 inventory.xml,并检查里面是否已有同名 <home></home> 记录。一旦匹配上(哪怕路径只是部分相似),立刻报 ins-30011 并退出,压根不进密码校验流程。
-
/etc/oraInst.loc内容形如:inventory_loc=/u01/app/oraInventory和inst_group=oinstall - 哪怕你重装系统、清空所有 Oracle 目录,只要这个文件还在,OUI 就会去读它指定的 inventory
- inventory 通常藏在
/u01/app/oraInventory或/opt/oracle/oraInventory下,不是隐藏文件,但容易被忽略
Linux/Unix 下必须连删两处:指针 + inventory 冲突项
只删 /etc/oraInst.loc 不够,OUI 重启后可能根据默认规则重建 inventory,但若旧 inventory.xml 还在,冲突照旧。
- 先确认文件是否存在:
ls -l /etc/oraInst.loc;若不存在,查/etc/orainst.loc(大小写易错) - 查看指向路径:
cat /etc/oraInst.loc,提取inventory_loc=后的值(例如/u01/app/oraInventory) - 进入该目录,删掉冲突记录:
rm -f /u01/app/oraInventory/ContentsXML/inventory.xml(或手动编辑该文件,删掉含你新ORACLE_HOME路径的<home loc="..."></home>行) - 最后删指针本身:
rm -f /etc/oraInst.loc - 确保
oinstall组对新 inventory 路径有写权限:chown -R oracle:oinstall /u01/app/oraInventory
Windows 下等效操作常被漏掉
Windows 没有 /etc,但 orainst.loc 文件位置分散,且安装器可能从多个位置读取:
- 常见路径:
C:\Program Files\Oracle\Inventory\orainst.loc、C:\oracle\oraInventory\orainst.loc、甚至用户临时目录下 - 用 Everything 或
dir /s orainst.loc全盘搜索,别只删一个 - 删完后,务必清空
%ORACLE_BASE%\cfgtoollogs和%TEMP%下的oui日志缓存,否则 OUI 可能复用旧状态
密码本身也要过四关,但仅在 inventory 干净后才生效
inventory 清理干净后,OUI 才会执行密码校验。Oracle 19c 沿用 11g 起的硬性规则,缺一不可:
- 长度 ≥ 8 字符
- 至少 1 个大写字母(
A-Z) - 至少 1 个小写字母(
a-z) - 至少 1 个数字(
0-9)和 1 个 ASCII 特殊字符(!@#$%^&*()_+-=[]{}|;':",./?) - 必须以字母开头(不能是数字或符号)
- 只允许字母、数字、
_、$、#,禁用 Oracle 关键字(如sys、password)
示例合格密码:Db#19cAdmin2026(15位,含大小写、数字、特殊符,以字母开头);123Abc! ❌ 失败——开头是数字。
真正容易被忽略的是:inventory 清理不彻底时,无论你怎么调密码,日志里都看不到 validating password complexity 这类行——说明根本没走到那步。先砍指针,再调密码,顺序不能反。











