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:

Autoupgrade : How to download patches with Autoupgrade ? (KB790461)
AutoUpgrade-Composer: Downloading Patches with Download Mode
Downloading Oracle Patches using CLI with AutoUpgrade Patching

Recent Posts

if there is an unusable index when analyze is executed, expect ORA-1502
How an error caused by running analyze on a table with unusable indexes is solved with regular expressions and dbms_stats.
We need to add new disks to Disk Group
Are you about to add, drop or replace disks in ASM? You may not be doing it in the most efficient way. Learn how.
Case sensitive comparison
AutoUpgrade fails if the server names are in uppercase, and you are working with an RAC One Node database.
OEM shows incorrect value for used space
What to do when Oracle reports an incorrect value for the space used in Fast Recovery Area.
DG broker using wallet
Learn how to resolve and avoid the ORA-01017 error when you have Oracle Data Guard with wallet implemented.
enq: TX - row lock contention
Learn how to identify the row involved in the occurrence of the wait even "enq: TX - row lock contention"

Need Help?

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