【Oracle】卸载Oralce时deinstall.bat闪退的一种解决办法

声明:本方法仅适用于操作系统环境变量 path 被清空或者设置出错导致的错误。

 

1. 问题现象

双击或者在CMD中执行该bat文件,总是出现 

  1. Oracle卸载时 deinstall.bat窗口一闪而过
  2. Oracle卸载时 deinstall.bat闪退
  3. Oracle卸载时出现Can't open perl script "XXXXXX":No such file or directory

  4. Oracle卸载时出现 CMD命令:不是内部或者外部命令也不是可运行的程序或批处理文件

 

2. 解决办法

操作系统的环境变量出错。在系统环境变量 path 内增加如下内容,注意是追加,不是清空原来的 内容,而是追加:

;%SystemRoot%;%SystemRoot%\system32;%SystemRoot%\System32\Wbem;

不知道哪个天杀的智障,把系统环境变量给删空了。

 

3. 原因

耗费一下午时间才找出原因。由于完全没有头绪,我便逐个打开bat文件和pl文件,进行源码级别的打桩测试。

从 deinstall.bat 到 bootstrap.bat,再到 startup.bat,还有 问题的最关键:bootstrap.pl 这个perl 脚本。

闹了半天,bootstrap.pl 脚本中的 xcopy 命令根本没有执行,导致 deinstall.pl 根本就没有复制到 %TEMP%目录里面去。而 xcopy 为啥没执行?原来 丫的 我的操作系统环境变量 里面啥也没有,连执行 CMD命令都是 “不是内部或外部命令”!

至此,我才醒悟,是我电脑环境变量的问题。果然,按步骤2的解决办法设置后,cmd,xcopy 均可正常使用。这样 deinstall.bat 才能将它依赖的 OH/deinstall 和 OH/jdk 复制到  Bootstrap 目录里面去!

 

4. 分析

既然阴差阳错的看了边脚本,便把 oracle deinstall.bat 的大概流程记录于此,也算是网络上的第一篇,供大家参考。

以下内容中 OH 表示  Oracle_HOME。

版本:11.2.0.1 (可能,懒得查了。各个版本有差异)/Windows Server 2008R2

目录:ORACLE_HOME\deinstall

 

1. deinstall.bat 

  1. 在 %TEMP% 下创建新文件夹,作为 %bootstrapdir%。
  2. 调用 utl/bootstrap.bat
  3. 调用 %TEMP%\startup.bat

 

案例说明:

%TEMP%:操作系统自有变量,可在CMD中使用 echo %TEMP% 查看。

%bootstrapdir% 一般是 C:\Users\Admixxxx\AppData\Local\Temp\1\OraDeinstall周一-06-22_18-42-08 。其中06-22是月日,18 42 08是时分秒。

 

2 .utl/bootstrap.bat

  1. 执行 bootstrap.pl 脚本
  2. 将 utl\startup.bat 和 utl\cleanup_bootstrap.bat 复制到 %TEMP% 目录中。

 

3.bootstrap.pl

  1. 复制 OH\deinstall 和 OH\jdk 目录下的全部内容 到   %bootstrapdir% 中。
  2. 验证文件权限
  3. 验证所需文件齐备

 

4. %TEMP%\startup.bat

  1. 执行 %bootstrapdir%\deinstall.pl 
  2. 进入用户交互,逐步卸载Oracle

 

5. 总结

最关键的卸载脚本是 Perl脚本 deinstall.pl。之所以用 perl 脚本,个人揣测是上个世纪遗留的吧,动不得,便沿用至今了。

 

6. 感想

因为对Oracle卸载复杂而产生逆反心理,觉得问题肯定出在Oracle的安装过程,开始猜测是安装路径有中文,但并不是。最后发现其实并不是Oracle有什么问题,是我电脑操作系统的环境变量有问题。连CMD ,XCOPY等命令都无法执行。

没有关注错误反馈,反而总是想沿着自己的(错误)想法寻找原因。本末倒置。

宛如智障。

 

如果你也遇到问题,欢迎留言交流。

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qilei2010

送我一张彩票中了平分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值