DEV Community

Abhilash Kumar | Oracle ACE ♠ for Nabhaas Cloud Consulting

Posted on • Edited on

autougpgrade.jar - Provision & switch Oracle Homes ( Hands on lab scenario to move OH from 19.19 to 19.31 and rollback to 19.19 )

{ Abhilash Kumar Bhattaram : Follow on LinkedIn }

Introduction about autoupgrade.jar

Autoupgrade is not only a tool for upgrading databases , it has a whole lot of functions such as

  • Upgrade databases ( automating several steps needed for an upgrade )
  • Provision Oracle Homes
  • Switch to a New Patched Oracle Home ( ( automating several steps needed for patching - Apply RU/OJVM/DPBP )
  • Download Oracle Patches
  • Provision New Oracle Homes
  • Unplug and Plug PDB's across CDB's
  • Convert Non CDB's to PDB's

So in short it is a highly versatile tool and the onus is on the DBA's to understand what use case works best the environment at hand

This the official documentation of autoupgrade.jar

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/about-oracle-database-autoupgrade.html

Scenario at hand - autoupgrade.jar provision new Oracle Homes and attempt a rollback to old Oracle Home

Lets consider the following scenario
I have a cdb1 which is on 19.19

[oracle@oel8-lab01 1_working]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 17 00:23:25 2026
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1577055336 bytes
Fixed Size                  9163880 bytes
Variable Size             385875968 bytes
Database Buffers         1174405120 bytes
Redo Buffers                7610368 bytes
Database mounted.
Database opened.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[oracle@oel8-lab01 1_working]$

[oracle@oel8-lab01 1_working]$ env | grep ORA
ORACLE_UNQNAME=cdb1
ORACLE_SID=cdb1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORA_INVENTORY=/u01/app/oraInventory
ORACLE_HOSTNAME=oel8-lab01.nabhaas.com

/u01/app/oracle/product/19.0.0/dbhome_1 -- 19.19

Enter fullscreen mode Exit fullscreen mode

I would like to do the following at a very high level

#1) Create 19.31 OH using autoupgrade.jar 
#2) Switch the 19.19 CDB to 19.31 OH
#3) Perform a downgrade back to 19.19
Enter fullscreen mode Exit fullscreen mode

Pre-requisites

Before we start working on autoupgrade.jar , a few things to note about it.

  1. Always use the latest autoupgrade.jar at all times to make use of the improved workflows in each version. The latest version is always available for download here - https://download.oracle.com/otn-pub/otn_software/autoupgrade.jar

Below is the latest version of autoupgrade as on date.

[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -version
build.version 26.3.260401
build.date 2026/04/01 20:09:34 +0000
build.hash b5bb11008
build.hash_date 2026/03/27 14:05:56 +0000
build.supported_target_versions 12.2,18,19,21,23,26
build.type production
build.label (HEAD, tag: v26.3, origin/stable_devel, stable_devel)
build.MOS_NOTE KB123450
build.MOS_LINK https://support.oracle.com/support/?anchorId=&kmContentId=2485457&page=sptemplate&sptemplate=km-article

Enter fullscreen mode Exit fullscreen mode
  1. autoupgrade.jar using openjdk8 at a minimum , I have used ( yum install openjdk ) to use for autoupgrade.jar , you could provision your own openjdk8 or JDK8 per your preference.

  2. Always backup Oracle Homes before start of any activity
    In general I use the following script as long as /u01 is dedicated for my DB and GI Homes , feel free modify the script as per your needs. This is based on MOS Note 565017.1

----- cat /home/oracle/scripts/oh_backup.sh 
# Run as Root user (Doc ID 565017.1)
export NOW=$(date +"%Y_%m_%d_%H%M%S")
export ip=`hostname -i`
export host=`hostname`
df -h /u01
ls -l /u01

### Tar Backup For DB & GI Home in /u01
export bkp_dir=/nfs_backup/oh_backup
cd /u01
tar -pcvf ${bkp_dir}/u01appbkp_${host}_${ip}_${NOW}.tar app 

Enter fullscreen mode Exit fullscreen mode

autoupgrade.jar - Provision new Oracle Homes

Since our DB Home for CDB is in 19.19 we need to have the following before proceeding to work on autoupgrade.jar. In this scenario download the patches and stage rather than autoupgrade.jar diwnloading it , would be the case in most regulated environments.

#1) A dedicated staging area for patches , in my case /u01/Disks/19c/

oracle@oel8-lab01 1_working]$ ls -l /u01/Disks/19c/
total 4127132
-rw-r--r--. 1 oracle oinstall    7016621 Jun 16 13:56 autoupgrade.jar
-rw-r--r--. 1 oracle oinstall        335 Jun 16 20:34 create-19-31.cfg
-rw-r--r--. 1 oracle oinstall 2415583176 Jun 16 11:38 LINUX.ARM64_1919000_db_home.zip
-rw-r--r--. 1 oracle oinstall        256 Jun 17 01:25 move-19-31.cfg
-rw-r--r--. 1 oracle oinstall        268 Jun 17 01:33 move-back-19-19.cfg
-rw-r--r--. 1 oracle oinstall 1734668614 Jun 16 11:38 p39034528_190000_Linux-ARM-64.zip
-rw-r--r--. 1 oracle oinstall   68892347 Jun 16 14:16 p6880880_190000_Linux-ARM-64.zip
[oracle@oel8-lab01 1_working]$ 


p39034528_190000_Linux-ARM-64.zip - My 19.31 patchset for Linux ARM-64
p6880880_190000_Linux-ARM-64.zip - My 19.31 patchset for Linux ARM-64

#2) Create Config files for Provisioning Oracle Home 19.31 - create-19-31.cfg

I have created an empty directory for /u01/app/oracle/product/19.0.0/dbhome_19-31 to stage my 19.31 OH 

[oracle@oel8-lab01 1_working]$ cat /u01/Disks/19c/create-19-31.cfg 
global.global_log_dir=/home/oracle/autoupgrade/logs
patch1.target_home=/u01/app/oracle/product/19.0.0/dbhome_19-31
patch1.folder=/u01/Disks/19c
patch1.patch=RU:19.31,OPATCH
patch1.home_settings.oracle_base=/u01/app/oracle
patch1.home_settings.edition=EE
patch1.home_settings.inventory_location=/u01/app/oraInventory
patch1.download=no

Enter fullscreen mode Exit fullscreen mode

Lets analyze if my config file is fine using the -analyze

java -jar autoupgrade.jar -config create-19-31.cfg -patch -mode analyze
Enter fullscreen mode Exit fullscreen mode

Now creating Oracle Homes using -mode create_home



[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config create-19-31.cfg -patch -mode create_home
AutoUpgrade Patching 26.3.260401 launched with default internal options
Processing config file ...

There were conditions found preventing AutoUpgrade Patching from successfully running

*Validating Oracle Patch files
A newer OPatch version file is not found in /u01/Disks/19c for the job with prefix patch1

[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config create-19-31.cfg -patch -mode create_home
Previous execution found loading latest data
Total jobs recovered: 1
+-----------------------------------------+
| Starting AutoUpgrade Patching execution |
+-----------------------------------------+
Type 'help' to list console commands
patch> ;sj
Unrecognized cmd: ;sj
patch> lsj
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
|Job#|      DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                                 MESSAGE|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
| 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING|  20:34:45| 5s ago|DATABASE RELEASE UPDATE 19.31.0.0.0 (REL|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
Total jobs 1

patch> lsj
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
|Job#|      DB_NAME|      STAGE|OPERATION| STATUS|START_TIME|UPDATED|                                 MESSAGE|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+
| 100|create_home_1|OH_PATCHING|EXECUTING|RUNNING|  20:34:45|23s ago|DATABASE RELEASE UPDATE 19.31.0.0.0 (REL|
+----+-------------+-----------+---------+-------+----------+-------+----------------------------------------+


###### Checking Log files 

[oracle@oel8-lab01 bin]$ cat /home/oracle/autoupgrade/logs/cfgtoollogs/patch/auto/status/status.log
==========================================
   AutoUpgrade Patching Summary Report
==========================================
[Date]           Tue Jun 16 20:41:07 EDT 2026
[Number of Jobs] 1
==========================================
[Job ID] 100
==========================================
[DB Name]                create_home_1
[Version Before AutoUpgrade Patching] 19.0.0.0.0
[Version After AutoUpgrade Patching]  19.31.0.0.0
------------------------------------------
[Stage Name]    PENDING
[Status]        SUCCESS
[Start Time]    2026-06-16 20:34:46
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/pending
------------------------------------------
[Stage Name]    PREACTIONS
[Status]        SUCCESS
[Start Time]    2026-06-16 20:34:46
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/preaction
------------------------------------------
[Stage Name]    EXTRACT
[Status]        SUCCESS
[Start Time]    2026-06-16 20:34:46
[Duration]      0:00:29
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/extract
------------------------------------------
[Stage Name]    DBTOOLS
[Status]        SUCCESS
[Start Time]    2026-06-16 20:35:15
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/dbtools
------------------------------------------
[Stage Name]    INSTALL
[Status]        SUCCESS
[Start Time]    2026-06-16 20:35:16
[Duration]      0:00:33
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/install
------------------------------------------
[Stage Name]    OH_PATCHING
[Status]        SUCCESS
[Start Time]    2026-06-16 20:38:17
[Duration]      0:02:49
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/opatch
------------------------------------------
[Stage Name]    OPTIONS
[Status]        SUCCESS
[Start Time]    2026-06-16 20:41:07
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/options
------------------------------------------
[Stage Name]    ROOTSH
[Status]        SUCCESS
[Start Time]    2026-06-16 20:41:07
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/rootsh
------------------------------------------
[Stage Name]    DISPATCH
[Status]        SUCCESS
[Start Time]    2026-06-16 20:41:07
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/dispatch
------------------------------------------
[Stage Name]    POSTACTIONS
[Status]        SUCCESS
[Start Time]    2026-06-16 20:41:07
[Duration]      0:00:00
[Log Directory] /home/oracle/autoupgrade/logs/create_home_1/100/postaction
------------------------------------------
[oracle@oel8-lab01 bin]$ 

Enter fullscreen mode Exit fullscreen mode

This shows the create new Oracle Homes 19.31 is created in /u01/app/oracle/product/19.0.0/dbhome_19-31

autoupgrade.jar - move to new Oracle Home provisioned

Now lets switch teh CDB with all its PDB's to the new Oracle home , its always a good idea to use analyze the config file

Below is the config file to move the CDB from 19.19 to 19.31

[oracle@oel8-lab01 19c]$ cat move-19-31.cfg
upg1.log_dir=/home/oracle/autoupgrade/logs
upg1.sid=cdb1
upg1.source_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_19-31
upg1.start_time=NOW
upg1.upgrade_node=oel8-lab01.nabhaas.com
upg1.target_version=19
[oracle@oel8-lab01 19c]$ 
Enter fullscreen mode Exit fullscreen mode
java -jar autoupgrade.jar -config move-19-31.cfg -mode analyze
Enter fullscreen mode Exit fullscreen mode

Now for our lab I induced a few failures to simulate troubleshooting with autoupgrade.jar

[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config move-19-31.cfg -mode analyze
No parameter 'global.global_log_dir' found in config file, using /u01/app/oracle/cfgtoollogs/autoupgrade
AutoUpgrade 26.3.260401 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 CDB(s) plus 2 PDB(s) will be analyzed
Type 'help' to list console commands
upg> 


[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config move-19-31.cfg -mode analyze
No parameter 'global.global_log_dir' found in config file, using /u01/app/oracle/cfgtoollogs/autoupgrade
AutoUpgrade 26.3.260401 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 CDB(s) plus 2 PDB(s) will be analyzed
Type 'help' to list console commands
upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|                     MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
| 100|   cdb1|PRECHECKS|EXECUTING|RUNNING|  00:04:44|12s ago|Loading database information|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
Total jobs 1

upg> 

pg> logs
AutoUpgrade logs folder [/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto]
logs folder [cdb1][/home/oracle/autoupgrade/logs/cdb1]

upg> Job 100 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]

Please check the summary report at:
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
[oracle@oel8-lab01 19c]$ 


[oracle@oel8-lab01 19c]$ cat /u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
==========================================
          Autoupgrade Summary Report
==========================================
[Date]           Wed Jun 17 00:05:25 EDT 2026
[Number of Jobs] 1
==========================================
[Job ID] 100
==========================================
[DB Name]                cdb1
[Version Before Upgrade] 19.19.0.0.0
[Version After Upgrade]  19.31.0.0.0
------------------------------------------
[Stage Name]    PRECHECKS
[Status]        FAILURE
[Start Time]    2026-06-17 00:04:44
[Duration]      0:00:40
[Log Directory] /home/oracle/autoupgrade/logs/cdb1/100/prechecks
[Detail]        /home/oracle/autoupgrade/logs/cdb1/100/prechecks/cdb1_preupgrade.log
                Check failed for CDB$ROOT, manual intervention needed for the below checks
                [FLASH_RECOVERY_AREA_SETUP, ARCHIVE_MODE_ON]
Cause:The following checks have ERROR severity and no auto fixup is available or
the fixup failed to resolve the issue. Fix them before continuing:
CDB$ROOT FLASH_RECOVERY_AREA_SETUP
CDB$ROOT ARCHIVE_MODE_ON
Reason:Database Checks has Failed details in /home/oracle/autoupgrade/logs/cdb1/100/prechecks
Action:[MANUAL]
Info:Return status is ERROR
ExecutionError:No
Error Message:The following checks have ERROR severity and no auto fixup is available or
the fixup failed to resolve the issue. Fix them before continuing:
CDB$ROOT FLASH_RECOVERY_AREA_SETUP
CDB$ROOT ARCHIVE_MODE_ON

------------------------------------------
[oracle@oel8-lab01 19c]$ 

Enter fullscreen mode Exit fullscreen mode

As you can see the following are observed.

  • CDB in 19.19 must be archivelog mode ( as a Guaranteed Restore Point will be Created )
  • Flashback must be enabled in the database

So let's enable these in the CDB 19.19 OH where the database is currently residing in.



00:16:41 SQL> select instance_name, status, host_name, version, startup_time from gv$instance;

INSTANCE_NAME   |STATUS         |HOST_NAME                                                       |VERSION          |STARTUP_TIME
----------------|---------------|----------------------------------------------------------------|-----------------|--------------------
cdb1            |OPEN           |oel8-lab01.nabhaas.com                                          |19.0.0.0.0       |16-JUN-2026 23:56:52

00:16:41 SQL> select dbid, name, db_unique_name,flashback_on,force_logging,log_mode, open_mode, database_role, sysdate from gv$database;

      DBID|NAME     |DB_UNIQUE_NAME                |FLASHBACK_ON   |FORCE_LOGGING  |LOG_MODE       |OPEN_MODE           |DATABASE_ROLE       |SYSDATE
----------|---------|------------------------------|---------------|---------------|---------------|--------------------|--------------------|--------------------
1209803795|CDB1     |cdb1                          |NO             |NO             |NOARCHIVELOG   |READ WRITE          |PRIMARY             |17-JUN-2026 00:16:41


db1> show parameter reco

NAME                                |TYPE       |VALUE
------------------------------------|-----------|------------------------------
control_file_record_keep_time       |integer    |7
db_recovery_file_dest               |string     |
db_recovery_file_dest_size          |big integer|0
db_unrecoverable_scn_tracking       |boolean    |TRUE
recovery_parallelism                |integer    |0
remote_recovery_file_dest           |string     |


Elapsed: 00:00:00.00
cdb1> alter system set db_recovery_file_dest='/u01/oradata' scope=spfile;

System altered.

cdb1> alter system set db_recovery_file_dest_size=40g;

System altered.

Elapsed: 00:00:00.00
cdb1> show parameter reco

NAME                                |TYPE       |VALUE
------------------------------------|-----------|------------------------------
control_file_record_keep_time       |integer    |7
db_recovery_file_dest               |string     |
db_recovery_file_dest_size          |big integer|40G
db_unrecoverable_scn_tracking       |boolean    |TRUE
recovery_parallelism                |integer    |0
remote_recovery_file_dest           |string     |
cdb1> 


db1> shu immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
cdb1> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[oracle@oel8-lab01 1_working]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 17 00:23:25 2026
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1577055336 bytes
Fixed Size                  9163880 bytes
Variable Size             385875968 bytes
Database Buffers         1174405120 bytes
Redo Buffers                7610368 bytes
Database mounted.
Database opened.
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Current log sequence           9
SQL> shu immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[oracle@oel8-lab01 1_working]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 17 00:26:57 2026
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup mount;
ORACLE instance started.

Total System Global Area 1577055336 bytes
Fixed Size                  9163880 bytes
Variable Size             385875968 bytes
Database Buffers         1174405120 bytes
Redo Buffers                7610368 bytes
Database mounted.
SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Next log sequence to archive   9
Current log sequence           9
SQL> show parameter reco

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
db_recovery_file_dest                string      /u01/oradata
db_recovery_file_dest_size           big integer 40G
db_unrecoverable_scn_tracking        boolean     TRUE
recovery_parallelism                 integer     0
remote_recovery_file_dest            string
SQL> 


cdb1> alter database flashback on;

Database altered.

Elapsed: 00:00:00.08
cdb1> @info

Session altered.

cdb1> alter database flashback on;

Database altered.

Elapsed: 00:00:00.08
cdb1> @info

Session altered.

Elapsed: 00:00:00.00
00:29:41 cdb1> select instance_name, status, host_name, version, startup_time from gv$instance;

INSTANCE_NAME   |STATUS         |HOST_NAME                                                       |VERSION          |STARTUP_TIME
----------------|---------------|----------------------------------------------------------------|-----------------|--------------------
cdb1            |OPEN           |oel8-lab01.nabhaas.com                                          |19.0.0.0.0       |17-JUN-2026 00:27:07

Elapsed: 00:00:00.00
00:29:41 cdb1> select dbid, name, db_unique_name,flashback_on,force_logging,log_mode, open_mode, database_role, sysdate from gv$database;

                DBID|NAME                                    |DB_UNIQUE_NAME                |FLASHBACK_ON   |FORCE_LOGGING  |LOG_MODE       |OPEN_MODE           |DATABASE_ROLE       |SYSDATE
--------------------|----------------------------------------|------------------------------|---------------|---------------|---------------|--------------------|--------------------|--------------------
          1209803795|CDB1                                    |cdb1                          |YES            |NO             |ARCHIVELOG     |READ WRITE          |PRIMARY             |17-JUN-2026 00:29:41



cdb1> -- Flash back Log Files
cdb1> set lines 1000
cdb1> COLUMN "Log NO" FOR 9,999
cdb1> COLUMN "Thread No" FOR 99
cdb1> COLUMN "Seq No" FOR 9999999999
cdb1> COLUMN "Size(GB)" FOR 999,999
cdb1> COLUMN "First Chg No" FOR 999,999,999,999,999,999
cdb1> col name for a80
cdb1>  SELECT
  2       log# as "Log No",
  3       thread# as "Thread No",
  4       sequence# as "Seq No",
  5       name,
  6       bytes/1024/1024/1024 as "Size(GB)",
  7       first_change# as "First Chg No",
  8       first_time
  9  FROM
 10     v$flashback_database_logfile
 11  ORDER BY first_time;

Log No|Thread No|     Seq No|NAME                                                                            |Size(GB)|            First Chg No|FIRST_TIME
------|---------|-----------|--------------------------------------------------------------------------------|--------|------------------------|--------------------
     1|        1|          1|/u01/oradata/CDB1/flashback/o1_mf_o348ohww_.flb                                 |       0|               1,243,005|17-JUN-2026 00:29:35
     2|        1|          1|/u01/oradata/CDB1/flashback/o1_mf_o348ojdj_.flb                                 |       0|                       0|

Elapsed: 00:00:00.01
cdb1> 
cdb1> 

Enter fullscreen mode Exit fullscreen mode

The above articulates archive logging flashback is enabled.

Lets retry the swicthing to new 19.31 which is /u01/app/oracle/product/19.0.0/dbhome_19-31

Retrying the same -analyze as earlier.

java -jar autoupgrade.jar -config move-19-31.cfg -mode analyze
Enter fullscreen mode Exit fullscreen mode

We can now see the -analyze for moving to a 19.31 has not spotted any failures.


[oracle@oel8-lab01 19c]$ cat move-19-31.cfg 
upg1.log_dir=/home/oracle/autoupgrade/logs
upg1.sid=cdb1
upg1.source_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_19-31
upg1.start_time=NOW
upg1.upgrade_node=oel8-lab01.nabhaas.com
upg1.target_version=19
[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config move-19-31.cfg -mode analyze
No parameter 'global.global_log_dir' found in config file, using /u01/app/oracle/cfgtoollogs/autoupgrade
AutoUpgrade 26.3.260401 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 CDB(s) plus 2 PDB(s) will be analyzed
Type 'help' to list console commands
upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|                     MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
| 101|   cdb1|PRECHECKS|EXECUTING|RUNNING|  00:34:51| 1s ago|Loading database information|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
Total jobs 1

upg> logs
AutoUpgrade logs folder [/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto]
logs folder [cdb1][/home/oracle/autoupgrade/logs/cdb1]


upg> Job 101 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]

Please check the summary report at:
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
[oracle@oel8-lab01 19c]$ 

upg> 


oracle@oel8-lab01 auto]$ cat /u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
==========================================
          Autoupgrade Summary Report
==========================================
[Date]           Wed Jun 17 00:35:39 EDT 2026
[Number of Jobs] 1
==========================================
[Job ID] 101
==========================================
[DB Name]                cdb1
[Version Before Upgrade] 19.19.0.0.0
[Version After Upgrade]  19.31.0.0.0
------------------------------------------
[Stage Name]    PRECHECKS
[Status]        SUCCESS
[Start Time]    2026-06-17 00:34:51
[Duration]      0:00:47
[Log Directory] /home/oracle/autoupgrade/logs/cdb1/101/prechecks
[Detail]        /home/oracle/autoupgrade/logs/cdb1/101/prechecks/cdb1_preupgrade.log
                Check passed and no manual intervention needed
------------------------------------------
[oracle@oel8-lab01 auto]$ 

Enter fullscreen mode Exit fullscreen mode

Now lets move the CDB from 19.19 to 19.31 using the -deploy option

java -jar autoupgrade.jar -config move-19-31.cfg -mode deploy

### No changes in config file , showing here for reference
[oracle@oel8-lab01 19c]$ cat move-19-31.cfg 
upg1.log_dir=/home/oracle/autoupgrade/logs
upg1.sid=cdb1
upg1.source_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_19-31
upg1.start_time=NOW
upg1.upgrade_node=oel8-lab01.nabhaas.com
upg1.target_version=19

Enter fullscreen mode Exit fullscreen mode

Running the -deploy
Some commands for reference as soon as the autoupgrade.jar kicks off

  • lsj [ List autoupgrade Jobs ]
  • lsj -a [ List autoupgrade jobs repeatedly to monitor the jobs ]
[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config move-19-31.cfg -mode deploy
No parameter 'global.global_log_dir' found in config file, using /u01/app/oracle/cfgtoollogs/autoupgrade
AutoUpgrade 26.3.260401 launched with default internal options
Processing config file ...
+--------------------------------+
| Starting AutoUpgrade execution |
+--------------------------------+
1 CDB(s) plus 2 PDB(s) will be processed
Type 'help' to list console commands
upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|                     MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
| 102|   cdb1|PRECHECKS|EXECUTING|RUNNING|  00:40:01| 2s ago|Loading database information|
+----+-------+---------+---------+-------+----------+-------+----------------------------+
Total jobs 1

upg> logs
AutoUpgrade logs folder [/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto]
logs folder [cdb1][/home/oracle/autoupgrade/logs/cdb1]

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   cdb1|PREFIXUPS|EXECUTING|RUNNING|  00:40:01| 2s ago|Executing fixups|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> lsj
+----+-------+---------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+---------+---------+-------+----------+-------+----------------+
| 102|   cdb1|PREFIXUPS|EXECUTING|RUNNING|  00:40:01|10s ago|Executing fixups|
+----+-------+---------+---------+-------+----------+-------+----------------+
Total jobs 1

upg> 

pg> lsj -a
upg> +----+-------+---------+---------+-------+----------+-------+--------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|             MESSAGE|
+----+-------+---------+---------+-------+----------+-------+--------------------+
| 102|   cdb1|DBUPGRADE|EXECUTING|RUNNING|  00:40:01|41s ago|12%Patching CDB$ROOT|
+----+-------+---------+---------+-------+----------+-------+--------------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+---------+---------+-------+----------+-------+--------------------+
|Job#|DB_NAME|    STAGE|OPERATION| STATUS|START_TIME|UPDATED|             MESSAGE|
+----+-------+---------+---------+-------+----------+-------+--------------------+
| 102|   cdb1|DBUPGRADE|EXECUTING|RUNNING|  00:40:01|48s ago|12%Patching CDB$ROOT|
+----+-------+---------+---------+-------+----------+-------+--------------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT


The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+----------+---------+-------+----------+-------+----------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 6s ago|Executing fixups|
+----+-------+----------+---------+-------+----------+-------+----------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+----------+---------+-------+----------+-------+----------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 1s ago|Executing fixups|
+----+-------+----------+---------+-------+----------+-------+----------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+----------+---------+-------+----------+-------+----------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 0s ago|Executing fixups|
+----+-------+----------+---------+-------+----------+-------+----------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+----------+---------+-------+----------+-------+----------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 7s ago|Executing fixups|
+----+-------+----------+---------+-------+----------+-------+----------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+----------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|         MESSAGE|
+----+-------+----------+---------+-------+----------+-------+----------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 5s ago|Executing fixups|
+----+-------+----------+---------+-------+----------+-------+----------------+
Total jobs 1
.
.
.
.
.
.

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+------------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|           MESSAGE|
+----+-------+----------+---------+-------+----------+-------+------------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 2s ago|Refreshing DB info|
+----+-------+----------+---------+-------+----------+-------+------------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+------------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|           MESSAGE|
+----+-------+----------+---------+-------+----------+-------+------------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 9s ago|Refreshing DB info|
+----+-------+----------+---------+-------+----------+-------+------------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+-------------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|            MESSAGE|
+----+-------+----------+---------+-------+----------+-------+-------------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 0s ago|Re-Executing Checks|
+----+-------+----------+---------+-------+----------+-------+-------------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
+----+-------+----------+---------+-------+----------+-------+-------------------+
|Job#|DB_NAME|     STAGE|OPERATION| STATUS|START_TIME|UPDATED|            MESSAGE|
+----+-------+----------+---------+-------+----------+-------+-------------------+
| 102|   cdb1|POSTFIXUPS|EXECUTING|RUNNING|  00:40:01| 1s ago|Re-Executing Checks|
+----+-------+----------+---------+-------+----------+-------+-------------------+
Total jobs 1

The command lsj is running every 7 seconds. PRESS ENTER TO EXIT
Job 102 completed
------------------- Final Summary --------------------
Number of databases            [ 1 ]

Jobs finished                  [1]
Jobs failed                    [0]
Jobs restored                  [0]
Jobs pending                   [0]

---- Drop GRP at your convenience once you consider it is no longer needed ----
Drop GRP from cdb1: drop restore point AUTOUPGRADE_9212_CDB11919000


Please check the summary report at:
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.html
/u01/app/oracle/cfgtoollogs/autoupgrade/cfgtoollogs/upgrade/auto/status/status.log
[oracle@oel8-lab01 19c]$ 

Enter fullscreen mode Exit fullscreen mode

Checking autoupgrade log files , this shows switching to 19.30 has gone well



[oracle@oel8-lab01 102]$ pwd
/home/oracle/autoupgrade/logs/cdb1/102
[oracle@oel8-lab01 102]$ tail -50f autoupgrade_20260617.log
.
.


2026-06-17 00:54:56.802 INFO [81] Completed retrieving next JobStage - JobDefinition.getNextStage#101 
2026-06-17 00:54:56.802 INFO [81] Starting background threads for [oracle.upgrade.autoupgrade.dispatcher.facade.subsystems.ExecuteSysUpdates] - JobStage.startThreads#160 
2026-06-17 00:54:56.802 INFO [81] Completed starting background threads for [oracle.upgrade.autoupgrade.dispatcher.facade.subsystems.ExecuteSysUpdates] - JobStage.startThreads#162 
2026-06-17 00:54:56.806 INFO [81] Executing stage SYSUPDATES of job 102 - RunJobDefinition.runJob#141 
2026-06-17 00:54:56.806 INFO [81] Running JobStageAction [oracle.upgrade.autoupgrade.dispatcher.facade.subsystems.ExecuteSysUpdates] - JobStage.executeStage#78 
2026-06-17 00:54:57.672 INFO [81] The status of the JobStageAction [oracle.upgrade.autoupgrade.dispatcher.facade.subsystems.ExecuteSysUpdates] was [true] - JobStage.executeStage#86 
2026-06-17 00:54:57.675 INFO [81] Completed stage SYSUPDATES of job 102 - RunJobDefinition.runJob#149 
2026-06-17 00:54:57.675 INFO [81] Stopping background threads for [oracle.upgrade.autoupgrade.dispatcher.facade.subsystems.ExecuteSysUpdates] - JobStage.stopThreads#169 
2026-06-17 00:54:57.675 INFO [81] Completed stopping background threads for [oracle.upgrade.autoupgrade.dispatcher.facade.subsystems.ExecuteSysUpdates] - JobStage.stopThreads#171 
2026-06-17 00:54:57.677 INFO [81] Adding Job context key[dispatcher_stage] value[13] for job [102] - CommonBackBone.addJobContext#270 
2026-06-17 00:54:57.679 INFO [81] Stopping background threads for Job - JobDefinition.stopJobThreads#132 
2026-06-17 00:54:57.679 INFO [81] [0] threads have been stopped by JobDefinition - JobDefinition.stopJobThreads#134 
2026-06-17 00:54:57.679 INFO [81] Dispatcher finished for 102 - RunJobDefinition.runJob#177 
2026-06-17 00:54:57.679 INFO [81] End  - RunJobDefinition.runJob#178 
2026-06-17 00:54:57.688 INFO [81] ----------------------Stages  Summary------------------------ - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     SETUP             <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     GRP               <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     PREUPGRADE        <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     PRECHECKS         1 min                                   - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     PREFIXUPS         2 min                                   - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     DRAIN             <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     DBUPGRADE         9 min                                   - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     DISPATCH          <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     POSTCHECKS        <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     DISPATCH          <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     POSTFIXUPS        1 min                                   - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     POSTUPGRADE       <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     SYSUPDATES        <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81]     COMPLETED         <1 min                                  - Utilities.writeStageSummary#1157 
2026-06-17 00:54:57.688 INFO [81] End of dispatcher instance for cdb1 - CommonBackBone.finalJobLogging#436 
^C
[oracle@oel8-lab01 102]$ pwd

Enter fullscreen mode Exit fullscreen mode

Checking Oracle DB versions and dba_registry , we observe the following

  • SQL*Plus Version has changed to 19.31
  • dba_registry has all components showing to 19.31
  • Guaranteed restore point AUTOUPGRADE_9212_CDB11919000 was created prior to starting the switching Oracle Home
  • We can see flashback logs were created for the above Guaranteed restore point

[oracle@oel8-lab01 19c]$ echo $ORACLE_HOME
/u01/app/oracle/product/19.0.0/dbhome_1
[oracle@oel8-lab01 19c]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_19-31
[oracle@oel8-lab01 1_working]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 17 01:00:06 2026
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.31.0.0.0

SQL> @info

Session altered.

01:00:11 SQL> select instance_name, status, host_name, version, startup_time from gv$instance;

INSTANCE_NAME   |STATUS         |HOST_NAME                                                       |VERSION          |STARTUP_TIME
----------------|---------------|----------------------------------------------------------------|-----------------|--------------------
cdb1            |OPEN           |oel8-lab01.nabhaas.com                                          |19.0.0.0.0       |17-JUN-2026 00:44:14

01:00:11 SQL> select dbid, name, db_unique_name,flashback_on,force_logging,log_mode, open_mode, database_role, sysdate from gv$database;

      DBID|NAME     |DB_UNIQUE_NAME                |FLASHBACK_ON   |FORCE_LOGGING  |LOG_MODE       |OPEN_MODE           |DATABASE_ROLE       |SYSDATE
----------|---------|------------------------------|---------------|---------------|---------------|--------------------|--------------------|--------------------
1209803795|CDB1     |cdb1                          |YES            |YES            |ARCHIVELOG     |READ WRITE          |PRIMARY             |17-JUN-2026 01:00:11



SQL> select * from dba_registry;

COMP_ID
------------------------------
COMP_NAME
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VERSION                       |VERSION_FULL                  |STATUS         |MODIFIED                     |NAMESPACE
------------------------------|------------------------------|---------------|-----------------------------|------------------------------
CONTROL
--------------------------------------------------------------------------------------------------------------------------------
SCHEMA
--------------------------------------------------------------------------------------------------------------------------------
PROCEDURE                                                                                                                       |STARTUP |PARENT_ID
--------------------------------------------------------------------------------------------------------------------------------|--------|------------------------------
OTHER_SCHEMAS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CATALOG
Oracle Database Catalog Views
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:30         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATALOG                                                                                              |        |


CATPROC
Oracle Database Packages and Types
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:30         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATPROC                                                                                              |        |
APPQOSSYS,AUDSYS,DBSFWUSER,DBSNMP,DIP,GGSYS,GSMADMIN_INTERNAL,GSMCATUSER,GSMROOTUSER,GSMUSER,ORACLE_OCM,OUTLN,REMOTE_SCHEDULER_AGENT,SYS$UMF,SYSBACKUP,SYSDG,SYSKM,SYSRAC,SYSTEM

RAC
Oracle Real Application Clusters
19.0.0.0.0                    |19.31.0.0.0                   |OPTION OFF     |09-JUN-2023 00:12:23         |SERVER
SYS
SYS
DBMS_CLUSTDB.VALIDATE                                                                                                           |        |


JAVAVM
JServer JAVA Virtual Machine
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
INITJVMAUX.VALIDATE_JAVAVM                                                                                                      |        |
OJVMSYS

XML
Oracle XDK
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
XMLVALIDATE                                                                                                                     |        |


CATJAVA
Oracle Database Java Packages
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATJAVA                                                                                              |        |


APS
OLAP Analytic Workspace
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
APS_VALIDATE                                                                                                                    |        |


XDB
Oracle XML Database
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:30         |SERVER
SYS
XDB
DBMS_REGXDB.VALIDATEXDB                                                                                                         |        |
ANONYMOUS,XS$NULL

OWM
Oracle Workspace Manager
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
WMSYS
VALIDATE_OWM                                                                                                                    |        |


CONTEXT
Oracle Text
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
CTXSYS
VALIDATE_CONTEXT                                                                                                                |        |


ORDIM
Oracle Multimedia
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
ORDSYS
VALIDATE_ORDIM                                                                                                                  |        |
MDSYS,ORDDATA,ORDPLUGINS,SI_INFORMTN_SCHEMA

SDO
Spatial
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
MDSYS
VALIDATE_SDO                                                                                                                    |        |
MDDATA,MDSYS

DV
Oracle Database Vault
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
DVSYS
VALIDATE_DV                                                                                                                     |        |
DVF

XOQ
Oracle OLAP API
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
OLAPSYS
XOQ_VALIDATE                                                                                                                    |        |


OLS
Oracle Label Security
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
LBACSYS
VALIDATE_OLS                                                                                                                    |        |


15 rows selected.


01:19:01 SQL> select * from v$flash_Recovery_area_usage;

FILE_TYPE           |PERCENT_SPACE_USED|PERCENT_SPACE_RECLAIMABLE|NUMBER_OF_FILES|    CON_ID
--------------------|------------------|-------------------------|---------------|----------
CONTROL FILE        |                 0|                        0|              0|         0
REDO LOG            |                 0|                        0|              0|         0
ARCHIVED LOG        |              3.51|                        0|             33|         0
BACKUP PIECE        |               .04|                        0|              1|         0
IMAGE COPY          |                 0|                        0|              0|         0
FLASHBACK LOG       |              1.46|                        0|             12|         0   <<<<<----
FOREIGN ARCHIVED LOG|                 0|                        0|              0|         0
AUXILIARY DATAFILE C|                 0|                        0|              0|         0
OPY                 |                  |                         |               |



Elapsed: 00:00:00.02
cdb1> SELECT NAME, SCN, TIME, GUARANTEE_FLASHBACK_DATABASE FROM V$RESTORE_POINT;

NAME                                    |                 SCN|TIME                                                                       |GUA
----------------------------------------|--------------------|---------------------------------------------------------------------------|---
AUTOUPGRADE_9212_CDB11919000            |             1244196|17-JUN-26 12.40.02.000000000 AM                                            |YES


cdb1> drop restore point AUTOUPGRADE_9212_CDB11919000;

Restore point dropped.
Enter fullscreen mode Exit fullscreen mode

We have ensured new DB Home has moved to /u01/app/oracle/product/19.0.0/dbhome_19-31 from /u01/app/oracle/product/19.0.0/dbhome_1

Now it's all rainbows and roses until you want to perform a rollback.. which could be due to various reasons...

  • Appling RU patches have a history of inducing internal ORA-00600 errors and amounting to db restarts leading to unwarranted downtime
  • RU Patches have to go through rigirous tetsing in Non Prod Applications in Non production . there might me some integrated application that may not be supporting the latest release.

Though DBA's would have applied patches without issues in Non Production , there are always cases where applying patches have been counter productive , but thats the challenge we need to move ahead of these patches continue applying latest RU's considering the larger risks of not applying patches.

Rollback - Precautions to be taken before any rollback

Whenever you have a rollback situation ( rolling back to older DB RU's ), ensure you have the following

  • Raise an MOS SR as a Priority 1 , there might be one off patches which Oracle has already identified with various customers on what you are facing.

  • If Rollback is mandatory , provision the working Orale Home taken prior to switching to new Oracle Homes , ensure your environment variables are pointing to the 19.19 OH.

Rollback - Use Oracle Documented methods

Every Database release has documented steps on how to downgrade to older Oracle releases

https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/downgrading-oracle-db-after-upgrade.html#GUID-EAF290FD-5F22-4FEE-829D-B3587168471F

To your curiosity does autoupgrade allow moving to older Oracle Homes , I checked it does not allow.

[oracle@oel8-lab01 19c]$ cat move-back-19-19.cfg
global.global_log_dir=/home/oracle/autoupgrade/logs
upg1.sid=cdb1
upg1.source_home=/u01/app/oracle/product/19.0.0/dbhome_19-31
upg1.target_home=/u01/app/oracle/product/19.0.0/dbhome_1
upg1.start_time=NOW
upg1.upgrade_node=oel8-lab01.nabhaas.com
upg1.target_version=19

[oracle@oel8-lab01 19c]$ java -jar autoupgrade.jar -config move-back-19-19.cfg -mode analyze
AutoUpgrade 26.3.260401 launched with default internal options
Processing config file ...
upg1
Source Home RU 19.31.0.0.0 version is greater than Target Home RU 19.19.0.0.0 version
RU apply configuration is invalid for entry upg1

[oracle@oel8-lab01 19c]$ 


Enter fullscreen mode Exit fullscreen mode

The below are the documented steps I had used to move back from 19.31 to 19.19

Check if datapatch has been run before rolling back.


[oracle@oel8-lab01 19c]$ $ORACLE_HOME/OPatch/datapatch -verbose
SQL Patching tool version 19.31.0.0.0 Production on Wed Jun 17 01:35:45 2026
Copyright (c) 2012, 2026, Oracle.  All rights reserved.

Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_15854_2026_06_17_01_35_45/sqlpatch_invocation.log

Connecting to database...OK
Gathering database info...done

Note:  Datapatch will only apply or rollback SQL fixes for PDBs
       that are in an open state, no patches will be applied to closed PDBs.
       Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation
       (Doc ID 1585822.1)

Bootstrapping registry and package to current versions...done
Determining current state...done

Current state of interim SQL patches:
  No interim patches found

Current state of release update SQL patches:
  Binary registry:
    19.31.0.0.0 Release_Update 260515124233: Installed
  PDB CDB$ROOT:
    Applied 19.31.0.0.0 Release_Update 260515124233 successfully on 17-JUN-26 12.47.08.494152 AM
  PDB PDB$SEED:
    Applied 19.31.0.0.0 Release_Update 260515124233 successfully on 17-JUN-26 12.53.30.055176 AM
  PDB PDB1:
    Applied 19.31.0.0.0 Release_Update 260515124233 successfully on 17-JUN-26 12.53.30.069902 AM

Adding patches to installation queue and performing prereq checks...done
Installation queue:
  For the following PDBs: CDB$ROOT PDB$SEED PDB1
    No interim patches need to be rolled back
    No release update patches need to be installed
    No interim patches need to be applied

SQL Patching tool complete on Wed Jun 17 01:36:01 2026
[oracle@oel8-lab01 19c]$ 

Enter fullscreen mode Exit fullscreen mode

Before downgrading the database to older OH (19.19 in our case) Check the dba_registry after running the datapatch , after restarting the database.

Check for Database Vaults if any and clear the dab_audit_trail.


cdb1> SELECT * FROM DBA_DV_STATUS;

NAME                                    |STATUS
----------------------------------------|---------------
DV_APP_PROTECTION                       |NOT CONFIGURED
DV_CONFIGURE_STATUS                     |FALSE
DV_ENABLE_STATUS                        |FALSE

Elapsed: 00:00:00.01
cdb1> SELECT * FROM CDB_DV_STATUS;

NAME                                    |STATUS         |              CON_ID
----------------------------------------|---------------|--------------------
DV_APP_PROTECTION                       |NOT CONFIGURED |                   1
DV_CONFIGURE_STATUS                     |FALSE          |                   1
DV_ENABLE_STATUS                        |FALSE          |                   1
DV_APP_PROTECTION                       |NOT CONFIGURED |                   3
DV_CONFIGURE_STATUS                     |FALSE          |                   3
DV_ENABLE_STATUS                        |FALSE          |                   3

6 rows selected.

Elapsed: 00:00:00.01
cdb1> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;

            COUNT(*)
--------------------
                4240

Elapsed: 00:00:00.03
cdb1>  CREATE TABLE UA_DATA AS (SELECT * FROM UNIFIED_AUDIT_TRAIL);

Table created.

Elapsed: 00:00:00.76
cdb1> EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, use_last_arch_timestamp => FALSE);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.12
cdb1> select * from  V$TIMEZONE_FILE;

FILENAME            |             VERSION|              CON_ID
--------------------|--------------------|--------------------
timezlrg_32.dat     |                  32|                   0

Elapsed: 00:00:00.00
cdb1> show parameter spfile

NAME                                |TYPE       |VALUE
------------------------------------|-----------|------------------------------
spfile                              |string     |/u01/app/oracle/product/19.0.0
                                    |           |/dbhome_1/dbs/spfilecdb1.ora


Enter fullscreen mode Exit fullscreen mode

Create a pfile from spfile for the purpose of downgrade and start the CDB's and PDB's in the 19.19 OH.

NOTE : You will still see 19.31 for all components in dba_registry , this needs to be fixed toi 19.19

cdb1> create pfile='/home/oracle/downgrade.ora' from spfile;

File created.

Elapsed: 00:00:00.00
cdb1> shu immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
cdb1> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0
[oracle@oel8-lab01 1_working]$ 


SQL> startup downgrade pfile='/home/oracle/downgrade.ora'
SQL> alter pluggable database all open downgrade;


oracle@oel8-lab01 1_working]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Jun 17 02:18:46 2026
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup downgrade pfile='/home/oracle/downgrade.ora';
ORACLE instance started.

Total System Global Area 1577055336 bytes
Fixed Size                  9163880 bytes
Variable Size             402653184 bytes
Database Buffers         1157627904 bytes
Redo Buffers                7610368 bytes
Database mounted.
Database opened.
SQL> alter pluggable database all open downgrade;

Pluggable database altered.

SQL> 

cdb1> select * from dba_registry;

COMP_ID
------------------------------
COMP_NAME
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VERSION                       |VERSION_FULL                  |STATUS         |MODIFIED                     |NAMESPACE
------------------------------|------------------------------|---------------|-----------------------------|------------------------------
CONTROL
--------------------------------------------------------------------------------------------------------------------------------
SCHEMA
--------------------------------------------------------------------------------------------------------------------------------
PROCEDURE                                                                                                                       |STARTUP |PARENT_ID
--------------------------------------------------------------------------------------------------------------------------------|--------|------------------------------
OTHER_SCHEMAS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CATALOG
Oracle Database Catalog Views
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:30         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATALOG                                                                                              |        |


CATPROC
Oracle Database Packages and Types
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:30         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATPROC                                                                                              |        |
APPQOSSYS,AUDSYS,DBSFWUSER,DBSNMP,DIP,GGSYS,GSMADMIN_INTERNAL,GSMCATUSER,GSMROOTUSER,GSMUSER,ORACLE_OCM,OUTLN,REMOTE_SCHEDULER_AGENT,SYS$UMF,SYSBACKUP,SYSDG,SYSKM,SYSRAC,SYSTEM

RAC
Oracle Real Application Clusters
19.0.0.0.0                    |19.31.0.0.0                   |OPTION OFF     |09-JUN-2023 00:12:23         |SERVER
SYS
SYS
DBMS_CLUSTDB.VALIDATE                                                                                                           |        |


JAVAVM
JServer JAVA Virtual Machine
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
INITJVMAUX.VALIDATE_JAVAVM                                                                                                      |        |
OJVMSYS

XML
Oracle XDK
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
XMLVALIDATE                                                                                                                     |        |


CATJAVA
Oracle Database Java Packages
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATJAVA                                                                                              |        |


APS
OLAP Analytic Workspace
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
APS_VALIDATE                                                                                                                    |        |


XDB
Oracle XML Database
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:30         |SERVER
SYS
XDB
DBMS_REGXDB.VALIDATEXDB                                                                                                         |        |
ANONYMOUS,XS$NULL

OWM
Oracle Workspace Manager
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
WMSYS
VALIDATE_OWM                                                                                                                    |        |


CONTEXT
Oracle Text
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
CTXSYS
VALIDATE_CONTEXT                                                                                                                |        |


ORDIM
Oracle Multimedia
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
ORDSYS
VALIDATE_ORDIM                                                                                                                  |        |
MDSYS,ORDDATA,ORDPLUGINS,SI_INFORMTN_SCHEMA

SDO
Spatial
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
MDSYS
VALIDATE_SDO                                                                                                                    |        |
MDDATA,MDSYS

DV
Oracle Database Vault
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
DVSYS
VALIDATE_DV                                                                                                                     |        |
DVF

XOQ
Oracle OLAP API
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
OLAPSYS
XOQ_VALIDATE                                                                                                                    |        |


OLS
Oracle Label Security
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
LBACSYS
VALIDATE_OLS                                                                                                                    |        |



15 rows selected.
Enter fullscreen mode Exit fullscreen mode

Use the dbdowngrade , which by default will not have execute permissions




[oracle@oel8-lab01 1_working]$ cd $ORACLE_HOME/bin
[oracle@oel8-lab01 bin]$ ls -l dbdowngrade
-rw-r--r--. 1 oracle oinstall 8336 Feb  9  2018 dbdowngrade
[oracle@oel8-lab01 bin]$ ./dbdowngrade
-bash: ./dbdowngrade: Permission denied
[oracle@oel8-lab01 bin]$ chmod +x dbdowngrade
[oracle@oel8-lab01 bin]$ ./dbdowngrade
Downgrading containers
catcon::set_log_file_base_path: ALL catcon-related output will be written to [/u01/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/downgrade/catdwgrd_catcon_17230.lst]

catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/downgrade/catdwgrd*.log] files for output generated by scripts

catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/downgrade/catdwgrd_*.lst] files for spool files, if any

Diagnostic output produced in conjunction with reporting an error message:
{

2026-06-17 02:21:46 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:12490 catcon::catconInit2 - will retain last 1000 log messages by default

2026-06-17 02:21:46 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:9744 catcon::get_log_file_base_path - log file directory = /u01/app/oracle/product/19.0.0/dbhome_1/cfgtoollogs/downgrade

2026-06-17 02:21:46 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:9758 catcon::get_log_file_base_path - log file base = catdwgrd
.
.
.
.
.
.
.

2026-06-17 02:21:49 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:18322 catcon::catconRevertPdbModes - catcon_RevertSeedPdbMode was not set

2026-06-17 02:21:49 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:18369 catcon::catconRevertPdbModes - catcon_RevertUserPdbModes was not set

2026-06-17 02:21:49 VERBOSE> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:17904 catcon::catconWrapUp - done

2026-06-17 02:21:49 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:9914 catcon::next_proc - sending SIGKILL to SQL*Plus processes

2026-06-17 02:21:49 DEBUG> /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catcon.pm:9918 catcon::next_proc - returning -1 to the caller

}
End of diagnostic output

catcon::pickNextProc: unexpected error in next_proc

catcon::catconExec_int: unexpected error in pickNextProc

catcon::catconExec: set of Containers included the Root, but an error
        was encountered while processing PDBs so no
        attempt will be made to run it in CDB$ROOT

catcon::catconExec: an error (1) was encountered

catcon.pl: unexpected error encountered in catconExec
        while running scripts against Containers at UPGRADE_LEVEL of 1; exiting
catcon::catconWrapUp: catconInit2 has not been run

catcon.pl: completed with errors
[oracle@oel8-lab01 bin]$  
Enter fullscreen mode Exit fullscreen mode

You need to run catcon , catrelod with the below options , ensure your 19.19 OH is set to it's correct environment variables.


[oracle@oel8-lab01 19c]$ env | grep ORA
ORACLE_UNQNAME=cdb1
ORACLE_SID=cdb1
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1  <<-- 19.19 OH
ORA_INVENTORY=/u01/app/oraInventory
ORACLE_HOSTNAME=oel8-lab01.nabhaas.com
Enter fullscreen mode Exit fullscreen mode

Run the following command in screen , for an very small database this took 45 mins for me. This will basically reconfigure all your components in dba_regisry with 19.19

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -e -n 1 -b catrelod -d $ORACLE_HOME/rdbms/admin catrelod.sql
Enter fullscreen mode Exit fullscreen mode

Running catreload with the required arguments

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -e -n 1 -b catrelod -d $ORACLE_HOME/rdbms/admin catrelod.sql



$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -e -n 1 -b catrelod -d $ORACLE_HOME/rdbms/admin catrelod.sql


[oracle@oel8-lab01 ~]$ tail -50f /u01/app/oracle/product/19.0.0/dbhome_1/bin/catrelod0.log 

.
.


Grant succeeded.

SQL> grant read on ku$_m_view_view to public
  2  /

Grant succeeded.

SQL> grant read on ku$_zm_view_view to public
  2  /

Grant succeeded.

SQL> grant read on ku$_m_view_view_base to public
  2  /

Grant succeeded.

SQL> grant read on ku$_m_view_h_view to public
  2  /

Grant succeeded.

SQL> grant read on ku$_zm_view_h_view to public
  2  /

Grant succeeded.

SQL> grant read on ku$_m_view_ph_view to public
  2  /

Grant succeeded.

SQL> grant read on ku$_zm_view_ph_view to public
  2  /

Grant succeeded.

SQL> grant read on ku$_m_view_fh_view to public
  2  /
^C

.
.
.

SQL> alter session set "_ORACLE_SCRIPT" = false;

Session altered.

SQL> 
SQL> 
SQL> 
SQL> Rem *******************************************************************
SQL> Rem END catrelod.sql
SQL> Rem *******************************************************************
SQL> 
END_RUNNING
--------------------------------------------------------------------------------
==== @/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catrelod.sql Container
:PDB1 Id:3 26-06-17 02:44:48 Proc:0 ====


1 row selected.

SQL> 
END_RUNNING
--------------------------------------------------------------------------------
==== @/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catrelod.sql Container
:PDB1 Id:3 26-06-17 02:44:48 Proc:0 ====


1 row selected.

SQL> SQL> 
SQL> SQL>   2  
Session altered.

SQL> SQL> ========== PROCESS ENDED ==========
SQL> ========== Process Terminated by catcon ==========
SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

Enter fullscreen mode Exit fullscreen mode

Now checking dba_registry

cdb1> select * from dba_registry;

COMP_ID
------------------------------
COMP_NAME
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VERSION                       |VERSION_FULL                  |STATUS         |MODIFIED                     |NAMESPACE
------------------------------|------------------------------|---------------|-----------------------------|------------------------------
CONTROL
--------------------------------------------------------------------------------------------------------------------------------
SCHEMA
--------------------------------------------------------------------------------------------------------------------------------
PROCEDURE                                                                                                                       |STARTUP |PARENT_ID
--------------------------------------------------------------------------------------------------------------------------------|--------|------------------------------
OTHER_SCHEMAS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CATALOG
Oracle Database Catalog Views
19.0.0.0.0                    |19.19.0.0.0                   |LOADED         |17-JUN-2026 02:24:24         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATALOG                                                                                              |        |


CATPROC
Oracle Database Packages and Types
19.0.0.0.0                    |19.19.0.0.0                   |LOADED         |17-JUN-2026 02:28:28         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATPROC                                                                                              |        |
APPQOSSYS,AUDSYS,DBSFWUSER,DBSNMP,DIP,GGSYS,GSMADMIN_INTERNAL,GSMCATUSER,GSMROOTUSER,GSMUSER,ORACLE_OCM,OUTLN,REMOTE_SCHEDULER_AGENT,SYS$UMF,SYSBACKUP,SYSDG,SYSKM,SYSRAC,SYSTEM

RAC
Oracle Real Application Clusters
19.0.0.0.0                    |19.19.0.0.0                   |OPTION OFF     |17-JUN-2026 02:29:02         |SERVER
SYS
SYS
DBMS_CLUSTDB.VALIDATE                                                                                                           |        |


JAVAVM
JServer JAVA Virtual Machine
19.0.0.0.0                    |19.31.0.0.0                   |VALID          |17-JUN-2026 00:47:31         |SERVER
SYS
SYS
INITJVMAUX.VALIDATE_JAVAVM                                                                                                      |        |
OJVMSYS

XML
Oracle XDK
19.0.0.0.0                    |19.19.0.0.0                   |VALID          |17-JUN-2026 02:28:37         |SERVER
SYS
SYS
XMLVALIDATE                                                                                                                     |        |


CATJAVA
Oracle Database Java Packages
19.0.0.0.0                    |19.19.0.0.0                   |LOADED         |17-JUN-2026 02:28:41         |SERVER
SYS
SYS
DBMS_REGISTRY_SYS.VALIDATE_CATJAVA                                                                                              |        |


APS
OLAP Analytic Workspace
19.0.0.0.0                    |19.19.0.0.0                   |VALID          |17-JUN-2026 02:28:45         |SERVER
SYS
SYS
APS_VALIDATE                                                                                                                    |        |


XDB
Oracle XML Database
19.0.0.0.0                    |19.19.0.0.0                   |VALID          |17-JUN-2026 02:29:19         |SERVER
SYS
XDB
DBMS_REGXDB.VALIDATEXDB                                                                                                         |        |
ANONYMOUS,XS$NULL

OWM
Oracle Workspace Manager
19.0.0.0.0                    |19.19.0.0.0                   |VALID          |17-JUN-2026 02:29:02         |SERVER
SYS
WMSYS
VALIDATE_OWM                                                                                                                    |        |


CONTEXT
Oracle Text
19.0.0.0.0                    |19.19.0.0.0                   |VALID          |17-JUN-2026 02:28:53         |SERVER
SYS
CTXSYS
VALIDATE_CONTEXT                                                                                                                |        |


ORDIM
Oracle Multimedia
19.0.0.0.0                    |19.19.0.0.0                   |VALID          |17-JUN-2026 02:29:28         |SERVER
SYS
ORDSYS
VALIDATE_ORDIM                                                                                                                  |        |
ORDDATA,ORDPLUGINS,SI_INFORMTN_SCHEMA

SDO
Spatial
19.0.0.0.0                    |19.19.0.0.0                   |INVALID        |17-JUN-2026 02:31:46         |SERVER
SYS
MDSYS
VALIDATE_SDO                                                                                                                    |        |
MDDATA,MDSYS

DV
Oracle Database Vault
19.0.0.0.0                    |19.19.0.0.0                   |INVALID        |17-JUN-2026 02:28:48         |SERVER
SYS
DVSYS
VALIDATE_DV                                                                                                                     |        |
DVF

XOQ
Oracle OLAP API
19.0.0.0.0                    |19.19.0.0.0                   |INVALID        |17-JUN-2026 02:31:50         |SERVER
SYS
OLAPSYS
XOQ_VALIDATE                                                                                                                    |        |


OLS
Oracle Label Security
19.0.0.0.0                    |19.19.0.0.0                   |INVALID        |17-JUN-2026 02:28:47         |SERVER
SYS
LBACSYS
VALIDATE_OLS                                                                                                                    |        |


15 rows selected.

Elapsed: 00:00:00.02
cdb1> 

Enter fullscreen mode Exit fullscreen mode

So this wraps up the rollback activity , cdb1 is back to running under /u01/app/oracle/product/19.0.0/dbhome_1

Learnings

Rollback is a very messy activity

The first take away is every organization have to define to a patching strategy and work backwards.

  • autoupgrade.jar patching in this scenario is out of place patching , so one needs to understand all the TNS entries , listener settings, sqlnet settings needs to be re-validated once moved to a new OH.

  • AutoUpgrade performs extensive pre-validation checks and will not proceed unless all requested patch components (RU, OJVM, DPBP, OPatch) are available and correctly identified.

  • Understanding the distinction between create_home, analyze, deploy, and restore phases is critical for successful execution.

  • AutoUpgrade maintains job state information and automatically resumes previously executed jobs, making it important to review existing job status before restarting an operation.

  • Oracle Home paths must be validated carefully; even minor path inconsistencies can prevent AutoUpgrade from recognizing a target Oracle Home.

  • The create_home functionality significantly simplifies out-of-place patching by automating Oracle Home creation, OPatch installation, inventory configuration, and RU application.

  • AutoUpgrade enforces version validation and prevents unsupported downgrade scenarios by ensuring the target Oracle Home is at the same or higher RU level than the source Oracle Home.

  • Verifying the newly created Oracle Home using opatch lspatches, inventory checks, and Oracle binaries before performing a database move is an essential best practice.

  • Out-of-place patching provides a safer patching strategy because the original Oracle Home remains untouched throughout the process.

  • Rollback procedures are significantly simplified when the original Oracle Home is preserved and available for fallback.

  • AutoUpgrade’s logging framework provides detailed diagnostics that greatly assist in troubleshooting validation, patching, and deployment issues.

  • Testing rollback procedures is as important as testing patch deployment procedures, ensuring operational readiness before production implementations.

  • AutoUpgrade is not merely an upgrade tool; it serves as a comprehensive automation framework for Oracle Home provisioning, patching, database upgrades, database moves, validation, and rollback management.

  • Proper planning, validation, and phased execution can significantly reduce patching risks and minimize manual intervention during Oracle Database maintenance activities.

  • Hands-on testing revealed that AutoUpgrade’s built-in safeguards help prevent many common human errors typically encountered during manual patching and Oracle Home migration exercises.

Reposting here about the main page for autoupgrade for understanding all it's use cases.
https://docs.oracle.com/en/database/oracle/oracle-database/19/upgrd/about-oracle-database-autoupgrade.html

How Nabhaas helps you

If you’ve made it this far, you already sense there’s a better way — in fact, you have a way ahead.

If you’d like Nabhaas to assist in your journey, remember — TAB is just one piece. Our Managed Delivery Service ensures your Oracle operations run smoothly between patch cycles, maintaining predictability and control across your environments.

TAB - Whitepaper ,
download here

Managed Delivery Services - Whitepaper ,
[download here](https://www.nabhaas.com/_files/ugd/dab815_96198a0627d64f75a3d3a2dce9bf185d.pdf

Top comments (0)