Are There Any New Patches?

The other day, a customer showed me their more-or-less fully automated patching process. Part of the process involved:

  • A nightly job that starts AutoUpgrade to download the latest Release Update and MRP.
  • If AutoUpgrade downloads a new patch, the job builds a new gold image.
  • Next, it deploys the new gold image to test servers.
  • Then, notifies the DBAs, so they can start testing when they arrive at the office in the morning.

That’s such a cool process. I’m a huge fan.

But one question came up:

We run AutoUpgrade through an Ansible runbook. How can we know which patches are new?

Parsing Console Output

When downloading patches, AutoUpgrade prints the patch description and file name to the console along with a status.

------------------------------------------------------
Downloading files to /Users/doverbyh/Downloads/patches
------------------------------------------------------
DATABASE RELEASE UPDATE 19.32.0.0.0
    File: p39472050_190000_Linux-x86-64.zip - LOCATED

OPatch 12.2.0.1.53 for DB 19.0.0.0.0 (Sep 2026)
    File: p6880880_190000_Linux-x86-64.zip - LOCATED

DATAPUMP BUNDLE PATCH 19.32.0.0.0
    File: p39657094_1932000DBRU_Generic.zip - LOCATED

OJVM RELEASE UPDATE 19.32.0.0.0
    File: p39222882_190000_Linux-x86-64.zip - LOCATED

DATABASE MRP 19.32.0.0.260915
    File: p39971265_1932000DBRU_Linux-x86-64.zip - VALIDATED

You can use the status to determine whether the file is new:

  • VALIDATED: This file was not on disk and has been downloaded.
  • REPLACED: This file was already on disk, but was re-downloaded.
  • LOCATED: The file was already on disk.

To use this information with a script, you must parse stdout and put the pieces together. Doable, but not very elegant.

Checking the Patch Info File

In the download_folder, you find patches_info.json, which is an overview of all the files downloaded by AutoUpgrade.

Here’s an example:

{
    "patchFolder": "/home/oracle/patch-repo",
    "generatedAt": "2026-10-06T07:54:27.930456Z",
    "patches": [
        {
            "description": "DATABASE MRP 19.32.0.0.260915",
            "platform": "Linux x86-64",
            "patchId": 39971265,
            "releasedDate": "+58659-01-03T15:56:40",
            "files": [
                {
                    "name": "p39971265_1932000DBRU_Linux-x86-64.zip",
                    "checksum": "029A3847AC9A38571E052440AA187D5AE147A24D",
                    "checksum-256": "090348A58923A031212628BE9A69F2E800C16933C7CF53678CB070A3DA1630B1",
                    "size": 29432590,
                    "lastUpdated": "2026-09-21T05:23:05.158447Z"
                }
            ]
        },
...
  • The lastUpdated timestamp indicates when the file was downloaded. The Z at the end indicates UTC, also known as Zulu time.
  • The customer only wants to create a gold image when a new Release Update or MRP arrives. They can use description to filter the patches.
  • A single patch may consist of multiple files, so your code needs to take that into consideration.

The JSON file is much better suited for automation.

Checking the Log File

You can also use the AutoUpgrade log files. For download mode, you find them here:

<global.global_log_dir>/cfgtoollogs/patch/auto/aru

To find a list of downloaded files, you can look in aru_user.log:

grep "Finished the downloading" aru_user.log

...
2026-10-06 09:54:21.434 INFO Finished the downloading of DATABASE RELEASE UPDATE 23.26.3.0.0(GOLD IMAGE) - p39581612_230000_Linux-x86-64.zip
2026-10-07 06:41:44.070 INFO Finished the downloading of DATAPUMP BUNDLE PATCH 19.32.0.0.0 - p39657094_1932000DBRU_Generic.zip
2026-10-07 10:38:18.046 INFO Finished the downloading of autoupgrade.jar 26.6 (September 2026) - autoupgrade.jar
2026-10-07 10:39:06.251 INFO Finished the downloading of DATABASE MRP 19.32.0.0.260915 - p39971265_1932000DBRU_Linux-x86-64.zip

  • Each line matches the download of one file.
  • The line contains the download timestamp, patch description and file name.
  • A patch consists of one or multiple files, so don’t assume that each line represents a different patch.

Grepping a text file works, but it’s not the best option for automation.

That’s It

AutoUpgrade fits perfectly into your automation. The information is available through the console, log files, and patches_info.json. For automation, I’d go with JSON.

If there’s anything we can change to make AutoUpgrade even more suitable for automation, leave a comment and I’ll see what we can do.

Happy patching!

The Easiest Way to Download Exadata Patches

Using AutoUpgrade, you can download patches for Oracle Exadata. It’s fast and convenient.

Get Those Patches

  1. I use the latest version of AutoUpgrade.

    wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
    
  2. I’ve already stored my MOS credentials in the AutoUpgrade keystore.

  3. I create an AutoUpgrade config file:

    global.global_log_dir=/home/oracle/autoupgrade/logs
    global.keystore=/home/oracle/autoupgrade/keystore
    global.download_folder=/home/oracle/patch-repo
    
    patch1.patch=EXAQFSDP:19,EXAPATCHMGR
    patch1.target_version=19
    patch1.platform=LINUX.X64
    
    • I use the EXAQFSDP keyword to download the Quarterly Full Stack Download Patch (QFSDP) for Exadata systems.
    • I want to download patches for 19c.
    • I also want to get the latest version of the patchmgr utility.
  4. I start AutoUpgrade in download mode:

    java -jar autoupgrade.jar -patch \
       -config get-patches.cfg \
       -mode download
    
  5. AutoUpgrade now downloads the patches:

    AutoUpgrade Patching 26.6.260925 launched with default internal options
    Processing config file ...
    Loading AutoUpgrade Patching keystore
    AutoUpgrade Patching keystore is loaded
    
    ------------------------------------------------------
    Downloading files to /Users/doverbyh/Downloads/patches
    ------------------------------------------------------
    QUARTERLY FULL STACK DOWNLOAD PATCH FOR EXADATA (JUL2026 - 19.32)
        File: p39619107_190000_Linux-x86-64_10of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_1of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_2of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_3of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_4of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_5of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_6of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_7of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_8of10.zip - LOCATED
        File: p39619107_190000_Linux-x86-64_9of10.zip - LOCATED
    
    DBSERVER.PATCH.ZIP ORCHESTRATOR PLUS DBNU - ARU PLACEHOLDER
        File: p21634633_261300_Linux-x86-64.zip - LOCATED
    ------------------------------------------------------
    
  6. That’s it. Now I have everything I need to patch the Exadata system.

Notes

  • The QFSDP contains patches for:
    • Infrastructure
      • ExadataStorageServer
      • DBServerPatch
      • ExadataDBNodeUpdate
      • SunRackIIPDUMeteringUnitFirmware
    • Database
      • Database Oracle home
      • Grid Infrastructure Oracle home
      • OPatch
      • OPlan
    • Systems management
      • Enterprise Manager OMS Release Update
      • Enterprise Manager Agent Release Update
  • Each QFSDP is quite large. Have at least 60 GB of free space for the download, plus additional space to extract it.
  • You can also download the QFSDP for releases 21c and 26ai.
  • You must also specify target_version in the config file, although AutoUpgrade doesn’t use it for Exadata patches. That requirement will be removed in a later version of AutoUpgrade.

How to Extract the QFSDP

Here’s how to extract the QFSDP. I’m using QUARTERLY FULL STACK DOWNLOAD PATCH FOR EXADATA (JUL2026 – 19.32) as an example.

  • The QFSDP comes in 10 zip files. Extract all of them:
    mkdir -p p39619107
    for i in {1..10}; do
        unzip -q "p39619107_190000_Linux-x86-64_${i}of10.zip" -d p39619107 || break
    done
    
  • Now you have 10 parts of a split tar archive. Combine and extract them:
    cd p39619107
    cat *.tar.* | tar -xvf -
    
  • You now have all the patches extracted and ready for patching.

That’s It

AutoUpgrade now belongs in your Exadata patching runbook. Regardless of how you patch your system, AutoUpgrade can take care of getting the patches.

This enhancement came directly from customer feedback. What should we add next?

Happy patching!

AutoUpgrade Keystore Security Changes in 26.6

In the latest version of AutoUpgrade (26.6), you will notice some changes to the AutoUpgrade keystore.

AutoUpgrade uses a keystore to store sensitive information like your MOS credentials, TDE keystore passwords and authorization tokens.

We’ve implemented these changes to better protect your data.

Password Length

Your AutoUpgrade keystore password should contain:

  • At least 16 characters
  • Alphabetic characters
  • At least one number or special character

If your password is 7 characters or fewer, AutoUpgrade throws an error:

Starting AutoUpgrade Patching Password Loader - Type help for available options
Creating new AutoUpgrade Patching keystore - Password required
Enter password:
PKI-01002: Invalid password. Passwords must have a minimum length of sixteen characters and contain alphabetic characters combined with numbers or special characters.

If your password is 8-15 characters long, AutoUpgrade prints a warning but allows you to use the weak password:

Starting AutoUpgrade Patching Password Loader - Type help for available options
Creating new AutoUpgrade Patching keystore - Password required
Enter password:
Warning: For security reasons, passwords must have at least 16 characters.
Enter password again:

The warning message is misleading. It states that you must use a stronger password. The correct word would be should.

Keep your secrets safe; use a strong password!

Keystore Permissions

Only the current user can have write access to the keystore folder and the files inside it.

If your file permissions are too permissive, you’ll see an error message:

Unable to connect to the Oracle Update Advisor service using the provided credentials
*No messages received from the Oracle Update Advisor service*

Or:

Oracle Update Advisor service - Connection Failure
*Tag mismatch!*

AutoUpgrade requires that you use strict file permissions:

find <keystore-folder> -type d -exec chmod 700 {} +
find <keystore-folder> -type f -exec chmod 600 {} +

That’s It

To keep your credentials and other sensitive information safe, AutoUpgrade now enforces stronger security practices.

At first glance, this might be an annoyance, but with AI changing how we work, protecting credentials and other secrets is more important than ever.

Happy safekeeping!

The Easiest Way to Download Enterprise Manager Patches

Using AutoUpgrade, you can download patches for Oracle Enterprise Manager (OEM). It’s fast and convenient.

Get Those Patches

  1. I use the latest version of AutoUpgrade.

    wget https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar
    
  2. I’ve already stored my MOS credentials in the AutoUpgrade keystore.

  3. I create an AutoUpgrade config file:

    global.global_log_dir=/home/oracle/autoupgrade/logs
    global.keystore=/home/oracle/autoupgrade/keystore
    global.download_folder=/home/oracle/patch-repo
    
    patch1.patch=OEM:24.1
    patch1.target_version=19
    
    patch2.patch=OEM:13.5
    patch2.target_version=19
    
    • I use the OEM keyword to download patches for Oracle Enterprise Manager.
    • I want to get patches for versions 24.1 and 13.5.
  4. I start AutoUpgrade in download mode:

    java -jar autoupgrade.jar -patch \
       -config get-patches.cfg \
       -mode download
    
  5. AutoUpgrade now downloads the patches:

    AutoUpgrade Patching 26.6.260925 launched with default internal options
    Processing config file ...
    Loading AutoUpgrade Patching keystore
    AutoUpgrade Patching keystore is loaded
    
    ------------------------------------------------------
    Downloading files to /Users/doverbyh/Downloads/patches
    ------------------------------------------------------
    Oracle Enterprise Manager 24ai Release 1 Update 13 (24.1.0.13) for Oracle Management Service
        File: p39815035_241000_Generic.zip - LOCATED
    
    Oracle Enterprise Manager 24ai Release 1 Holistic Patch for Oracle Management Service - September 2026
        File: p39984254_241000_Generic.zip - LOCATED
    
    Oracle Enterprise Manager 24ai Release 1 Update 13 (24.1.0.13) for Oracle Management Agent
        File: p39815042_241000_Generic.zip - LOCATED
    
    OMSPatcher patch of version 13.9.24.17.0 for Enterprise Manager 24.1.0.0.0
        File: p19999993_241000_Generic.zip - LOCATED
    
    AgentPatcher patch of version 13.9.25.3.0 for Enterprise Manager 24.1.0.0.0
        File: p33355570_241000_Generic.zip - LOCATED
    ------------------------------------------------------
    
    
    ------------------------------------------------------
    Downloading files to /Users/doverbyh/Downloads/patches
    ------------------------------------------------------
    Oracle Enterprise Manager 13c Release 5 Update 34 (13.5.0.34) for Oracle Management Service
        File: p39820104_135000_Generic.zip - LOCATED
    
    Oracle Enterprise Manager 13c Release 5 Holistic Patch for Oracle Management Service - September 2026
        File: p39984261_135000_Generic.zip - LOCATED
    
    Oracle Enterprise Manager 13c Release 5 Update 34 (13.5.0.34) for Oracle Management Agent
        File: p39820108_135000_Generic.zip - LOCATED
    
    OMSPatcher patch of version 13.9.5.27.0 for Enterprise Manager Cloud Control 13.5.0.0.0
        File: p19999993_135000_Generic.zip - LOCATED
    
    AgentPatcher release of version 13.9.5.10.0 for Enterprise Manager Cloud Control Agent 13.5.0.0.0
        File: p33355570_135000_Generic.zip - LOCATED
    ------------------------------------------------------	
    
  6. That’s it. Now I can take those patches and patch OEM. AutoUpgrade can’t help me with that part.

Notes

  • AutoUpgrade downloads the following patches:
    • Oracle Management Service Release Update
    • Oracle Management Service Holistic Patch
    • Oracle Management Agent Release Update
    • OMSPatcher
    • AgentPatcher
  • OEM patches are generic, so there’s no need to specify a platform in the config file.
  • You must also specify target_version in the config file, although AutoUpgrade doesn’t use it for OEM patches.That requirement will be removed in a later version of AutoUpgrade.
  • AutoUpgrade supports OEM versions 13.5 and 24.1. There will be no support for older releases.
  • The patches are quite large. Have at least 15 GB per set of patches.

That’s It

Once again AutoUpgrade proves itself as the trusted aid of the DBA.

This enhancement came directly from customer feedback. What should we add next?

Happy patching!

Let’s Talk at Oracle AI World

At Oracle AI World next month, we have some pretty cool things to show you. But in between all our sessions and labs, we still have time to meet you.

We want you to get the most out of Oracle AI World and we are there to answer all your questions. We can help you with:

  • Upgrades
  • Patching
  • Migrations
  • AutoUpgrade
  • Data Pump
  • Cloud Premigration Advisor Tool

The Small Things

For quick questions, informal conversations, or even a selfie, come visit us at the Oracle AI World Hub.

Our team will have a dedicated booth next to the other database booths, and someone will be there throughout the event. Stop by and say hello – we’d be happy to talk.

The Bigger Things

For more complex questions or topics that require a deeper discussion, let’s arrange a private meeting.

We can talk about:

  • Upgrades, migrations and patching in general
  • Your specific challenges
  • An upcoming project where you would value our input
  • The future of Oracle AI Database and related tools

We’d also love to hear your feedback::

  • What has your experience been with our tools?
  • What could we improve?
  • How can we make the tools more useful for you?

We can’t help you with:

  • Service requests
  • License issues
  • Sales and commercial discussions

How Can I Schedule a Meeting?

First, take a few minutes to prioritize the topics you’d like to discuss. Meeting availability will be limited, so let’s focus on what matters most to you.

Then send me an email at daniel.overby.hansen@oracle.com. Please introduce yourself and your company, and let me know what you’d like to discuss.

I can’t guarantee that we’ll have time to meet everyone, but I guarantee that I’ll do my best to find a spot in our calendar.

See you in Las Vegas!

8 Hours of Intense Learning at AI World

In little more than a month, Oracle AI World 2026 starts in Las Vegas.

Sunday is the first day of the conference – and it’s all about learning.

Together with Oracle University, we’re hosting a full-day training session on upgrades, patching, and migration.

Together with Oracle University we’re hosting a full-day training session on upgrades, patching and migration.

Join Mike Dietrich, Daniel Overby Hansen, Rodrigo Jorge, and Alex Zaballa for a workshop featuring real-world customer cases and practical examples of upgrade, migration, and consolidation techniques and strategies. Explore the power and possibilities of Oracle AI Database 26ai. Learn how to prepare for Oracle AI Database 26ai and leverage the latest enhancements in AutoUpgrade. Discover how to take patching to the next level, ease operations in the multitenant architecture, get Data Pump on steroids, simplify migration to Oracle ADB for beginners and experts, and explore the coolest and best new features for DBAs in Oracle AI Database 26ai.

Sign up here

Oracle University Training at Oracle AI World

What’s In It For You?

You will get:

  • An intense learning with enough time to dive into the details.
  • The latest updates on how AI affects security in tech and what that means for patching.
  • Our best practices for operating your databases in a multitenant architecture.
  • A unique opportunity to learn from our entire Product Management team, including Mr. Upgrade himself, Mike Dietrich.
  • All tech, no marketing!

Details

The event takes place on Sunday October 25 from 09:00 to 17:00. Be sure to bring:

  • Your laptop – we have exercises planned for the hands-on lab.
  • Loads of questions.
  • An open mind and a willingness to learn.

Seats are limited, so don’t wait too long to sign up.

See you in Las Vegas!

How to Export/Import A Single Queue Using Data Pump

In a recent project, a customer used Advanced Queueing (AQ), and I had to move a single queue from one database to another.

In Oracle AI Database, you can use Data Pump to move queues. According to the documentation, exporting and importing a queue is straightforward, but there are some caveats to be aware of.

How to Export a Queue

I want to export the ORDER_Q queue in the APPUSER schema.

  1. Under the hood, a queue consists of a queue table. Often, the queue uses an object type for its payload. I start by finding the queue table name and payload type:

    select q.queue_table, qt.object_type
    from   dba_queues q, dba_queue_tables qt 
    where  q.owner='APPUSER' and q.name='ORDER_Q'
    and    q.owner=qt.owner and q.queue_table =qt.queue_table;
    
       QUEUE_TABLE        OBJECT_TYPE
    ______________ __________________
    ORDER_QT       APPUSER.ORDER_T
    
  2. I prepare a Data Pump parfile named queue_table_export.par. It exports the queue table:

    directory=dpdir
    dumpfile=order_qt.dmp
    logfile=order_q_export.log
    tables=APPUSER.ORDER_QT
    exclude=statistics
    
    • The tables parameter is the queue table for the queue I want to export. I find it using the query above.
  3. Then, I export the queue table:

    expdp ... parfile=queue_table_export.par
    
  4. Next, I create a new parfile named payload_type_export.par. It exports the object_type or payload_type:

    directory=dpdir
    dumpfile=queue_types.dmp
    logfile=queue_types_export.log
    schemas=appuser
    include=type:"IN ('ORDER_T')"
    
    • To export types, I must perform a schema export.
    • I use the include parameter to include only types and further limit the export to the ORDER_T type.
  5. Then, I export the type:

    expdp ... parfile=payload_type_export.par
    

How to Import

  1. I start by importing the type:

    impdp ... dumpfile=queue_types.dmp
    
  2. Then, I import the queue table:

    impdp ... dumpfile=order_qt.dmp
    
    • Data Pump imports the queue table and all messages.
    • It also calls the AQ API to create the queue infrastructure.
  3. I connect to the database and start the queue:

    BEGIN
    DBMS_AQADM.START_QUEUE(
    	queue_name => 'APPUSER.ORDER_Q'
    );
    END;
    /
    
    • Note that I start the queue by its name ORDER_Q. It was created automatically during the import of the queue table.
  4. That’s it. I’ve moved the queue and can start using it.

What Happens During Import

Let’s see how Data Pump uses the AQ API when it imports the queue table.

  1. I start Data Pump to extract the DDL from the dump file:
    impdp ... dumpfile=order_qt.dmp sqlfile=order_qt.sql
    
    • Data Pump reads the dump file and extracts the statements needed to perform this import.
    • It doesn’t perform the import.
    • The statements are written to the text file specified by sqlfile.
  2. I examine the text file. This is what Data Pump would do during an import.
    • Data Pump starts by creating the queue table:
      CREATE TABLE "APPUSER"."ORDER_QT"
         (    "Q_NAME" VARCHAR2(128 BYTE),
              "MSGID" RAW(16),
              "CORRID" VARCHAR2(128 BYTE),
              "PRIORITY" NUMBER,
              ...
      
    • Next come a few indexes:
      CREATE INDEX "APPUSER"."AQ$_ORDER_QT_I"
         ON "APPUSER"."ORDER_QT" ("Q_NAME", "STATE", "ENQ_TIME", "STEP_NO", "CHAIN_NO", "LOCAL_ORDER_NO")
         ...
      
    • Finally, the call to the AQ API to create the queue:
      BEGIN
      SYS.DBMS_AQ_IMP_INTERNAL.IMPORT_QUEUE_TABLE('ORDER_QT',1,16801800,2,0,0,'', SYS.DBMS_AQ_IMP_INTERNAL.DBVER_10i, '00:00');
      COMMIT;
      END;
      /
      
      BEGIN
      SYS.DBMS_AQ_IMP_INTERNAL.IMPORT_QUEUE(HEXTORAW('598D4E9609226B60E0635301000A0A08'),'ORDER_QT','AQ$_ORDER_QT_E',1,0,0,0,0,'exception queue');
      COMMIT;
      END;
      /
      
      BEGIN
      SYS.DBMS_AQ_IMP_INTERNAL.IMPORT_QUEUE(HEXTORAW('598D4E9609236B60E0635301000A0A08'),'ORDER_QT','ORDER_Q',0,5,0,0,0,'');
      COMMIT;
      END;
      /		
      
    • You can’t see the rows being loaded into the queue, but that happens too. All messages in the queue are also exported.
  • The DBMS_AQ_IMP_INTERNAL is an internal API. Don’t call it yourself.

What About a Full or Schema Export

If you perform a full or schema mode export, it’s simple. Data Pump exports all the required objects, including the types.

The only thing you must do is to start the queues after the import.

What If

The payload type must exist when you import the queue table. If you try to import the queue table without the type, Data Pump throws an error:

Processing object type TABLE_EXPORT/TABLE/TABLE
ORA-39117: Type needed to create table is not included in this operation. Failing sql is:
CREATE TABLE "APPUSER"."ORDER_QT" ("Q_NAME" VARCHAR2(128 BYTE), "MSGID" RAW(16), "CORRID" VARCHAR2(128 BYTE), "PRIORITY" NUMBER, "STATE" NUMBER, "DELAY" TIMESTAMP (6), "EXPIRATION" NUMBER, "TIME_MANAGER_INFO" TIMESTAMP (6), "LOCAL_ORDER_NO" NUMBER, "CHAIN_NO" NUMBER, "CSCN" NUMBER, "DSCN" NUMBER, "ENQ_TIME" TIMESTAMP (6), "ENQ_UID" VARCHAR2(128 BYTE), "ENQ_TID" VARCHAR2(30 BYTE), "DEQ_TIME" TIMESTAMP (6), "DEQ_UID" VARCHAR2(128 BYTE), "DEQ_TID" VARCHAR2(30 BYTE), "RETRY_COUNT" NUMBER, "EXCEPTION_QSCHEMA" VARCHAR2(128 BYTE), "EXCEPTION_QUEUE" VARCHAR2(128 BYTE), "STEP_NO" NUMBER, "RECIPIENT_KEY" NUMBER, "DEQUEUE_MSGID" RAW(16), "SENDER_NAME" VARCHAR2(128 BYTE), "SENDER_ADDRESS" VARCHAR2(1024 BYTE), "SENDER_PROTOCOL" NUMBER, "USER_DATA" "APPUSER"."ORDER_T" , "USER_PROP" "SYS"."ANYDATA" ) USAGE QUEUE SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255  NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS"  OPAQUE TYPE ("USER_PROP") STORE AS SECUREFILE LOB (ENABLE STORAGE IN ROW CHUNK 8192 CACHE  NOCOMPRESS  KEEP_DUPLICATES  STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))

That’s It

You can use Data Pump to move queues around. For table-mode exports, remember to export the payload type separately.

A few interesting links:

Happy queueing!

AutoUpgrade New Features: Create and Use Your Own Gold Images

There are several advantages to using gold images to install new Oracle homes:

  • You know all servers get the exact same Oracle home.
  • You can install faster because you don’t need to apply all the patches.
  • They fit very well with automation.
  • They’re easier to test and work well with configuration management.

When you install an Oracle home using AutoUpgrade, you can also create your own gold images. Later, you can deploy the gold image to new servers.

Create Gold Image

I will use AutoUpgrade to install a new Oracle home with the desired patches and create a gold image.

  1. I’ve already downloaded the patches.
  2. Here’s my config file:
    global.global_log_dir=/home/oracle/autoupgrade/log
    install1.download_folder=/home/oracle/patch-repo
    install1.source_home=/u01/app/oracle/product/19
    install1.target_home=/u01/app/oracle/product/19_32
    install1.create_gold_image=db_home_%RELEASE%_%UPDATE%_%TIMESTAMP%.zip
    install1.patch=recommended
    
    • I’ve already downloaded the patches to download_folder.
    • I want to create a new Oracle home in the target_home location.
    • AutoUpgrade copies the settings from the source_home.
    • After installing the new Oracle home, AutoUpgrade creates a gold image in download_folder. Instead of specifying the name of the gold image, I can also set create_gold_image=yes and let AutoUpgrade generate a name.
    • I set patch=recommended to get the recommended patches: latest Release Update, OPatch, MRP, OJVM, and Data Pump bundle patches.
  3. I start AutoUpgrade to install the new Oracle home:
    java -jar autoupgrade.jar -config install-home.cfg -patch -mode create_home
    
    • In 19c, the installation takes longer because AutoUpgrade must apply the Release Update.
    • In 26ai, this process is much faster because Oracle delivers gold images with the latest Release Update already applied.
  4. When AutoUpgrade completes, I can find the gold image in my download_folder.
  5. It took 15 minutes to install the Oracle home and apply all the patches, plus five minutes to generate the gold image.

Install From Gold Image

Now I move to a different server. I need a new Oracle home and I’ll use the gold image.

  1. Here’s my AutoUpgrade config file:
    global.global_log_dir=/home/oracle/autoupgrade/log
    install1.download_folder=/home/oracle/patch-repo
    install1.source_home=/u01/app/oracle/product/19
    install1.target_home=/u01/app/oracle/product/19_32
    install1.patch=GOLDIMAGE:db_home_19_32_20260819113026.zip
    
    • Notice the patch parameter. I specify the gold image instead of individual patches.
  2. I start AutoUpgrade to install the new Oracle home:
    java -jar autoupgrade.jar -config install-home.cfg -patch -mode create_home
    
    • AutoUpgrade extracts the gold image and performs the installation.
    • There are no patches to apply. The gold image is already up to date.
  3. That’s it! I now have an Oracle home with exactly the same patches.
  4. It took just two minutes to install the gold image. That’s much faster than the 15 minutes it took for a regular installation.

That’s It

If you’re not already using gold images, you should get started. AutoUpgrade makes them easy to create and deploy.

Happy patching!

AutoUpgrade New Features: Download 26ai Release Update Rather Than Gold Image

Starting with Oracle AI Database 26ai, Oracle delivers fully updated gold images in addition to just the Release Update.

This is very convenient because:

  • It significantly shortens the installation time of a new Oracle home because the Release Update has already been applied.
  • It includes an updated OPatch.
  • It includes an updated OCW component.
  • It includes an updated JDK and Perl installation.

AutoUpgrade downloads the gold image automatically and you get to enjoy the much shorter installation time.

But sometimes you want just the Release Update.

Download Release Update Patch File

  • Here’s my AutoUpgrade config file:

    global.global_log_dir=/home/oracle/autoupgrade/logs
    global.keystore=/home/oracle/autoupgrade/keystore
    global.folder=/home/oracle/autoupgrade/patches
    
    patch1.platform=LINUX.X64
    patch1.target_version=26
    patch1.patch=RU
    patch1.gold_image=no
    
    • I set gold_image=no to tell AutoUpgrade to download the Release Update patch instead of the gold image.
  • I start AutoUpgrade in download mode:

    java -jar autoupgrade.jar -patch -config download.cfg -mode download
    
  • AutoUpgrade locates the latest Release Update and starts the download.

    AutoUpgrade Patching 26.4.260701 launched with default internal options
    Processing config file ...
    Loading AutoUpgrade Patching keystore
    AutoUpgrade Patching keystore is loaded
    
    ------------------------------------------------------
    Downloading files to /home/oracle/autoupgrade/patches
    ------------------------------------------------------
    DATABASE RELEASE UPDATE 23.26.3.0.0
        File: p39578879_230000_Linux-x86-64.zip - VALIDATED
    ------------------------------------------------------
    
  • You can distinguish between the Release Update patch and the gold image by their descriptions:

    • Gold image: DATABASE RELEASE UPDATE 23.26.3.0.0(GOLD IMAGE)
    • Patch file: DATABASE RELEASE UPDATE 23.26.3.0.0

That’s It

Gold images are the fastest way to provision a new Oracle home. But when you need the Release Update patch instead, AutoUpgrade lets you choose.

Happy patching!