必须用响应文件静默卸载:deinstall.bat -paramfile deinstall.rsp -silent是唯一可靠方式,因交互式流程在inventory损坏时会静默退出;响应文件需准确填写ORACLE_HOME、ORACLE_BASE等路径,且必须置于%ORACLE_HOME%deinstall esponse下,末尾无斜杠、含空格须加英文双引号。

deinstall.bat -paramfile 必须用响应文件,不能靠交互式卸载
Oracle 19c 的 deinstall.bat 在 Windows 上默认走交互式流程,但一旦 inventory 损坏、服务未停或环境变量错位,它会直接退出,不报错也不提示——你看到的只是黑窗一闪而过。静默模式不是“可选优化”,而是唯一能绕过校验失败的可行路径。
关键前提是:你必须提供完整、准确的响应文件,且 deinstall.bat 必须在正确的 %ORACLE_HOME%deinstall 目录下运行。它不读取系统级配置,只认当前路径下的 response 子目录和 comps.xml 状态。
-
deinstall.bat -checkonly报 “No database instance found” 或 “Listener not detected” 时,说明 inventory 已失效,此时交互式流程必然卡死,必须切响应文件模式 - 响应文件必须是
deinstall.rsp(不能是 .tmpl 后缀),且需手动填写真实路径:ORACLE_HOME="C:pporacleproduct9.0.0dbhome_1"、ORACLE_BASE="C:pporacle"、INSTALL_LOCATION="C:pporacleproduct9.0.0dbhome_1" - 若
ORACLE_HOME路径含空格或括号(如C:Program FilesOracle),必须用英文双引号包裹,否则解析失败
响应文件填错会导致 silent 模式静默失败
静默不是“不报错就成功”,而是把错误吞掉后直接退出。常见填错项包括:
-
ORACLE_HOME值写成C:pporacleproduct9.0.0dbhome_1(末尾斜杠)→ 脚本内部拼接路径出错,找不到inventory -
ORACLE_BASE填成C:pp(漏了oracle)→ 卸载后残留C:pporacle下的cfgtoollogs和diag目录 - 未设置
SELECTED_LANGUAGES=en,en_US→ 部分日志路径生成异常,后续清理注册表时找不到对应键名 -
DEINSTALL_INVENTORY项留空或填错 → 脚本跳过 inventory 清理,重装时触发INS-35955
建议用 deinstall.bat -paramfile deinstall.rsp -checkonly 先验证响应文件语法和路径可达性,再执行正式卸载。
静默卸载后必做三件事,否则重装必报错
deinstall.bat -silent 只清 %ORACLE_HOME% 下的二进制、监听配置、数据库实例元数据,它完全不碰注册表、环境变量、用户目录、ODBC 驱动节——这些全靠你手动补位。
- 删注册表四类位置:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices(所有 Oracle/Ora/Orcl 开头服务)、HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLogApplication(Oracle 日志源)、HKEY_CLASSES_ROOT(Ora* 和 EnumOra CLSID)、HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INI(除 Microsoft ODBC for Oracle 外所有 Oracle 驱动节) - 删环境变量:
PATH中所有含ORACLE_HOME、sqlplus、ojdbc的路径;CLASSPATH中含ojdbc的条目 - 删用户目录残留:
C:ProgramDataOracle、C:Users\AppDataLocalTemp中时间戳匹配安装期的临时文件夹、C:Users\AppDataRoamingMicrosoftWindowsStart MenuProgramsOracle*
为什么不能先删目录再跑 deinstall.bat
很多人图快,直接 del /q /f C:pporacleproduct9.0.0dbhome_1,结果导致后续重装失败。原因很实在:
-
deinstall.bat依赖%ORACLE_HOME%deinstall esponsedeinstall.rsp.tmpl和inventoryContentsXMLcomps.xml生成清理逻辑,目录一空,脚本连模板都读不到,直接退出 - inventory 注册信息仍留在
C:Program FilesOracleInventory(或%ALLUSERSPROFILE%OracleInventory),重装 setup.exe 会检测到“该主目录已注册”,抛INS-35955 - Windows 服务注册表项(如
OracleServiceORCL)没被清除,新装监听器启动时因端口冲突或服务名重复失败
真正安全的顺序是:停服务 → 运行 deinstall.bat -paramfile ... -silent → 手动删注册表和环境变量 → 最后删物理目录。任何跳步都会让下一次安装变成调试现场。


















