shutdown immediate失败时应强制杀进程(如pmon、smon)→清理共享内存(ipcrm -m)→root删除/etc/oratab和/orainst.loc→清空orainventory及/usr/local/bin相关脚本,四步缺一不可。

shutdown immediate 失败时怎么停库?
如果 sqlplus / as sysdba 连不上,或执行 shutdown immediate 卡住、报 ORA-01034 / ORA-27101,说明实例没起来,或共享内存段残留。此时不要硬等,直接查进程:ps -ef | grep ora_。重点杀掉 ora_pmon_、ora_smon_、ora_mman_ 这类核心后台进程(用 kill -9)。注意别误杀系统级进程(比如 oraagent.bin 属于 Grid Infrastructure,单实例通常没有)。杀完再确认 ipcs -m 是否还有 Oracle 的共享内存段——有就用 ipcrm -m <shmid></shmid> 清掉。
/etc/oratab 和 /etc/oraInst.loc 必须 root 删除
这两个文件是 Oracle 安装的“锚点”,不删干净,下次跑 runInstaller 会读到旧路径,报 ORA-27125 或提示 “Home already exists”。常见错误是切到 oracle 用户去删,权限不够,删了也白删(实际没生效)。必须用 root 执行:
rm -f /etc/oratab rm -f /etc/oraInst.loc
删完立刻验证:cat /etc/oratab 应该报 “No such file”,不是空行。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
oraInventory 目录容易漏删,且位置不固定
/u01/app/oraInventory 是默认路径,但实际要看 /etc/oraInst.loc(如果还没删)或历史安装日志。它里面存着所有 Oracle 产品的安装记录,哪怕只跑过一次 runInstaller 就写进去了。deinstall 脚本不会动它,必须手动 rm -rf。还要顺手检查:$ORACLE_BASE/oraInventory、$ORACLE_HOME/inventory,有些半途失败的安装会在这些位置留嵌套 inventory。删之前建议先 ls -la 确认内容,避免误删其他软件的 inventory。
/usr/local/bin 下的 oraenv/dbhome/coraenv 必须清理
这三个脚本是安装时复制过去的,卸载后仍存在。用户一旦执行 oraenv,就会加载已不存在的 $ORACLE_HOME,导致后续 sqlplus 报 ORA-12162 或直接找不到二进制文件。删除命令必须带 -f:
rm -f /usr/local/bin/oraenv rm -f /usr/local/bin/dbhome rm -f /usr/local/bin/coraenv
删完运行 which oraenv,应无输出;再开个新 shell,确认 $ORACLE_HOME 是空的——如果还显示旧路径,说明 ~/.bash_profile 或 /etc/profile 里硬编码了,得手动删掉那行。
ipcs -m 检查和 /usr/local/bin 清理,而这俩恰恰是重装后连接失败的高频原因。










