Download patches like a pro – AutoUpgrade

In an article published in July 2024, I taught you how to utilize getMOSPatch to download patches without having to access the My Oracle Support website. Even though AutoUpgrade provided a comparable option, I didn’t think about it because I thought it was a little bit limited.

It is now 2026, and AutoUpgrade has experienced major improvements, making it an appropriate moment for reviewing it and comparing it to getMOSPatch. Let’s have a look.

Scenario

We want to apply the most recent Release Update (23.26.1) in our Oracle 26ai installations, together with the recommended patches and the most recent OPatch for Linux, in accordance with the following list:

38743961Database Release Update 23.26.1.0.0 (GOLD IMAGE)
38842609Datapump Bundle Patch 23.26.1.0.0
37393792ORA-12850 reported after applying DBRU on first node
6880880OPatch 12.2.0.1.49 for DB 23.0.0.0.0 (Jan 2026)

getMOSPatch

Since only one-offs are linked to RU 23.26.1 and the remaining patches are related to 26ai itself rather than RU, two calls to getMOSPatch will be necessary, each with a different  regexp value:

java -jar getMOSPatch.jar \
MOSUser=enrique@gmail.com \
MOSPass=Oracle_4U$ \
stagedir="/stage" \
patch=38743961,6880880 \
regexp=.*230000.* \
platform=226P download=all

We're going to download patches for the following Platforms/Languages:
 226P - Platform 226P

Processing patch 38743961 for Platform 226P and applying regexp .*230000.* to the filenames:
 1 - p38743961_230000_Linux-x86-64.zip
 Enter Comma separated files to download: all
 All files will be downloaded because download=all was specified.

Processing patch 6880880 for Platform 226P and applying regexp .*230000.* to the filenames:
 1 - p6880880_230000_Linux-x86-64.zip
 Enter Comma separated files to download: all
 All files will be downloaded because download=all was specified.

Downloading all selected files:
 Downloading p38743961_230000_Linux-x86-64.zip: 2294MB at average speed of 111050KB/s - DONE!
 Downloading p6880880_230000_Linux-x86-64.zip: 24MB at average speed of 106148KB/s - DONE!
java -jar getMOSPatch.jar \
MOSUser=enrique@gmail.com \
MOSPass=Oracle_4U$ \
stagedir="/stage" \
patch=37393792,38842609 \
regexp=.*2326100.* \
platform=226P download=all

We're going to download patches for the following Platforms/Languages:
 226P - Platform 226P

Processing patch 37393792 for Platform 226P and applying regexp .*2326100.* to the filenames:
 1 - p37393792_2326100DBRU_Linux-x86-64.zip
 Enter Comma separated files to download: all
 All files will be downloaded because download=all was specified.

Processing patch 38842609 for Platform 226P and applying regexp .*2326100.* to the filenames:
 1 - p38842609_2326100DBRU_Generic.zip
 Enter Comma separated files to download: all
 All files will be downloaded because download=all was specified.

Downloading all selected files:
 Downloading p37393792_2326100DBRU_Linux-x86-64.zip: 0MB at average speed of 6000KB/s - DONE!
 Downloading p38842609_2326100DBRU_Generic.zip: 2MB at average speed of 38743KB/s - DONE!

AutoUpgrade

We need a Wallet where the credentials for connecting to My Oracle Support are saved. As a first step, we are going to build a configuration file, which we will name download.cfg:

global.global_log_dir=/stage/autoupgrade/log
global.keystore=/stage/autoupgrade/keystore
global.folder=/stage/autoupgrade/patches

patch1.patch=RU:23.26.1,OPATCH,DPBP,37393792
patch1.platform=LINUX.X64

It includes the Wallet’s location (line 2), the directory where patches will be downloaded (line 3), the patches that are required (line 5), and the platform (line 6).

Now we need to create the Wallet, so we make an initial call to AutoUpgrade, with load_password:

java -jar autoupgrade.jar \
-config download.cfg \
-patch -load_password

Processing config file ...

Starting AutoUpgrade Patching Password Loader - Type help for available options
Creating new AutoUpgrade Patching keystore - Password required
Enter password:
Enter password again:
AutoUpgrade Patching keystore was successfully created

MOS> add -user enrique@gmail.com
Enter your secret/Password: 
Re-enter your secret/Password: 
MOS> save
Convert the AutoUpgrade Patching keystore to auto-login [YES|NO] ? YES
MOS> exit

AutoUpgrade Patching Password Loader finished - Exiting AutoUpgrade Patching

We enter the Wallet password (lines 9 and 10), then enter the My Oracle Support login and password (lines 13 to 15).

After saving (line 16), we are prompted to choose whether to auto-login (line 17), which we select to avoid entering the Wallet password.

$ ls -la /stage/autoupgrade/keystore
total 8
drwx------ 2 oracle oinstall  90 Feb  1 10:57 .
drwxr-xr-x 5 oracle oinstall  87 Feb  1 10:56 ..
-rw------- 1 oracle oinstall 525 Feb  1 10:57 cwallet.sso
-rw------- 1 oracle oinstall   0 Feb  1 10:57 cwallet.sso.lck
-rw------- 1 oracle oinstall 413 Feb  1 10:57 ewallet.p12
-rw------- 1 oracle oinstall   0 Feb  1 10:57 ewallet.p12.lck

With the Wallet setup complete, we invoke AutoUpgrade a second time, this time to execute the actual download, with -mode download:

java -jar autoupgrade.jar \
-config download.cfg \
-patch -mode download

AutoUpgrade Patching 25.6.251016 launched with default internal options
Processing config file ...
Loading AutoUpgrade Patching keystore
AutoUpgrade Patching keystore is loaded

Connected to MOS - Searching for specified patches

------------------------------------------------------------------------
Downloading files to /stage/autoupgrade/patches
------------------------------------------------------------------------
DATABASE RELEASE UPDATE 23.26.1.0.0 (GOLD IMAGE)
    File: p38743961_230000_Linux-x86-64.zip - VALIDATED

DATAPUMP BUNDLE PATCH 23.26.1.0.0
    File: p38842609_2326100DBRU_Generic.zip - VALIDATED

OPatch 12.2.0.1.49 for DB 23.0.0.0.0 (Jan 2026)
    File: p6880880_230000_Linux-x86-64.zip - VALIDATED

ORA-12850 REPORTED AFTER APPLYING DBRU ON FIRST NODE
    File: p37393792_2326100DBRU_Linux-x86-64.zip - VALIDATED
------------------------------------------------------------------------

Comparative evaluation

Although both utilities achieved the download goal, there are some obvious distinctions:

getMOSPatchAutoUpgrade
Credentials must be provided in each requestCredentials reside in a Wallet
It is required to know the ID of each patchWe do not need the ID of known patches such as RU, OJVM, OPATCH, etc
If a patch exists for multiple RUs, you can specify which one you need using regexpIf a patch exists for multiple RUs, you can specify which one you need with RU:x.y
The patch is downloaded even if it is already present in the specified folderThe patch is downloaded only when it is not present in the specified folder
Only the listed patches are downloaded, without considering dependenciesWhen downloading a patch, the associated RU is also downloaded, even if we don't need it

Conclusions

AutoUpgrade has much improved to the point where it will be my main tool for downloading patches, but, since getMOSPatch does not require me to download the related RU, I will likely use it for one-off patches.

I won’t need to use getMOSPatch if a later version of AutoUpgrade lets us indicate the RU for which we want the one-off, using something like patch=37393792:23.26.1.

As AutoUpgrade is becoming increasingly complex, I would like to take this opportunity to mention the exceptional work of Marcus Vinicius, who has created the AutoUpgrade Composer application; this greatly facilitates the process of creating the necessary configuration file.

I suggest the following readings to supplement what has been covered here:

Did you find this article interesting, did you have any doubts, do you want to suggest a topic to cover, leave me your comments or contact me me right now!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Related Posts

Hide column contents
Learn how to use Real Application Security to implement the masking of column contents dynamically and without having to modify your code.
new: dbms_sqldiag.report_sql
Starting with Oracle 19.28, the use of IF [NOT] EXISTS and the function DBMS_SQLDIAG.REPORT_SQL is now available. Learn all about them.
email ACL rules
Have you just upgraded or implemented new functionality and encountered the ORA-24247 error? Learn how to resolve it in one simple step.

Need Help?

Fill in these details and I will be in touch as soon as possible.