A friend of mine was working to apply the July 2013 PSU, and had to rollback two one off patch conflicts. Since the instance was cloned from production, OPatch was failing with this error…
$ $ORACLE_HOME/OPatch/opatch rollback -id 12834800
The patch should be applied/rolled back in '-all_nodes' mode only.
Converting the RAC mode to '-all_nodes' mode.
Prerequisite check "CheckRollbackSid" failed.
Patch ID: 12834800
The details are:
The specified online patch(es) are installed on the following Database Instances (SIDs) "xyzprod".
The SIDs given for rollback are not the same. OPatch cannot continue.
[ Error during Prerequisite for rollback Phase]. Detail: RollbackSession failed during prerequisite checks: Prerequisite check "CheckRollbackSid" failed.
Log file location: /u01/app/oracle/xyzdev/220.127.116.11/cfgtoollogs/opatch/12834800_Oct_23_2013_16_37_13/rollback2013-10-23_16-37-13PM_1.log
Recommended actions: Please look at log file to locate the prerequisite that failed. Invoke 'opatch apply -report' or 'opatch rollback -report'.
OPatch failed with error code 30
So, though we are trying to rollback the conflicting patch from dev instance, the inventory still has reference to prod instance, where the oracle home was cloned from… Adding the -connectString xyzdev:sys:passsword: did not work either….
I did not know until I reviewed the OPatch documentation, it has a lot of cool options in 11gR2… See documentation.
Thanks to Oracle support, for identifying the right option to remove the patch from the inventory.
$ORACLE_HOME/OPatch/opatch rollback -id 12834800 -no_sysmod -connectString xyzdev:sys:passsword: -local
$ORACLE_HOME/OPatch/opatch rollback -id 13004894 -no_sysmod -connectString xyzdev:sys:passsword: -local
Now, able to apply the PSU without issue…