{ 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
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
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
Pre-requisites
Before we start working on autoupgrade.jar , a few things to note about it.
- 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
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.
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
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
Lets analyze if my config file is fine using the -analyze
java -jar autoupgrade.jar -config create-19-31.cfg -patch -mode analyze
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]$
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]$
java -jar autoupgrade.jar -config move-19-31.cfg -mode analyze
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]$
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>
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
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]$
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
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]$
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
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.
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
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]$
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]$
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
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.
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]$
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
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
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
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>
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 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









