The first thing to do is to check the Images that you have in your ExaCC. This might be a long list, so I am showing a reduced version of it.
.
[root@hostname1 ~]# dbaascli cswlib showImages
...
30.IMAGE_TAG=19.11.0.0.0
VERSION=19.11.0.0.0
DESCRIPTION=19c APR 2021 DB Image
IMAGE_ALIASES=19000-191100,19000-APR2021
31.IMAGE_TAG=19.11.0.0.0-NC
VERSION=19.11.0.0.0
DESCRIPTION=19c APR 2021 Non CDB Image
IMAGE_ALIASES=19000-NC191100,19000-NCAPR2021,NC19.11.0.0.0-NC
...
GI:
8.IMAGE_TAG=19.11.0.0.0
VERSION=19.11.0.0.0
DESCRIPTION=19c APR 2021 GI Image
IMAGE_ALIASES=
Now that we can see what the available options are, we can create the new ORACLE_HOME.
[root@hostname1 ~]# dbaascli dbhome create --version 19000
INFO: OSS details are not provided, Restoring from local acfs image
Please confirm yes/no: yes
...
Completed Plugin_cleanup job
---------- START OF PLUGIN RESULT ----------
{"ORACLE_HOME_NAME":"OraHome4","ORACLE_HOME":"/u02/app/oracle/product/19.0.0.0/dbhome_12"}
---------- END OF PLUGIN RESULT ----------
Prior to patching the new ORACLE_HOME, we can run a precheck and verify if there will be issues with the patch
[root@hostname1 ~]# dbaascli dbhome patch --oracleHome /u02/app/oracle/product/19.0.0.0/dbhome_12 --targetVersion 19.11.0.0.0 --executePrereqs
Executing command dbhome patch --oracleHome /u02/app/oracle/product/19.0.0.0/dbhome_12 --targetVersion 19.11.0.0.0 --executePrereqs
-----------------
Setting up parameters...
Patch Parameters setup successful.
-----------------
Validating Inputs.
Successfully Validated Inputs.
-----------------
...
Running check_patch_conflict job
[WARNING] [DBAAS-60051] Conflicts were detected while validating the patch.
CAUSE: Refer to log '/var/opt/oracle/log/dbHomePatch/patchAnalyzer_2021-07-10_11-33-11-AM.out' on node 'hostname1'.
Completed check_patch_conflict job
-----------------
Running remove_unzip_loc job
Completed remove_unzip_loc job
DBHome Patching Prereqs Execution Successful.
It is good to know that the log file from the dbaascli dbhome patch command is written to /var/opt/oracle/log/dbHomePatch/dbHomePatch.log on the specific node the check was run against.
Now that the ORACLE_HOME has been created, we can patch the new ORACLE_HOME.
[root@hostname1 ~]# dbhome patch --oracleHome /u02/app/oracle/product/19.0.0.0/dbhome_12 --targetVersion 19.11.0.0.0 --skipDatapatch
...
DBAAS CLI version 21.2.1.2.0
Executing command dbhome patch --oracleHome /u02/app/oracle/product/19.0.0.0/dbhome_12 --targetVersion 19.11.0.0.0
-----------------
Setting up parameters...
Patch Parameters setup successful.
-----------------
Validating Inputs.
Successfully Validated Inputs.
-----------------
...
-----------------
Running release_lock job
Completed release_lock job
Running backup_old_home job
Completed backup_old_home job
-----------------
Running cleanup job
Completed cleanup job
DBHome Patching Successful.
You can check that the 19.11 are applied in the new ORACLE_HOME with the Oracle user.
[oracle@hostname1 OPatch]$ pwd
/u02/app/oracle/product/19.0.0.0/dbhome_12/OPatch
[oracle@hostname1 OPatch]$ ./opatch lspatches
30310195;DBSAT REPORTED DISABLED CONSTRAINTS FOR SHARDING STS_CHUNKS ON GSMADMIN_INTERNAL.SHARD_TS
29780459;INCREASE _LM_RES_HASH_BUCKET AND BACK OUT CHANGES FROM THE BUG 29416368 FIX
32327208;DSTV36 UPDATE - TZDATA2020E - NEED OJVM FIX
32327201;RDBMS - DSTV36 UPDATE - TZDATA2020E
31335037;RDBMS - DSTV35 UPDATE - TZDATA2020A
30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 29997937
31732095;UPDATE PERL IN 19C DATABASE ORACLE HOME TO V5.32
32490416;JDK BUNDLE PATCH 19.0.0.0.210420
32399816;OJVM RELEASE UPDATE: 19.11.0.0.210420 (32399816)
32579761;OCW RELEASE UPDATE 19.11.0.0.0 (32579761)
32545013;Database Release Update : 19.11.0.0.210420 (32545013)
OPatch succeeded.
Now we will proceed to move the database to the new 19.11 ORACLE_HOME as the root user.
[root@hostname1 ~]# dbaascli database move --dbname testdb01 --ohome /u02/app/oracle/product/19.0.0.0/dbhome_12
DBAAS CLI version 21.2.1.2.0
Executing command database move --ohome /u02/app/oracle/product/19.0.0.0/dbhome_12
INFO : Source version is 19.11.0.0.0
INFO : Target version is 19.11.0.0.0
INFO : Review log file => /var/opt/oracle/log/testdb01/dbmigrate/dbmigrate_2021-10-07_17:14:34.868404143693.log
INFO : Review log file for this node - /var/opt/oracle/log/testdb01/dbmigrate_local/dbmigrate_local.log
INFO : Executing on node: hostname1
INFO : cmd: /var/opt/oracle/ocde/assistants/dbda/dbmigrate.pl -dbname testdb01 -ohome /u02/app/oracle/product/19.0.0.0/dbhome_12 -prereq -local
INFO : dbmove precheck completed on node: hostname1
INFO : Executing on node: hostname2
INFO : cmd: /var/opt/oracle/ocde/assistants/dbda/dbmigrate.pl -dbname testdb01 -ohome /u02/app/oracle/product/19.0.0.0/dbhome_12 -prereq -local
INFO : dbmove precheck completed on node: hostname2
INFO : Precheck completed successfully on all the nodes.
INFO : Executing on node: hostname1
INFO : cmd: /var/opt/oracle/ocde/assistants/dbda/dbmigrate.pl -dbname testdb01 -ohome /u02/app/oracle/product/19.0.0.0/dbhome_12 -local
INFO : dbmove completed on node: hostname1
INFO : Checking testdb01 is up on hostname1...
INFO : Executing on node: hostname2
INFO : cmd: /var/opt/oracle/ocde/assistants/dbda/dbmigrate.pl -dbname testdb01 -ohome /u02/app/oracle/product/19.0.0.0/dbhome_12 -local
INFO : dbmove completed on node: hostname2
INFO : Checking testdb01 is up on hostname2...
INFO : dbmove completed successfully on all the nodes
The next step is to run the Datapatch to the database as the Oracle user.
[oracle@hostname1 OPatch]$ $ORACLE_HOME/OPatch/datapatch -verbose
SQL Patching tool version 19.11.0.0.0 Production on Wed Apr 21 14:40:26 2021
Copyright (c) 2012, 2021, Oracle. All rights reserved.
Log file for this invocation: /u01/app/oracle/cfgtoollogs/sqlpatch/sqlpatch_2302_2021_04_21_14_40_26/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.11.0.0.0 Release_Update 210413004009: Installed
PDB CDB$ROOT:
Applied 19.10.0.0.0 Release_Update 210108185017 successfully on 20-JAN-21 01.03.57.749255 AM
PDB PDB$SEED:
Applied 19.10.0.0.0 Release_Update 210108185017 successfully on 20-JAN-21 01.03.58.234326 AM
PDB PDB1:
Applied 19.10.0.0.0 Release_Update 210108185017 successfully on 20-JAN-21 01.03.58.234326 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
Patch 32545013 (Database Release Update : 19.11.0.0.210420 (32545013)):
Apply from 19.10.0.0.0 Release_Update 210108185017 to 19.11.0.0.0 Release_Update 210413004009
No interim patches need to be applied
Installing patches...
Patch installation complete. Total patches installed: 3
Validating logfiles...done
Patch 32545013 apply (pdb CDB$ROOT): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/32545013/24175065/32545013_apply_CDB2_CDBROOT_2021Apr21_14_41_01.log (no errors)
Patch 32545013 apply (pdb PDB$SEED): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/32545013/24175065/32545013_apply_CDB2_PDBSEED_2021Apr21_14_42_22.log (no errors)
Patch 32545013 apply (pdb PDB1): SUCCESS
logfile: /u01/app/oracle/cfgtoollogs/sqlpatch/32545013/24175065/32545013_apply_CDB2_PDB1_2021Apr21_14_42_22.log (no errors)
SQL Patching tool complete on Wed Apr 21 14:43:47 2021
You can check which patches are applied to the database by checking.
SQL> select * from sys.registry$history;
ACTION_TIME ACTION NAMESPACE VERSION ID
--------------------------------------------------------------------------- ------------------------------ ------------------------------ ------------------------------ ----------
COMMENTS BUNDLE_SERIES
---------------------------------------------
...
07-OCT-21 05.26.50.579750 PM jvmpsu.sql SERVER 19.11.0.0.210420OJVMRU 0
RAN jvmpsu.sql
07-OCT-21 05.26.50.585261 PM ROLLBACK SERVER 19.11.0.0.210420OJVMRU 0
OJVM RU post-deinstall
07-OCT-21 05.26.50.672514 PM jvmpsu.sql SERVER 19.11.0.0.210420OJVMRU 0
RAN jvmpsu.sql
07-OCT-21 05.26.50.676553 PM APPLY SERVER 19.11.0.0.210420OJVMRU 0
OJVM RU post-install
07-OCT-21 05.28.51.154425 PM RU_APPLY SERVER 19.0.0.0.0
Patch applied from 19.10.0.0.0 to 19.11.0.0.0: Release_Update - 210413004009
19 rows selected.
The last thing to do is to purge the old ORACLE_HOME as root, be careful to only remove the ORACLE_HOME that is no longer in use.
[root@hostname1 ~]# dbaascli dbhome purge
DBAAS CLI version 21.2.1.2.0
Executing command dbhome purge
Enter
1 - If you wish to enter homename to be purged
2 - If you wish to enter home path to be purged
2
Enter the home path
/u02/app/oracle/product/19.0.0.0/dbhome_2
INFO: Removing Oracle Home /u02/app/oracle/product/19.0.0.0/dbhome_2
Hope this post helps you when you are doing patching exercises and gives you an idea of how to do it via the Command-Line.