oracle在windows上卸载不干净是重装失败的最常见原因,需依次停止所有oracle服务、用universal installer卸载组件但保留主目录、彻底清理注册表相关键值、手动删除残留文件与环境变量,并重启系统后方可重装。

Oracle在Windows上卸载不干净,是重装失败的最常见原因——不是安装包有问题,而是残留的服务、注册表项、环境变量或文件目录干扰了新安装流程。直接运行卸载程序远远不够。
停止所有Oracle服务再动手
服务没停,后续操作会失败或被跳过。必须先确保所有Oracle相关进程已终止:
- 按
Win + R,输入services.msc,回车打开服务管理器 - 滚动查找所有以
Oracle开头的服务(如OracleServiceORCL、OracleOraDb11g_home1TNSListener、OracleDBConsoleorcl等) - 逐个右键 → “停止”,确认状态变为“已停止”
- 特别注意:
OracleMTSRecoveryService和OracleRemExecService也需停用,否则注册表项可能被锁定无法删除
用Universal Installer卸载但别删主目录
Oracle自带的卸载工具只负责“已注册组件”,它默认不会删掉主目录(OraDb11g_home1),这是故意设计——但用户常误勾它,导致后续重装报错 [INS-32025] 所选安装与指定oracle主目录中已安装的软件冲突:
- 从开始菜单打开
Oracle Installation Products→Universal Installer - 点击“卸载产品”,等待加载“产品清单”
- 点“全部展开”,**只勾选除
OraDb11g_home1(或类似命名的主目录项)以外的所有条目** - 点击“删除”,弹窗选“是”,等进度完成
- 关闭窗口——此时
OraDb11g_home1仍存在,但内部已清空,留作后续手动清理
注册表清理要分路径、别漏关键项
注册表残留是重装失败的隐形杀手,尤其 CurrentControlSet\Services 下的服务项和 SOFTWARE\ORACLE 下的配置信息,漏删一个就可能导致新服务无法注册:
- 按
Win + R输入regedit,以管理员身份运行(否则部分键可能无权限删除) - 依次定位并**彻底删除以下路径下所有 Oracle 相关项**:
–HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
–HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services(删所有Oracle*键)
–HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application(同上)
–HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services(Win10/Win11 中常有重复备份项)
–HKEY_CLASSES_ROOT下所有以Ora、Oracle、Orcl、EnumOra开头的项 - 注意:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs中的 Oracle 快捷方式键也要删,否则开始菜单残留图标会触发错误调用
删文件、清环境、重启后再动安装包
很多用户删完注册表就立刻重装,结果卡在“检测到旧版本”——因为文件和环境变量还在起作用:
- 手动删除以下所有路径(即使提示“访问被拒绝”,也先跳过,重启后再删):
–C:\app(或你当初设的ORACLE_BASE,如D:\app)
–C:\Program Files\Oracle和C:\Program Files (x86)\Oracle
–C:\Oracle(老版本常用根目录)
–%TEMP%和%USERPROFILE%\AppData\Local\Temp下所有ora*.log、deinstall*文件 - 进“系统属性 → 高级 → 环境变量”,在
PATH和CLASSPATH中**整段删除所有含oracle或路径指向dbhome_1的条目**;同时删掉ORACLE_HOME、TNS_ADMIN、NLS_LANG这些变量(哪怕值为空) - **必须重启系统**——不重启,Windows服务缓存、Shell扩展、DLL加载状态都不会刷新,删了也白删
- 重启后,再检查一次
services.msc和任务管理器,确认无 Oracle 进程残留,才运行新 setup.exe
最容易被忽略的是 ControlSet001\Services 路径和服务名大小写混用(比如注册表里存的是 oracleserviceORCL,而服务管理器显示为 OracleServiceORCL),手动删时得用搜索功能全盘扫一遍;另外,deinstall.bat 脚本在某些版本里反而会创建新冲突项,不如不用,靠人工清理更可控。











