I’m a strong advocate for out-of-place patching, and I can see that many of my blog readers are interested in that topic as well. Thank you for that!
But a reader notified me about a specific issue that occurs during out-of-place patching of Oracle Grid Infrastructure 19c. The issue occurs when using OPatchAuto as well as SwitchGridHome.
Normally, I recommend creating a new Oracle home using the base release (so 19.3.0) and then applying the latest Release Update on top:
# Unzipping base release, 19.3.0
unzip -oq /u01/software/LINUX.X64_193000_grid_home.zip
# Install and patch Oracle home
./gridSetup.sh -ignorePrereq -waitforcompletion -silent \
-applyRU ...
However, that fails on AIX:
Preparing the home to patch...
Applying the patch /u01/software/36916690/36916690/36917416...
OPatch command failed while applying the patch. For details look at the logs
from /u01/app/19.25.0/grid/cfgtoollogs/opatchauto/.
The log file has a little more detail:
DeleteAction : Destination File ''/u01/app/19.25.0/grid/perl/bin/perl'' is not writeable.
Copy Action: Destination File ''/u01/app/19.25.0/grid/perl/bin/perl'' is not writeable.
The Solution
There is already a MOS note that describes a potential workaround:
Out of place (OOP) patching of 19c Release Update (RU) fails on AIX (Doc ID 2948468.1)
But the reader leaving the comment asked for a few more words.
My Words
First, you should continue to use out-of-place patching despite the above issue.
Second, instead of using the base release (19.3.0) as the basis for any new Oracle home, you must create a new base release. One that doesn’t contain the error that leads to the above issue.
- On a non-prod system, create a brand-new Grid Infrastructure installation using the base release (19.3.0).
- Use in-place patching to patch it to the latest Release Update (currently 19.25.0). You need to add a few parameters to the
opatchautocommand:<path_to_temp_home>/OPatch/opatchauto \ apply <path-to-patch> \ -binary \ -oh <path_to_temp_home> \ -target_type cluster - Create a gold image of this 19.25.0 Oracle home.
export NEW_GRID_HOME=/u01/app/19.25.0/grid $NEW_GRID_HOME/gridSetup.sh -createGoldImage \ -destinationLocation $GOLDIMAGEDIR \ -name gi_gold_image.zip \ -silent - You now have a new base release. It is almost as pristine as the 19.3.0 base release. It just contains the additional Release Update (19.3.0 + 19.25.0).
- When you need to patch another system, use out-of-place patching using SwitchGridHome. But instead of using the base release 19.3.0, you use your new gold image that is already patched to 19.25.0.
#Don't do this #unzip -oq /u01/software/LINUX.X64_193000_grid_home.zip #Do this unzip -oq /u01/software/gi_gold_image.zip - When you install the using
gridSetup.shyou don’t have to apply the Release Update because the gold image contains it already. You can still apply any one-offs you need../gridSetup.sh -ignorePrereq -waitforcompletion -silent \ -applyOneOffs <path_to_one_offs> \ ...
- There are no other changes to the procedure.
The issue is fixed in bug 34962446. However, I doesn’t seem to be available in 19c, so you have to repeat the above process for every Release Update.
If you still run into patching the Perl component, take a look at this MOS note:
Final Words
-
Is it a viable workaround? Yes, I believe so. There’s a little more work to, on the other hard, you’ve now started to use gold images, which is a huge advantage.
-
If you continue patching in-place or out-of-place using OPatchAuto, be sure to clean up the Oracle home from time to time.
-
The issue occurs starting with Release Update 19.18 because that’s where Oracle started to add patches to Perl in the Oracle home.
-
Thanks to Axel Dellin for helping me with some details.
You should not let this little bump on the road prevent you from using out-of-place patching.
Happy Patching
