Oracle静默卸载后需彻底清理oraInst.loc、注册表Oracle键值及临时文件,否则安装器仍读取旧inventory路径导致报错;必须同步删除配置文件、注册表项和缓存,验证无警告才算清理完成。
静默卸载后 inventory_loc 仍被 installer 读取
oracle 安装器不看目录是否存在,只认 /etc/orainst.loc(linux)或 c:\program files\oracle\inventory\orainst.loc(windows)里写的路径。哪怕你用 deinstall.bat -silent 清掉了所有 $oracle_home,只要这个文件还在,installer 就会去读它指向的 inventory_loc,然后报 ins-32035: unable to locate the central inventory 或直接卡在“检查中央清单”阶段。
实操建议:
- Linux 下先运行
cat /etc/oraInst.loc确认当前注册位置,别只盯着/u01/app/oraInventory猜 - Windows 下用 Everything 搜
orainst.loc,常见残留路径包括C:\oracle\、C:\Program Files\Oracle\、甚至C:\根目录 - 找到后,不要只删
ContentsXML子目录——必须连同整个orainst.loc文件一起删,否则 installer 重启后仍会加载旧路径
oraInventory 目录权限错乱导致 silent attachHome 失败
runInstaller -silent -attachHome 是重建 inventory 的唯一合法方式,但它对权限极其敏感:目录属主必须是 oracle 用户(Linux)或安装时用的 Windows 账户,权限不能是 777,必须是 755;否则 installer 会静默跳过并报 ORA-27125: unable to create shared memory segment 这类看似无关的错误。
实操建议:
- Linux 下清理后,用 root 执行
rm -f /etc/oraInst.loc,再用 oracle 用户执行rm -rf /path/to/old/oraInventory - 检查
~oracle/.oracle_inst.loc是否存在(某些 19c 补丁版本会写这里),一并删掉 - 重建前确认
$ORACLE_HOME已完全不存在,否则-attachHome会拒绝执行
Windows 注册表残留让 installer 认为 home 已注册
即使删光了所有文件和 orainst.loc,installer 仍可能报 INS-35955: database software home is already registered。这不是 inventory 问题,而是注册表里还留着硬编码的 home 路径记录,主要藏在:
实操建议:
- 删
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\inst_loc和KEY_WOW6432Node\Oracle\inst_loc(32 位兼容项) - 搜
ORACLE_HOME字符串,删所有含该值的键(尤其注意SYSTEM\CurrentControlSet\Services下服务的ImagePath值) - 删
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI中非 Microsoft 官方的 Oracle 驱动节,比如Oracle in OraDB19Home1
临时文件和用户级缓存干扰 installer 启动
installer 启动时会扫描 %TEMP%、%USERPROFILE%\AppData\Local\Temp、C:\ProgramData\Oracle 下的残留锁文件或日志,比如 OraInstall*.tmp、CVU_*、logs/inventoryActions*。这些文件不阻断安装流程,但会让 silent 模式下出现不可预测的超时或跳过步骤。
实操建议:
- Windows 下重启前清空
%TEMP%和C:\Users\%USERNAME%\AppData\Local\Temp\2(这是 Oracle 安装器默认用的二级临时目录) - Linux 下清掉
/tmp/OraInstall*、/tmp/CVU*、/tmp/ora* - 删
C:\ProgramData\Oracle\整个目录——它常被忽略,但里面存有跨用户共享的配置快照
真正干净的重装,不是“删得够多”,而是删对位置、删对顺序、删完立刻验证。inventory 本身可重建,但注册点(oraInst.loc)、注册表键、用户级缓存这三处任意漏一个,installer 就会回到老路。最省事的验证方式:运行 ./runInstaller -help 或 setup.exe -help,如果输出里没报任何 inventory 相关警告,说明环境已清到 installer 可接受的起点。


















