Oracle 19c 的 deinstall 脚本不随安装包部署,需从官网单独下载 linuxx64_19c_deinstall 工具包解压获得;直接在 $ORACLE_HOME/deinstall 下查找会失败。
deinstall脚本在哪,能不能直接运行
oracle 19c 的 deinstall 脚本不在 $oracle_home/deinstall 下——它根本没随安装包一起部署。你得从 oracle 官网单独下载对应版本的 deinstall 工具包(通常叫 linuxx64_19c_deinstall),解压后才有可执行的 deinstall。直接在已安装的 $oracle_home 里找,只会看到空目录或报错 no such file or directory。
运行前必须满足三个硬性条件:
-
ORACLE_HOME环境变量必须指向你要卸载的完整路径,且该目录存在、可读 - 当前用户需是原安装用户(通常是
oracle),不能用 root 直接跑(会卡在权限校验) - 数据库实例必须已关闭:
sqlplus / as sysdba→shutdown immediate,否则deinstall会拒绝继续
静默模式下必须传哪些参数才不中断
静默卸载靠 -paramFile 驱动,不是靠交互式问答跳过。缺参数或值非法,deinstall 会直接退出并打印类似 ERROR: Parameter ORACLE_HOME is not set 的提示,而不是继续。
最简可用的参数文件(例如 /tmp/deinstall.rsp)至少要包含:
-
ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1(必须绝对路径,末尾不加斜杠) -
ORACLE_BASE=/u01/app/oracle(必须与安装时一致,否则残留日志和诊断目录不会清理) -
INVENTORY_LOCATION=/u01/app/oraInventory(默认位置,若改过需如实填写) -
silent=true(显式声明,避免因环境变量干扰)
执行命令:./deinstall -paramFile /tmp/deinstall.rsp -logDir /tmp/deinstall_logs。注意 -logDir 必须提前创建且有写权限,否则日志写入失败会导致整个流程中止。
卸载后还有残留?重点检查这三类路径
deinstall 脚本本身不清理以下三处,属于设计如此,不是失败:
-
/etc/oratab:该文件仅注释掉对应条目(行首加#),不会删除整行。手动删或用sed -i '/19c/d' /etc/oratab -
/var/opt/oracle/oraInst.loc:只在 inventory 清理完后移除,但若之前用过多个 Oracle 版本,这里可能还存着旧路径,需确认内容是否只剩有效项 - 监听器配置残留:
$ORACLE_HOME/network/admin/listener.ora和tnsnames.ora会被删,但若你在$TNS_ADMIN指向了其他位置(比如/etc),那些文件得自己删
另外,deinstall 不碰操作系统用户和组(oracle 用户、oinstall/dba 组),也不删 /u01/app/oracle 下的 diag、fast_recovery_area 等独立挂载点目录——这些得按实际存储规划决定是否手动清理。
为什么 runInstaller -deinstall 不能替代 deinstall 脚本
runInstaller -deinstall 是老版本(11g/12c)遗留方式,19c 中它已被废弃。强行运行会报错:Command line option '-deinstall' is not supported for this product。Oracle 明确将卸载逻辑完全剥离到独立 deinstall 工具中,原因很实际:卸载需要访问安装时的原始元数据(比如 inventory 注册信息、组件清单),而 runInstaller 本身不带这些上下文。
更关键的是,deinstall 会调用 OPatch 自动回滚所有已打补丁,而 runInstaller 完全不处理 patch 状态。如果 19c 上打过 RU 或 DBBP,跳过 deinstall 直接删目录,下次装同版本时可能因 inventory 冲突失败。
真正容易被忽略的是:deinstall 日志里有一行 Removing Oracle Inventory...,它实际分两步——先清 inventory 中的该 home 条目,再删 oraInventory/ContentsXML/inventory.xml 里的引用。如果中途断电或 kill 进程,inventory 可能处于半清理状态,后续装新库会报 inventory location is not valid,这时得手动修复 oraInst.loc 和 inventory.xml。











