如何回退一个失败的临时补丁的安装
应用:Oracle Universal Installer - Version: 1.0.0.0.50 to 1.0.0.0.99
现象
使用OPatch安装临时补丁的过程中,会返回以下错误:
在运用补丁过程中,OPatch出错
你想中止吗:
开始OPatch1.0.0.0.53,会有下面的内容:
回复“Y”将立即终止补丁安装,它不会保存任何更新的内存
回复“N”将继续更新内存,显示补丁已被申请
注释:在回复“Y”或“N”后,要回顾一下
Metalink 注释 312767.1 :如何回退一个失败的临时补丁的安装
你想停止吗?
回复 Y|N
更改
临时补丁被申请
原因
在安装临时补丁的过程中复制文件有错误,需要更新对象或者重新连接binaries
解决方案
使用下面选项来成功申请或者回退补丁。下面的步骤将移除补丁号1234567,用正确的补丁号代替
注释:OPatch 不会自动回退被更新的对象。在回退对象之前,重新运行OPatch 会毁坏rollback.sh 脚本
根据选项有多种解决方案来结束补丁的安装:
你想停止吗:
情境1:回复Y
运行回退脚本
% sh $ORACLE_HOME/.patch_storage/1234567/rollback_1234567 .sh
注释:若在OPatch里有未知的问题,rollback_1234567.sh可能会抛出类似下面的错误:
./rollback_5901872.sh[89]: System: not found.
./rollback_5901872.sh[97]: System: not found.
这些可以忽略,因为它们标记在脚本里
% sh $ORACLE_HOME/.patch_storage/1234567/1234567_make.txt
注释:如果申请是在重新连接阶段失败的话,只需运行1234567_make.txt。如果补丁申请是在重新连接之前终止的,就不会产生1234567_make.txt,并且也不需要重新连接
重新命名OPatch 备份目录
% mv $ORACLE_HOME/.patch_storage/1234567 $ORACLE_HOME/.patch_storage/1234567.orig
情境2:回复N:
使用OPatch回退补丁
% cd patch number
% opatch rollback -id patch number
情境3:rollback.sh被覆盖了
移动(不是移除)原始的备份目录
% mv $ORACLE_HOME/.patch_storage/1234567 $ORACLE_HOME
通过用no_inventory 和no_relink 选项来重新申请补丁,重建rollback.sh
% cd patch directory
% opatch apply -no_inventory -no_relink
复制回退,将脚本放置原始目录
% cp $ORACLE_HOME/.patch_storage/1234567/rollback_1234567.sh $ORACLE_HOME/1234567
% cp $ORACLE_HOME/.patch_storage/1234567/1234567_make.txt $ORACLE_HOME/1234567
把最初备份目录移动到$ORACLE_HOME/.patch_storage
% mv $ORACLE_HOME/.patch_storage/1234567 $ORACLE_HOME/1234567.rereun
% mv $ORACLE_HOME/1234567 $ORACLE_HOME/.patch_storage
*
运行回退脚本,运行指令
% sh $ORACLE_HOME/.patch_storage/1234567/rollback_1234567.sh
注释:因为未知的问题,OPatch, rollback_1234567.sh可能会抛出类似下面的错误:
./rollback_5901872.sh[89]: System: not found.
./rollback_5901872.sh[97]: System: not found.
这些可以忽略,因为它们标记在脚本里
% sh $ORACLE_HOME/.patch_storage/1234567/1234567_make.txt
重命名OPatch 备份目录
% mv $ORACLE_HOME/.patch_storage/1234567 $ORACLE_HOME/.patch_storage/1234567.orig
在补丁4321390下的 "rempatch.pl"实用程序能用来将补丁从内存中移除。 "rempatch.pl"只能作为最后手段,因为ORACLE_HOME文件不能恢复到原始状态。同时也注意补丁密码是受保护的