同一Linux机器安装Oracle12c与Oracle Forms遇安装卡顿问题求助
解决Oracle Forms安装卡在98%、查找旧Oracle_Home文件的问题
嘿,这个问题我之前帮好几个用户排查过,本质就是安装程序被旧Oracle_Home的残留信息干扰,导致路径识别混乱了。下面是一步步的解决办法,亲测在Fedora环境下有效:
1. 彻底清理旧Oracle环境变量
首先得把系统里指向旧12c R1 Home的环境变量全部清干净:
- 先检查当前环境变量,确认旧路径残留:
echo $ORACLE_HOME echo $PATH echo $LD_LIBRARY_PATH - 编辑你的shell配置文件(用bash的话就是
~/.bashrc,全局配置是/etc/profile),把所有和旧Oracle_Home相关的配置行注释掉,然后添加新的Fusion Infrastructure Home的配置:export ORACLE_HOME=/path/to/your/new/fusion_home export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH - 执行
source ~/.bashrc让配置立即生效
2. 清除安装程序的缓存和残留配置
Oracle安装程序会在临时目录和中央inventory里存旧信息,得彻底清理:
- 删除临时安装缓存:
sudo rm -rf /tmp/OraInstall* - 检查
/etc/oraInst.loc文件,确保里面的inventory_loc指向正确的inventory目录,inst_group设置为你的Oracle组(一般是oinstall)。如果之前的安装修改过这个文件,要确保它对应新Home的inventory。 - 打开
inventory_loc对应的目录下的ContentsXML/inventory.xml,检查里面的<HOME>条目:如果旧Home已经不需要了,可以删掉对应的条目;如果还要保留数据库,就确认新Home的条目优先级正确,避免安装程序优先读取旧路径。
3. 用干净环境启动安装程序
最好在完全干净的环境下启动Forms/Reports安装程序,避免旧环境变量干扰:
- 先关掉所有Oracle相关进程,包括旧数据库的监听、实例:
找到对应的进程后用ps -ef | grep oraclekill -9 <pid>杀掉(注意别误杀其他系统进程) - 用
env -i命令清除所有环境变量,只设置必要参数启动安装程序:
替换上面的路径为你实际的新Home路径和安装程序路径,env -i ORACLE_HOME=/path/to/your/new/fusion_home PATH=/usr/bin:/bin:/usr/sbin:/sbin DISPLAY=:0.0 /path/to/forms_reports_installer/runInstallerDISPLAY根据你的显示环境调整(如果是远程连接,可能需要先设置X11转发)
4. 临时应急:创建软链接(不推荐长期使用)
如果日志里明确显示找不到旧Home里的某个特定文件(比如libclntsh.so这类库文件),可以临时在新Home对应的目录下创建软链接指向旧Home的文件:
ln -s /path/to/old_oracle_home/lib/libclntsh.so /path/to/new_fusion_home/lib/libclntsh.so
这个办法能快速绕过错误,但还是建议从前面的步骤解决根源问题,避免后续出现其他兼容性问题。
问题根源说明
Oracle的安装程序严重依赖环境变量和中央inventory的配置来定位组件,当旧Oracle_Home的信息还残留在环境变量或者inventory中时,安装程序会错误地去旧路径查找依赖文件,导致进度卡在98%无法完成。
内容的提问来源于stack exchange,提问作者AboJo TheGreat
相关产品推荐
相关产品推荐

