AutoUpgrade New Features: Get Latest JDK Patches

In an Oracle home, you find a Java installation – a full JDK.

cd $ORACLE_HOME
ls -l jdk

Some of the tools related to Oracle AI Database are Java-based, like AutoUpgrade, making it convenient to have.

How do you patch the JDK in your Oracle home?

Updating JDK

When you apply a Release Update to your database, you’re also updating your JDK. Those patches are part of the Release Update.

Here are two Oracle homes with different Release Updates:

cd /u01/app/oracle/product/dbhome_1927
jdk/bin/java -version

java version "1.8.0_441"
Java(TM) SE Runtime Environment (build 1.8.0_441-b07)
[   Java HotSpot(TM) 64-Bit Server VM (build 25.441-b07, mixed mode)](https://docs.oracle.com/en/database/oracle/oracle-database/26/upgrd/patch-parameters-autoupgrade-config-file.html#UPGRD-GUID-A7E6221E-5964-4553-9A63-61B2E4AB1CBD)

cd /u01/app/oracle/product/dbhome_1929
jdk/bin/java -version

java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)
  • Notice how the JDK is newer in the later Release Update.

So, all’s good, right?

The Latest Ones

The Java team builds its patches around the same time as the database team builds the Release Update.

This means that the JDK patches you find in a Release Update are from the previous quarter. There’s simply not enough time to include the very latest JDK patches in the Release Update. We also need time for regression testing and other tasks.

So, the very latest JDK patches are made available as a one-off patch.

You can find the patch number of the latest JDK patch in JDK and PERL Patches for Oracle Database Home and Grid Home (Doc ID 2584628.1). Apply that and you’re fully up to date.

AutoUpgrade

You can instruct AutoUpgrade to get the latest available JDK patches using the jdk keyword in your patch configuration.

patch1.patch=RU,OPATCH,JDK

Here’s an example of two 19.29 Oracle homes – one without and one with the JDK patch:

cd /u01/app/oracle/product/dbhome_1929
jdk/bin/java -version

java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)

cd /u01/app/oracle/product/dbhome_1929jdk
jdk/bin/java -version

java version "1.8.0_471"
Java(TM) SE Runtime Environment (build 1.8.0_471-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.471-b11, mixed mode)
  • Notice how the version changes from 461 to 471.

Daniel’s Recommendation

Now that it has become so easy to update the JDK, I recommend doing it.

Security is paramount!

I see minimal risk in doing that.

  • The Java installation in Oracle Database 19c is version 8 that is very mature.
  • In Oracle AI Database 26ai, it is Java 11 that is also very mature.
  • Those two Java releases are in a part of their lifecycle where a few things are updated.
  • I recall no major issues caused by a JDK patch.

But what do you think?

  • Are you already updating the JDK, or do you plan to do so in the future?
  • Have you experienced issues with JDK in your Oracle home? Let me know in the comments below.

Happy patching!

New Webinars

Now that I’ve finished with Oracle AI World and the EMEA Community Tour is coming to a close, I have some free time on my hands. What better way to spend that time than to create webinars?

  • Webinar 26: Best Practices for Upgrading to Oracle AI Database 26ai
  • Webinar 27: Database Patching for DBAs – Patch smarter, not harder
  • Webinar 28: Patch smarter, not harder – MS Windows Special Edition

When and How

We’ll be airing the first webinar in December, and the other two will follow early next year.

Webinar Date
Best Practices for Upgrading to Oracle AI Database 26ai December 11 2025, 14:00 CET
Database Patching for DBAs – Patch smarter, not harder February 12 2026, 14:00 CET
Patch smarter, not harder – MS Windows Special Edition March 12 2026, 14:00 CET

All our webinars are free. Just sign up and we’ll send you the details.

Why

First of all, these webinars are all tech, no marketing!

  • You can learn how to tackle your next upgrade project to Oracle AI Database 26ai. Although it’s not yet available for all platforms, there are still important preparations that you should start today.
  • Furthermore, we’ll share how other customers have upgraded their mission-critical systems to the latest release and whether there are any secret underscores (spoiler: there is…).
  • Over the last year, we’ve made significant enhancements to AutoUpgrade that make it so much easier to patch your databases. After watching this webinar, you’ll never download patches from My Oracle Support again.
  • Oracle on Windows is slightly different – but don’t worry, AutoUpgrade got you covered. Use the latest enhancements to streamline your operations of Oracle AI Database on Windows.

See You

If you can’t wait, remember that you can watch all our previous webinars on demand.

I hope to see you there!

How to Fix Errors in AutoUpgrade Download Mode

If you’re a frequent visitor to my blog, you’ll know I’m a big AutoUpgrade fanboy – especially the download mode, which can save you hours of downloading patches on My Oracle Support.

Recently, I was preaching to another customer, and when they finally gave in, here’s what happened:

We gave it a shot, but we keep running into errors when we try the download mode.

So, let’s see how we can solve the most common problems.

My Oracle Support

  1. You must have an Oracle SSO account.

  2. That account must be linked to a Customer Support Identifier (CSI) that has an active support agreement.

  3. In that CSI, you must have the privilege to download patches. The MOS administrator in your organization can help you with that.

    • In User Details, select the appropriate Support Identifier, set the Patches drop-down to Download.
  4. If AutoUpgrade tells you that your username or password is incorrect:

    *Connection Failed - You entered an incorrect user name or password.* 
    
    • You should ensure that you’re using the latest version of AutoUpgrade. We recently fixed a bug for passwords with certain special characters.

Network Connectivity

  1. AutoUpgrade must connect to the following servers:
  2. Those servers are part of a Content Delivery Network (CDN), so expect changing IP addresses. Base your firewall rules on DNS names rather than IP addresses.
  3. You can connect via a proxy:
    export https_proxy=https://proxy.weyland-yutani.net:8080
    java -jar autoupgrade.jar ... -mode download
    

Common Errors

*Request to https://login-ext.identity.oraclecloud.com failed with response code [403]*
  • Open your firewall. Allow traffic based on DNS names, not IP addresses.
  • Optionally, connect via a proxy server.

*unable to find valid certification path to requested target*

*SSL peer shut down incorrectly*
  • Check firewall settings and security groups to ensure they permit SSL traffic on the required ports.

Windows

If AutoUpgrade requires that you use an elevated command prompt (the run as administrator thing) when you use download mode, you should update to the latest version of AutoUpgrade. It no longer requires this.

Happy downloading!

How I Think You Should Create Your Container Databases

In the multitenant architecture in Oracle AI Database, the container database is essential. If you create it the right way, you can avoid some difficulties later on.

Here’s my recommendation for creating container databases.

3xC

The three most important things all start with “C”. Makes it easier to remember.

Character Set

The first one is straightforward: stick with the default, AL32UTF8.

If the root container is AL32UTF8, you can plug in PDBs with any character set. You can have a mix of the classic US7ASCII, old-school European without the Euro sign in WE8ISO8859P1, Japanese JA16SJIS, and original Unicode UTF8, and whatever.

But as soon as you set the root character set to anything but AL32UTF8, all PDBs are bound to the same character set.

Remain flexible and use AL32UTF8.

Components

The number of components has a direct influence on the time it takes to upgrade and patch a database.

Any component used by a PDB must also be installed in the root container. So, install as many components as you need in root. No more than that (selectively tick checkboxes in the blue box).

Also, from a least privilege kind-of-perspective don’t install more than you need.

When you decide on a set of components to install, do that in root only. Ensure that new PDBs have none of the components installed (untick all checkboxes in the red box). This gives you the leanest PDBs. If a PDB requires a component, it’s easy to install afterward.

Installing components in DBCA

Compatible

The most important thing is that you have a uniform compatible setting in all your CDBs. This gives you the most flexibility.

When you plug in a PDB, it must have the same compatible setting as the root container.

  • If the PDB has a lower compatible setting, it will automatically and silently raise the setting to that of the root container.
  • If the PDB has a higher compatible setting, you won’t be able to plug it in.

Maintain a uniform compatible setting in your PDBs

Important Parameters

Once you have created a CDB, I recommend setting these parameters.

max_pdbs

You can restrict the number of current user-created PDBs in a CDB. This is useful if you don’t have a license for the Multitenant option.

alter system set max_pdbs=3 scope=both;

The database now throws an error if you try to create a fourth PDB.

_exclude_seed_cdb_view

By default, the CDB views do not show information about PDB$SEED. I’m not too fond of this behavior. I want to know if there is a problem with it.

alter system set "_exclude_seed_cdb_view"=false scope=both;

Records from PDB$SEED now show up in the CDB views with CON_ID=2.

Create The CDB Using DBCA

You need to use the advanced configuration in Database Configuration Assistance (DBCA) to create a CDB that matches the above recommendations.

  • Select Create a database.
  • Select Advanced configuration.
  • Create a Custom Database.
  • On the following few pages, you can make the changes you like until you reach the Database Options page.
  • When you reach the Database Options page, select the components you need in the root container (blue box). In the Include in PDBs list, select only the component you need in all your PDBs. Otherwise, leave them out so you get a lean PDB. You can easily add components later on.
  • On the Configuration Options page, on the Character sets tab, ensure that you select Use Unicode (AL32UTF8).
  • On the Creation Option page, click on All initialization Parameters, and select the compatible setting you use. I recommend using the default.
  • On the Summary page, you should Save Response File so you can create additional CDBs in silent mode.

Create Manually

After creating the first database using DBCA, you can create another using the response file and DBCA in silent mode.

  1. Make the required changes to the response file.
    • Update the name of the database.
    • Verify the list of parameters.
    • Other settings.
    • For reference, in the appendix, you can find a sample response file that we use in our hands-on labs.
  2. If you need to create the database with a non-default timezone file version, set the following parameter:
    export ORA_TZFILE=$ORACLE_HOME/oracore/zoneinfo/timezone_42.dat
    
    • Check the directory for a complete list of available timezone files.
  3. Start DBCA in silent mode.
    $ORACLE_HOME/bin/dbca \
       -silent \
       -createDatabase \
       -responseFile /home/oracle/my_response_file.rsp
    

Check the other blog posts related to upgrade to Oracle AI Database 26ai.

Happy upgrading!

Appendix

Sample DBCA Response File

This is the DBCA response file that we use when we create our hands-on labs. This is for the CDB23 database.

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v23.0.0
gdbName=cdb23
sid=CDB23
databaseConfigType=SI
policyManaged=false
managementPolicy=AUTOMATIC
createServerPool=false
force=false
createAsContainerDatabase=true
numberOfPDBs=0
pdbName=
useLocalUndoForPDBs=true
pdbAdminPassword=
templateName=/u01/app/oracle/product/23/assistants/dbca/templates/New_Database.dbt
sysPassword=oracle
systemPassword=oracle
emConfiguration=NONE
runCVUChecks=FALSE
dvConfiguration=false
olsConfiguration=false
datafileDestination=/u02/oradata/{DB_UNIQUE_NAME}
recoveryAreaDestination=
recoveryAreaSize=
configureWithOID=
pdbOptions=JSERVER:false,ORACLE_TEXT:false,IMEDIA:false,CWMLITE:false,SPATIAL:false,OMS:false,SAMPLE_SCHEMA:false,DV:false
dbOptions=JSERVER:false,ORACLE_TEXT:false,IMEDIA:false,CWMLITE:false,SPATIAL:false,OMS:false,SAMPLE_SCHEMA:false,DV:false
storageType=FS
characterSet=AL32UTF8
nationalCharacterSet=AL16UTF16
registerWithDirService=false
skipListenerRegistration=true
variables=ORACLE_BASE_HOME=/u01/app/oracle/product/23,DB_UNIQUE_NAME=cdb23,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=cdb23,ORACLE_HOME=/u01/app/oracle/product/23,SID=CDB23
initParams=undo_tablespace=UNDOTBS1,enable_pluggable_database=true,sga_target=4GB,db_block_size=8192BYTES,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=CDB23XDB),diagnostic_dest={ORACLE_BASE},remote_login_passwordfile=EXCLUSIVE,db_create_file_dest=/u02/oradata/{DB_UNIQUE_NAME},processes=300,pga_aggregate_target=1GB,nls_territory=AMERICA,open_cursors=300,log_archive_format=%t_%s_%r.arc,compatible=23.0.0,db_name=cdb23
enableArchive=false
useOMF=true
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
totalMemory=0

That’s a Wrap! Oracle AI World 2025

Back from Oracle AI World in Las Vegas – the conference formerly known as CloudWorld formerly known as OpenWorld. Badge now joins the others on my wall. Putting my lanyard on the wall of fame

Slides / Labs

Here are the slides from our presentations:

You can try our hands-on labs for free in Oracle LiveLabs:

Impressions

  • The conference included many visionary keynotes, all available on YouTube for further viewing.

  • Release of Oracle AI Database 26ai. Check Mike’s blog post for details.

  • Oracle AI World is special, especially for someone like me who usually works from home. In a few days, I reunited with colleagues, customers, and friends—a very intense social event for someone used to meeting people on Zoom. It’s also the time of the year when I get to spend time with my team. My team at Oracle AI World 25

  • Long days left me with sore feet from extended standing and walking. I took many steps during Oracle AI World 25

  • The motto of the conference: AI is changing everything! I only had time to play with AI generated pictures. AI generated portraits

  • Nine-hour time difference usually causes me jetlag, but not this time. I used the Timeshifter app, drank lots of water with electrolytes (no caffeine), got sunshine and darkness at the right times, and took Melatonin (this is not a medical endorsement, always check with your doctor). I recovered quickly. If you suffer from jetlag too, give it a shot.

  • Fruit and a protein bar in my bag served as emergency fuel when meals were delayed—a tip for future conferences.

  • First Air Canada flight—a pleasure. Flew a Boeing Dreamliner, my second favorite after the Airbus A350. As an aviation geek, I love watching planes. What’s your favorite aircraft? Boeing Dreamliner 787

  • While making a layover in Toronto, I saw Canada’s vast autumn forests from above on approach—a magnificent sight. I’d love to visit Canada in autumn. Any recommendations for must-see sights?

  • Saw a remake of The Wizard of Oz at The Sphere. What a wild ride—unbelievable. If you visit Las Vegas, catch a show there. That’s a true big screen. The opening screen of The Wizard of Oz So many people were doing selfies, that we had to make a selfie-with-a-selfie. Selfie with a selfie

Job Done

  • That’s it! Celebrated an amazing conference with the team and said our goodbyes. Celebratory beers at the end of the conference

  • Moving forward, stay tuned for news on the upcoming Oracle AI World Tour 2026—coming soon to a city near you. Oracle AI World Tour 2026 banner

  • Next year’s conference returns to The Venetian in late October. Hope to see you there! If you have a story to share, reach out—perhaps you can present it with us.

  • THANKS to everyone that took part in making Oracle AI World a big success!

Oracle Influencers

At the recent Oracle AI World 2025, I spoke to a gentleman about Oracle influencers.

He wanted to expand his knowledge on Oracle database tech and wanted to follow relevant people from Oracle.

I wanted to share the list with you in case you’d like to follow some of them as well.

Blogs

Here’s a list of personal blogs from people at Oracle from my own blog feed:

Am I missing someone? Please drop a comment, so that I can update the list (and my own blog roll 😎).

You can also find a long list of official blogs at Oracle.

YouTube

Here are the channels that I subscribe to:

What other channels am I missing?

Sharing

There are many influencers who are not affiliated with Oracle. They are certainly worth following as well. However, the assignment was to identify Oracle employees only.

Thanks to all of you out there who share knowledge with the Oracle community.

#SharingIsCaring

Oracle AI World – Come Say Hi!

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

If you want to stay updated on Oracle Database upgrades, migrations and patching, here is a list of our sessions.

There’s so much to see at Oracle AI World, so start planning today.

Our Sessions

Our Hands-On Labs

How Do I Get A Seat?

The seats are on first-come-first-served basis. You can’t secure a seat upfront. You must show up in good time if you want to be sure to get a seat.

I Have Questions?

You can connect with us at our booth in the exhibition area.

Bring your questions, thoughts, ideas or enhancement requests. We’re all ears.

See you soon!

AutoUpgrade New Features: A Very Easy Way To Generate A Config File

I use AutoUpgrade everyday. Wake me up in the middle of the night and I can write one for you in the dark.

… But it might not be the case for everyone.

So, here’a quick way to generate an AutoUpgrade config file.

Auto Config

  1. Set the environment to the Oracle Database you want to patch or upgrade:
    $ env | grep ORA
    ORACLE_SID=UPGR
    ORACLE_BASE=/u01/app/oracle
    ORACLE_HOME=/u01/app/oracle/product/19
    
  2. Call AutoUpgrade with -auto_config parameter:
    java -jar autoupgrade.jar -auto_config
    
    • You can also specify the database using the -sid <mydb> parameter.
  3. AutoUpgrade creates a sample config file named auto_config.cfg.
    • It is a basic config file with the most essential parameters already filled out from the environment, like sid, source_home and logging directories.
    • If you have multiple candidate Oracle homes, AutoUpgrade adds all of them as a comment, and you can easily select the one you want
      #upg1.target_home=/u01/app/oracle/product/21
      #upg1.target_home=/u01/app/oracle/product/23
      
    • All other parameters are added as comments with a description on their usage. You can uncomment those that you need.
  4. Use AutoUpgrade to patch or upgrade your Oracle Database.

Final Words

If you need a more elaborate config file, you can also try MarcusAutoUpgrade Composer.

Happy AutoUpgrading!

How To Downgrade a PDB from Oracle Database 23ai

When talking about upgrades, Oracle Database has a great fallback mechanism; a downgrade. Even after going live on Oracle Database 23ai, you can get back to Oracle Database 19c or 21c – with no data loss.

How to Downgrade From Oracle Database 23ai

My PDB, PDB1, has already been upgraded to Oracle Database 23ai. Now, I want to downgrade to Oracle Database 19c. In the downgrade process, I will unplug from CDB23 and into CDB19.

  1. I open the PDB in downgrade mode:
    alter pluggable database PDB1 close immediate;
    alter pluggable database PDB1 open downgrade;
    
    • Downgrade mode is a special mode – similar to upgrade mode. It enables exclusive access to the database and disables a lot of features.
  2. I set the environment to CDB23 and start the downgrade process:
    cd $ORACLE_HOME/bin
    ./dbdowngrade -c 'PDB1'
    
    • The -c command line parameter starts a downgrade of a specific PDB; not the entire CDB.
  3. After the downgrade, I close and unplug from CDB23:
    alter pluggable database PDB1 close;
    alter pluggable database PDB1 unplug into '/home/oracle/scripts/pdb1.xml';
    
  4. Now, I connect to CDB19 running on Oracle Database 19c. I plug in and open the PDB in upgrade mode:
    create pluggable database PDB1 using '/home/oracle/scripts/pdb1.xml';
    alter pluggable database PDB1 open upgrade;
    
  5. I switch to PDB1 and complete the downgrade by running the catrelod.sql script:
    alter session set container=PDB1;
    @$ORACLE_HOME/rdbms/admin/catrelod.sql
    
  6. Then, I recompile all invalid objects:
    @$ORACLE_HOME/rdbms/admin/utlrp.sql
    
  7. A restart of the PDB. I open in normal mode:
    alter pluggable database PDB1 close;
    alter pluggable database PDB1 open;
    
  8. I gather new dictionary statistics:
    exec dbms_stats.gather_dictionary_stats;
    
    • After a while, when the database is warmed up, I also gather fixed objects statistics.
  9. I verify that all components are VALID or OPTION OFF:
    select comp_id, version, status from dba_registry;
    
  10. I run Datapatch to ensure all SQL patches are properly applied:
    $ORACLE_HOME/OPatch/datapatch
    

That’s it!

Worth Knowing About Downgrades

  • The downgrade is a two-step process.

    • The first part happens while the database is running in the new Oracle Home. Startup in a special downgrade mode and execute catdwgrd.sql to start the downgrade.
    • Next, restart the database in the old Oracle Home and start in upgrade mode. catrelod.sql will re-install any missing objects in the database and finish the downgrade.
  • Oracle recommends that you install the latest Release Update in both Oracle homes; the one that you downgrade from, and the one to which you downgrade.

  • You can only downgrade if the compatible hasn’t been changed after the upgrade.

  • If the timezone file was upgraded, the same timezone file must be present in the old Oracle Home.

  • Before you start the downgrade, there’s no need to roll off any patches with Datapatch. The downgrade mechanism takes care of that.

  • The data dictionary in a downgraded database is not identical to the pre-upgraded database. The data dictionary will be different, but compatible. Here are some examples:

    • Generally, dropping objects is avoided.
    • New tables are most likely not dropped but truncated.
    • New indexes are most likely kept.
  • Although you can downgrade a database from Oracle Database 23ai to 19c, you can’t undo the multitenant migration. To get back to a non-CDB you must use other means like Data Pump, transportable tablespaces, or GoldenGate.

Want to Try?

Hopefully, you never need to downgrade a PDB. But I bet you can resist the urge to try it. Right? RIGHT?

In our hands-on lab, Hitchhiker’s Guide for Upgrading to Oracle Database 23ai, there is a downgrade exercise. Give it a try. The lab is free to use and doesn’t require any installation – it runs completely inside a browser.

Happy downgrading!

Appendix

Further Reading

Can I Use the Oracle Database 23ai Preinstall RPM for Oracle Database 19c?

A customer asked me:

My ops team wants to use the Oracle Database 23ai preinstallation RPM for all our new servers. For now, the servers will host Oracle Database 19c only. In the future, we will use Oracle Database 23ai on those servers as well.

The preinstallation RPM contains instructions on which packages to install and which system settings to set. According to the Oracle Database 19c Installation Guide for Linux, this is how you run it:

dnf install oracle-database-preinstall-19c

Let’s find out whether you can use the 23ai preinstallation RPM for 19c.

Inspecting the Package

  • I use an Oracle Linux 8 test system. First, I install both packages:

    dnf -y install oracle-database-preinstall-19c
    dnf -y install oracle-database-preinstall-23ai
    
  • Next, I look at the files in the 19c RPM:

    rpm -ql oracle-database-preinstall-19c
    
    /etc/rc.d/init.d/oracle-database-preinstall-19c-firstboot
    /etc/security/limits.d/oracle-database-preinstall-19c.conf
    /etc/sysconfig/oracle-database-preinstall-19c
    /etc/sysconfig/oracle-database-preinstall-19c/oracle-database-preinstall-19c-verify
    /etc/sysconfig/oracle-database-preinstall-19c/oracle-database-preinstall-19c.param
    /usr/bin/oracle-database-preinstall-19c-verify
    /usr/share/licenses/oracle-database-preinstall-19c
    /usr/share/licenses/oracle-database-preinstall-19c/LICENSE
    /var/log/oracle-database-preinstall-19c
    /var/log/oracle-database-preinstall-19c/results
    
  • The file oracle-database-preinstall-19c.param contains the settings, groups, and users. In the 23ai RPM, there is a similar file, oracle-database-preinstall-23ai.param. I can compare the two files to see any differences:

    #Remove comments before comparing
    sed '/^\(#\|kernelcomment\|usercomment\)/d' /etc/sysconfig/oracle-database-preinstall-19c/oracle-database-preinstall-19c.param > /tmp/19c.params
    sed '/^\(#\|kernelcomment\|usercomment\)/d' /etc/sysconfig/oracle-database-preinstall-23ai/oracle-database-preinstall-23ai.param > /tmp/23ai.params
    
    diff /tmp/19c.params /tmp/23ai.params
    
  • Then, I can analyze the differences. < is the 19c setting, > is the 23ai setting.

    28c28
    < kernel:*:*:*:net.ipv4.ip_local_port_range:9000 65500
    ---
    > kernel:*:*:*:net.ipv4.ip_local_port_range:9000 65535
    
    • Port range extended in 23ai.
    52,53c52
    < boot:x86_64:*:*:*:numa:off
    < boot:*:*:*:*:transparent_hugepage:never
    ---
    > boot:*:*:*:*:numa:off
    > boot:*:*:*:*:transparent_hugepage:madvise
    
    • NUMA off for all architectures. Not a big deal, as this is Oracle Linux and Oracle Database runs on 64-bit architecture only.
    • But there is a change in the setting for transparent hugepages. Knowing how much havoc transparent hugepages have caused, this is an important change. I’ll get back to that.
    63a63,64
    > kernel:*:*:*:kernel.panic:10
    
    • Adding a kernel panic setting. Shouldn’t cause any concern.

Transparent Hugepage

  • The setting for transparent hugepages changes from never to madvise. In this setting, the kernel only assigns huge pages to application processes that explicitly request huge pages through the madvise() system call (ref. Oracle Linux 8 – Configuring Huge Pages).

  • The 23ai installation guide lists:

    For optimal performance, Oracle recommends that you set Transparent HugePages to madvise on all Oracle Database servers UEK7 and later kernels and not disable Transparent HugePages as was recommended in prior releases.

  • Let me check my kernel version:

    uname -r
    
    5.15.0-307.178.5.el8uek.x86_64
    
    • el8uek means my kernel is UEK8, so I can use the new setting on this system.
  • But I will use this server for Oracle Database 19c and 23ai, so can I use the new madvise setting?

    Transparent huge page memory is enabled by default on Oracle Linux and Exadata. The ‘madvise’ parameter used in the kernel command enables transparent huge pages and assigns huge pages to memory regions explicitly requested by applications using the madvise system call. In the case that Oracle Database 19c and 23ai are running on the same server, Oracle recommends setting transparent huge pages to ‘madvise’.

    Huge Pages or Transparent Huge Pages in Context of Exadata

  • So, it should be safe to run with the new setting for Oracle Database 19c. If you are concerned, you can revert to never until you install Oracle Database 23ai.

Packages

  • I can find the dependencies of the two preinstallation RPMs:
    rpm -qR oracle-database-preinstall-19c > /tmp/19c.pkgs
    rpm -qR oracle-database-preinstall-23ai > /tmp/23ai.pkgs
    
  • Then, I can find the difference:
    diff /tmp/19c.pkgs /tmp/23ai.pkgs
    
  • There are many differences because the 23ai RPM now lists minimum versions for many packages. Assuming that you automatically install the latest version of the packages, I will disregard those differences.
  • This brings me to this list. These dependencies are not part of the 23ai RPM:
    ethtool
    libaio-devel
    libnsl
    libstdc++-devel
    openssl-libs
    
    • I would need to install those manually if I wanted to use the 23ai RPM.
  • For completeness, these are the new packages in the 23ai RPM:
    fontconfig >= 2.13.1
    policycoreutils
    policycoreutils-python-utils
    

Conclusion

You can use the 23ai preinstallation RPM if you take care of the missing packages.

I recommend running both preinstallation RPMs instead in the listed order:

dnf install oracle-database-preinstall-19c
dnf install oracle-database-preinstall-23ai

Then, you proceed with installation of Oracle homes using AutoUpgrade.

Happy installing!

Appendix

Credits

A thank-you to Rodrigo Jorge for helping with this article.