Showing posts with label DBCS. Show all posts
Showing posts with label DBCS. Show all posts

Sunday, December 1, 2024

 Step-by-Step Guide: Configuring Zero Data Loss Autonomous Recovery Services for Oracle DBCS

Ensuring business continuity and data protection in the cloud has become mission-critical. Oracle’s Zero Data Loss Autonomous Recovery Service (ZDLARS) helps organizations protect their Autonomous Databases and DBCS (Database Cloud Services) with minimal manual effort, near-zero data loss, and automated recovery capabilities.

This blog provides a step-by-step walkthrough to configure Autonomous Recovery Services (ARS) with detailed screenshots and explanations.

Prerequisites

Before you begin:

  • You must have access to an Oracle Cloud Infrastructure (OCI) account.

  • An active DBCS (Oracle Database Cloud Service) instance.

  • Necessary permissions to create and assign IAM policies.

  • A registered private subnet is in the same region as your database.

Step 1: Create A Protection Policy for the ZDLARS

Creating a Protection Policy for Your Database Compartment in OCI

Best Practice: Use Dedicated Compartments

OCI best practices recommend creating separate compartments for different systems to maintain clean governance, improved access control, and better resource organization. This ensures that each environment—whether for dev, test, or production—is logically isolated and easier to manage.

We’ve set up a dedicated compartment to host our two-node RAC Extreme Edition database. With this structure in place, the next step is configuring a Protection Policy for this compartment.

Steps to Create a Protection Policy

  1. Navigate to the Database Backup and Protection Policies Section

    • From the OCI Console, go to Database > Backup & Protection Policies.

  2. Create a New Protection Policy

    • Click Create Protection Policy.

    • Provide a clear and descriptive name (e.g.,om_palane_db Protection Policy).

    • Select the compartment where your RAC database resides.



Step 2 : Create a Recovery Subnet for the database 

Enabling Secure Backups with Recovery Service Subnets in OCI

When it comes to protecting your Oracle Cloud databases, network isolation plays a key role in ensuring secure and efficient backup operations. Oracle Cloud Infrastructure (OCI) addresses this through Recovery Service subnets, which establish a dedicated network path between your databases and the OCI Recovery Service.

Best Practice: Use a Private Subnet for  Immutable Backups

For strong security with immutable backup, OCI requires that your database VCN includes a single, private subnet dedicated exclusively to Recovery Service backups. This subnet should not be shared with other services or applications, helping you maintain a clean and controlled environment for backup traffic.

How to Register a Recovery Service Subnet

The process is streamlined through the OCI Console:

[1]The name of the Recovery subnet is used to identify the subnet 

[2]A compartment to be created, preferably in the network compartment  

[3]Choose the Particular VCN that has been associated with the   database; it should be your database private subnet 

[4] The recovery subnet that will be used for the immutable backups (you should have created a subnet in the compartment before this registration here we are registering that subnet as the recovery service subnet.



Step 3: Create the IAM Policies for Autonomous Recovery services 


To enable secure and streamlined management of Autonomous Recovery Services, you need to define the right IAM policies at both the tenancy and compartment levels. These policies grant the necessary permissions to the designated group responsible for managing backup and recovery operations.

Define Policies in the OCI Console

  1. Navigate to Identity & Security > Policies in the OCI Console.

  2. Create a new policy (or edit an existing one) with a clear name like AUTONOMOUS_RECOVERY_SERVICES_POLICY.

  3. Assign the policy at the tenancy level to ensure broad access for service operations.

Example Policy Statements

Here are some recommended statements,

Allow service database to manage recovery-service-family in tenancy

Allow service database to manage tagnamespace in tenancy

Allow service rcs to manage recovery-service-family in tenancy

Allow service rcs to manage virtual-network-family in tenancy

Allow group <your-admin-group> to manage recovery-service-family in tenancy



Step 4: Creating the Protection Policy 

Create the Protection Policy for the backup based on the number of days specified, and the backups will be retained  for the specified number of days

[1]Provide the Name of the Protection Policy

[2]Database compartment

[3] Specify the number of days the backup is to be retained 

Click enable retention lock so no one can go and delete the backups. There are methods to keep the backup for 10 years.  Depending on your requirements, LTR Recovery Service can retain your LTR backups for anywhere between 90 days and 10 years. Will see about the LTR in a separate blog post 



Step 5: Enabling the Autonomous Recovery Section in DBCS


Navigate to the DBCS instance in OCI. Under the Autonomous Recovery section, click Enable. This will protect the database instance under the Oracle-managed recovery service. It starts by preparing the infrastructure for protection with Zero Data Loss.

1. Enable automatic backups. The Checkbox must be checked to enable backup functionality.
  • OCI will automatically perform scheduled backups when enabled according to the chosen configuration.

2. Backup destination: A dropdown field to select where the backups will be stored. To enable the Autonomous Recovery Service, we need to choose  the Autonomous Recovery Service

3. Protection policy: Displays the current policy selected for backup retention and recovery. In this example:
  • _AUTONOMOUS_RECOVERY_SERVICES_PROTECTION_POLICY -- the policy that we had created in the earlier steps, which has a 31-day recovery window 

4. Real-time data protection
  • Select this checkbox to enable real-time redo log backups, ensuring that changes are continuously backed up between scheduled backups,, and with near-zero lag,, the logs will be applied to the backups

5. Deletion options after database termination

Two radio buttons to define what happens to backups after the source database is deleted:

Retain backups according to the protection policy retention period
Backups follow the full policy period (e.g., 31 days).
Retain backups for 72 hours, then delete
Backups are kept for a short period after termination and then removed.

 6. Scheduled time for daily backup (UTC)
  • Dropdown to define the daily backup time window.

 Take the first backup immediately . When this checkbox is selected, OCI initiates the first backup as soon as the configuration is saved. Useful for getting a baseline backup without waiting for the scheduled time.



Step 6:  Check the database with the protection summary 




Sunday, November 5, 2023

Oracle  DBCS DB Home In-Place Patch Upgrade from 19.X to 19.X via DBCLI with Post-Patching Validation

In this blog post, I walk through the process of performing an in-place patch upgrade of Oracle Database 19c from version 19.15.0.0.0 to 19.20.0.0.0 on an Oracle Database Appliance (ODA). This includes precheck validation, applying the patch via dbcli, enabling the OLAP component, and recompiling invalid objects post-patch.

Environment Details

  • Host: <Db hostname>

  • Current DB Version: 19.15.0.0.0

  • Target DB Version: 19.20.0.0.0

  • Platform: Oracle Database Appliance

  • Tools Used: dbcli, SQL*Plus, srvctl, chopt, utlrp.sql

  • In this exercise, we're only upgrading the Oracle Home. However, the Grid Infrastructure Home must be upgraded beforehand.

Step 1 : Login and Environment Preparation

Authenticating with public key "imported-openssh-key"

Last login: Tue Oct 31 12:28:29 2023 from 171.40.40.162


[opc@omdevdb ~]$ sudo -su root

[root@omdevdb opc]# cd


[root@omdevdb ~]# sudo -su oracle

[oracle@omdevdb root]$ cd

==========================================================================Step 2 : Log in to the SQL Plus from the SSH Console

Login  shut down, and start up the instance 

[oracle@omdevdb ~]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 6 00:27:49 2023

Version 19.15.0.0.0

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

Enter user-name: sys as sysdba

Enter password:

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.15.0.0.0


SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE instance started.


Total System Global Area 3.0602E+10 bytes

Fixed Size                 13873640 bytes

Variable Size            1.5301E+10 bytes

Database Buffers         1.5099E+10 bytes

Redo Buffers              187449344 bytes

Database mounted.

Database opened.

SQL> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.15.0.0.0

[oracle@omdevdb ~]$ exit

exit

==============================================================

Step 3 : Check for Available Patches and Oracle Home Details 

[root@omdevdb ~]# cd /opt

[root@omdevdb opt]# ls

cerberus  clamav  io  lost+found  opc  oracle  ORCLfmap  os-updater  rh  unified-monitoring-agent

[root@omdevdb opt]# cd oracle

[root@omdevdb oracle]# ls

bmc  dcs  dms  extapi  mysql_compact  oak  olite  rp  stig

[root@omdevdb oracle]# cd dcs

[root@omdevdb dcs]# ls

agent  auth  bin  commonstore  conf  configuredcs.pl  dbaasca  dcsadmin-stderr.log  dcsadmin-stdout.log  dcsagent_wallet  dcscli  fpca  invctl  Inventory  java  log  rdbaas  repo  sample  thirdparty  upload

[root@omdevdb dcs]# cd bin

[root@omdevdb bin]# ls

[root@omdevdb bin]# ./dbcli describe-latestpatch


componentType   availableVersion

--------------- --------------------

gi              12.2.0.1.230718

gi              18.16.0.0.0

gi              19.21.0.0.0

gi              21.12.0.0.0

gi              23.3.0.23.09

db              11.2.0.4.231017

db              12.2.0.1.231017

db              12.1.0.2.231017

db              18.16.0.0.0

db              19.21.0.0.0

db              21.12.0.0.0


[root@omdevdb bin]# ./dbcli describe-component

System Version

---------------

23.3.2.0.0


Component                                Installed Version    Available Version

---------------------------------------- -------------------- --------------------

GI                                        19.15.0.0.0           19.21.0.0

DB                                        19.15.0.0.0           19.21.0.0


With this command we are able to get what is the current installed version of the Grid DB and what is the highest available version to upgrade 

Note: Before stating the process we need to check whether the dbcli is up to date if it is not up to date then the below command will update the dbcli binary to the compatible version 

[root@omdevdb bin]# ./cliadm update-dbcli

dbcli is already up-to-date. Skipping...

In this case the dbcli is up-to date no no upgrade to the latest binary is required else it will be upgraded to the latest binary 


Step 4:  Perform Pre-Check for Server Patching

Run the precheck for both Grid Infrastructure (GI) and Oracle Home using dbcli. Once initiated, the process runs in the background as a job. You can use the dbcli list-jobs command to view all currently running jobs, and use dbcli describe-job -i <job-id> to get detailed information about a specific job and monitor its progress.

[root@omdevdb bin]# ./dbcli update-server --precheck -v 19.20.0.0.0 --precheck

{

  "jobId" : "4203c11d-213a-4872-a192-1c1bf00aec47",

  "status" : "Created",

  "message" : null,

  "errorCode" : "",

  "reports" : [ ],

  "createTimestamp" : "November 06, 2023 00:46:52 AM GST",

  "resourceList" : [ ],

  "description" : "Server Patching Prechecks",

  "updatedTime" : "November 06, 2023 00:46:52 AM GST",

  "percentageProgress" : "0%",

  "cause" : null,

  "action" : null

}

check the Job to know the status 

[root@omdevdb bin]# ./dbcli describe-job -i 4203c11d-213a-4872-a192-1c1bf00aec47


Job details

----------------------------------------------------------------

                     ID:  4203c11d-213a-4872-a192-1c1bf00aec47

            Description:  Server Patching Prechecks

                 Status:  Running

                Created:  November 6, 2023 at 12:46:52 AM GST

               Progress:  0%

                Message:

             Error Code:


Task Name                                                                Start Time                          End Time                            Status

------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Pre-operations for Server Patching Prechecks                             November 6, 2023 at 12:46:52 AM GST November 6, 2023 at 12:46:52 AM GST Running

Once the Job is completed the Progress will be changed to 100%

[root@omdevdb bin]# ./dbcli describe-job -i 4203c11d-213a-4872-a192-1c1bf00aec47


Job details

----------------------------------------------------------------

                     ID:  4203c11d-213a-4872-a192-1c1bf00aec47

            Description:  Server Patching Prechecks

                 Status:  Success

                Created:  November 6, 2023 at 12:46:52 AM GST

               Progress:  100%

                Message:

             Error Code:


Task Name                                                                Start Time                          End Time                            Status

------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Pre-operations for Server Patching Prechecks                             November 6, 2023 at 12:46:52 AM GST November 6, 2023 at 12:49:02 AM GST Success

Server Patching Prechecks                                                November 6, 2023 at 12:49:02 AM GST November 6, 2023 at 12:49:47 AM GST Success

Install object store swift module                                        November 6, 2023 at 12:49:08 AM GST November 6, 2023 at 12:49:38 AM GST Success


[root@omdevdb bin]# ./dbcli list-dbhomes


ID                                       Name                 DB Version                               Home Location                                 Status

---------------------------------------- -------------------- ---------------------------------------- --------------------------------------------- ----------

f6bd8244-cd8b-439b-a4a5-5c6080a3f67a     OraDB19000_home1     19.15.0.0.0                              /u01/app/oracle/product/19.0.0.0/dbhome_1     Configured


Run rm -rf /tmp/datapatchoutput* before patching to remove any stale or leftover datapatch output files, ensuring a clean environment and preventing conflicts or errors during the patching process.

[root@omdevdb bin]# rm -rf /tmp/datapatchoutput*

Step 5   In-Place Patch the DB Home

We are specific to upgrade to 19.20 which is n-1 so we are specifying the version if the version is not specified then it takes the latest available version 

[root@omdevdb bin]# ./dbcli update-dbhome -i f6bd8244-cd8b-439b-a4a5-5c6080a3f67a -v 19.20.0.0.0

{

  "jobId" : "bf6c920c-a773-47c2-ad38-5eb543dd4982",

  "status" : "Created",

  "message" : null,

  "errorCode" : "",

  "reports" : [ ],

  "createTimestamp" : "November 06, 2023 00:53:11 AM GST",

  "resourceList" : [ ],

  "description" : "Database inplace image patching with dbhomeId : f6bd8244-cd8b-439b-a4a5-5c6080a3f67a",

  "updatedTime" : "November 06, 2023 00:53:13 AM GST",

  "percentageProgress" : "0%",

  "cause" : null,

  "action" : null

}

[root@omdevdb bin]# ./dbcli describe-job -i bf6c920c-a773-47c2-ad38-5eb543dd4982


Job details

----------------------------------------------------------------

                     ID:  bf6c920c-a773-47c2-ad38-5eb543dd4982

            Description:  Database inplace image patching with dbhomeId : f6bd8244-cd8b-439b-a4a5-5c6080a3f67a

                 Status:  Running

                Created:  November 6, 2023 at 12:53:11 AM GST

               Progress:  0%

                Message:

             Error Code:


Task Name                                                                Start Time                          End Time                            Status

------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Precheck DBHome patching tasks                                           November 6, 2023 at 12:53:13 AM GST November 6, 2023 at 12:53:13 AM GST Running

==========================================================

[root@omdevdb bin]# ./dbcli describe-job -i bf6c920c-a773-47c2-ad38-5eb543dd4982


Job details

----------------------------------------------------------------

                     ID:  bf6c920c-a773-47c2-ad38-5eb543dd4982

            Description:  Database inplace image patching with dbhomeId : f6bd8244-cd8b-439b-a4a5-5c6080a3f67a

                 Status:  Running

                Created:  November 6, 2023 at 12:53:11 AM GST

               Progress:  8%

                Message:

             Error Code:


Task Name                                                                Start Time                          End Time                            Status

------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Precheck DBHome patching tasks                                           November 6, 2023 at 12:53:13 AM GST November 6, 2023 at 12:53:13 AM GST Running

===============================================================

[root@omdevdb bin]# ./dbcli describe-job -i bf6c920c-a773-47c2-ad38-5eb543dd4982


Job details

----------------------------------------------------------------

                     ID:  bf6c920c-a773-47c2-ad38-5eb543dd4982

            Description:  Database inplace image patching with dbhomeId : f6bd8244-cd8b-439b-a4a5-5c6080a3f67a

                 Status:  Running

                Created:  November 6, 2023 at 12:53:11 AM GST

               Progress:  18%

                Message:  WARNING::Patch bundle conflicts with: [35320081]. Missing Patches in target DBHome are: [34059654]

             Error Code:


Task Name                                                                Start Time                          End Time                            Status

------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Precheck DBHome patching tasks                                           November 6, 2023 at 12:53:13 AM GST November 6, 2023 at 1:00:02 AM GST  Success

DBHome patching                                                          November 6, 2023 at 1:00:02 AM GST  November 6, 2023 at 1:00:02 AM GST  Running

======================================================================

[root@omdevdb bin]# ./dbcli describe-job -i bf6c920c-a773-47c2-ad38-5eb543dd4982


Job details

----------------------------------------------------------------

                     ID:  bf6c920c-a773-47c2-ad38-5eb543dd4982

            Description:  Database inplace image patching with dbhomeId : f6bd8244-cd8b-439b-a4a5-5c6080a3f67a

                 Status:  SuccessWithWarning

                Created:  November 6, 2023 at 12:53:11 AM GST

               Progress:  100%

                Message:  WARNING::Patch bundle conflicts with: [35320081]. Missing Patches in target DBHome are: [34059654]

             Error Code:


Task Name                                                                Start Time                          End Time                            Status

------------------------------------------------------------------------ ----------------------------------- ----------------------------------- ----------

Precheck DBHome patching tasks                                           November 6, 2023 at 12:53:13 AM GST November 6, 2023 at 1:00:02 AM GST  Success

DBHome patching                                                          November 6, 2023 at 1:00:02 AM GST  November 6, 2023 at 1:24:12 AM GST  Success

Post DBHome patching tasks                                               November 6, 2023 at 1:24:12 AM GST  November 6, 2023 at 2:04:27 AM GST  Success

Install object store swift module                                        November 6, 2023 at 2:04:09 AM GST  November 6, 2023 at 2:04:27 AM GST  Success

In this case the patch had been completed with warnings but the patch is successful 

=====================================================================

[root@omdevdb bin]# sudo -su oracle

Step 6:  check the database components 

in case of upgrade completed with the warnings we need to check the logs and fix the warnings in this case we are checking the list of database options that are available  in the instance 

[oracle@omdevdb bin]$ sqlplus

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 6 07:22:20 2023

Version 19.20.0.0.0

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

Enter user-name: sys as sysdba

Enter password:

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.20.0.0.0


SQL> select COMP_NAME, VERSION, STATUS from dba_registry ORDER BY 3;


COMP_NAME

--------------------------------------------------------------------------------

VERSION                        STATUS

------------------------------ ---------------------------------

OLAP Analytic Workspace

19.0.0.0.0                     OPTION OFF


Oracle OLAP API

19.0.0.0.0                     OPTION OFF


Oracle Real Application Clusters

19.0.0.0.0                     OPTION OFF



COMP_NAME

--------------------------------------------------------------------------------

VERSION                        STATUS

------------------------------ ---------------------------------

Oracle XDK

19.0.0.0.0                     VALID


Oracle Database Java Packages

19.0.0.0.0                     VALID


Oracle XML Database

19.0.0.0.0                     VALID



COMP_NAME

--------------------------------------------------------------------------------

VERSION                        STATUS

------------------------------ ---------------------------------

Oracle Workspace Manager

19.0.0.0.0                     VALID


Oracle Text

19.0.0.0.0                     VALID


Oracle Multimedia

19.0.0.0.0                     VALID



COMP_NAME

--------------------------------------------------------------------------------

VERSION                        STATUS

------------------------------ ---------------------------------

Spatial

19.0.0.0.0                     VALID


Oracle Label Security

19.0.0.0.0                     VALID


JServer JAVA Virtual Machine

19.0.0.0.0                     VALID



COMP_NAME

--------------------------------------------------------------------------------

VERSION                        STATUS

------------------------------ ---------------------------------

Oracle Database Vault

19.0.0.0.0                     VALID


Oracle Database Catalog Views

19.0.0.0.0                     VALID


Oracle Database Packages and Types

19.0.0.0.0                     VALID



15 rows selected.



SQL> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.20.0.0.0

In this case the OLAP is off  so we need to se the CHOPT to change the status of the options that are available in the database 

[oracle@omdevdb bin]$ srvctl stop database -d <db unique name>

Step 7 use CHOPT to enable or disable the database option as per the requirement 

chopt (short for "change option") is a command-line utility provided by Oracle to enable or disable optional database features in an Oracle Home without reinstalling the software.

chopt enable/disable database options 






Important Notes

  • Must be run from the Oracle Home bin directory.

  • Requires database to be stopped before enabling/disabling features.

  • Logs can be found in:
    $ORACLE_HOME/install/enable_<option>_<timestamp>.log

  • Log location :  /u01/app/oracle/product/19.0.0.0/dbhome_1/install/enable_olap_2023-11-06_07-30-54AM.log

[oracle@omdevdb bin]$ cd $ORACLE_HOME/bin ; chopt enable olap

Writing to /u01/app/oracle/product/19.0.0.0/dbhome_1/install/enable_olap_2023-11-06_07-30-54AM.log...

/usr/bin/make -f /u01/app/oracle/product/19.0.0.0/dbhome_1/rdbms/lib/ins_rdbms.mk olap_on ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1

/usr/bin/make -f /u01/app/oracle/product/19.0.0.0/dbhome_1/rdbms/lib/ins_rdbms.mk ioracle ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1

[oracle@omdevdb bin]$ vi /u01/app/oracle/product/19.0.0.0/dbhome_1/install/enable_olap_2023-11-06_07-30-54AM.log...

[oracle@omdevdb bin]$ vi/u01/app/oracle/product/19.0.0.0/dbhome_1/install/enable_olap_2023-11-06_07-30-54AM.log^C

[oracle@omdevdb bin]$ vi /u01/app/oracle/product/19.0.0.0/dbhome_1/install/enable_olap_2023-11-06_07-30-54AM.log

Once the Chopt is completed start the database and and compile the invalid objects 

[oracle@omdevdb bin]$ srvctl start database -d OMDEV_OIC


Step 8: Compile Invalid objects 

[oracle@omdevdb bin]$ sqlplus "/ as sysdba" @?/rdbms/admin/utlrp.sql

SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 6 07:33:08 2023

Version 19.20.0.0.0

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

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.20.0.0.0

Session altered.

TIMESTAMP

--------------------------------------------------------------------------------

COMP_TIMESTAMP UTLRP_BGN              2023-11-06 07:33:09


DOC>   The following PL/SQL block invokes UTL_RECOMP to recompile invalid

DOC>   objects in the database. Recompilation time is proportional to the

DOC>   number of invalid objects in the database, so this command may take

DOC>   a long time to execute on a database with a large number of invalid

DOC>   objects.

DOC>

DOC>   Use the following queries to track recompilation progress:

DOC>

DOC>   1. Query returning the number of invalid objects remaining. This

DOC>      number should decrease with time.

DOC>         SELECT COUNT(*) FROM obj$ WHERE status IN (4, 5, 6);

DOC>

DOC>   2. Query returning the number of objects compiled so far. This number

DOC>      should increase with time.

DOC>         SELECT COUNT(*) FROM UTL_RECOMP_COMPILED;

DOC>

DOC>   This script automatically chooses serial or parallel recompilation

DOC>   based on the number of CPUs available (parameter cpu_count) multiplied

DOC>   by the number of threads per CPU (parameter parallel_threads_per_cpu).

DOC>   On RAC, this number is added across all RAC nodes.

DOC>

DOC>   UTL_RECOMP uses DBMS_SCHEDULER to create jobs for parallel

DOC>   recompilation. Jobs are created without instance affinity so that they

DOC>   can migrate across RAC nodes. Use the following queries to verify

DOC>   whether UTL_RECOMP jobs are being created and run correctly:

DOC>

DOC>   1. Query showing jobs created by UTL_RECOMP

DOC>         SELECT job_name FROM dba_scheduler_jobs

DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';

DOC>

DOC>   2. Query showing UTL_RECOMP jobs that are running

DOC>         SELECT job_name FROM dba_scheduler_running_jobs

DOC>            WHERE job_name like 'UTL_RECOMP_SLAVE_%';

DOC>#


PL/SQL procedure successfully completed.

TIMESTAMP

--------------------------------------------------------------------------------

COMP_TIMESTAMP UTLRP_END              2023-11-06 07:33:11

DOC> The following query reports the number of invalid objects.

DOC>

DOC> If the number is higher than expected, please examine the error

DOC> messages reported with each object (using SHOW ERRORS) to see if they

DOC> point to system misconfiguration or resource constraints that must be

DOC> fixed before attempting to recompile these objects.

DOC>#

OBJECTS WITH ERRORS

-------------------

                  1


DOC> The following query reports the number of exceptions caught during

DOC> recompilation. If this number is non-zero, please query the error

DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors

DOC> are due to misconfiguration or resource constraints that must be

DOC> fixed before objects can compile successfully.

DOC> Note: Typical compilation errors (due to coding errors) are not

DOC>       logged into this table: they go into DBA_ERRORS instead.

DOC>#


ERRORS DURING RECOMPILATION

---------------------------

                          0



Function created.

PL/SQL procedure successfully completed.

Function dropped.

PL/SQL procedure successfully completed.


Step 9 :Check the status of the Component that is off and make sure that it had been valid 

SQL> col comp_name format a40

SQL> col VERSION format a20

SQL> col status format a10

SQL> set pages 100

SQL> select COMP_NAME, VERSION, STATUS from dba_registry ORDER BY 3;


COMP_NAME                                VERSION              STATUS

---------------------------------------- -------------------- ----------

Oracle Real Application Clusters         19.0.0.0.0           OPTION OFF

Oracle Database Vault                    19.0.0.0.0           VALID

JServer JAVA Virtual Machine             19.0.0.0.0           VALID

Oracle XDK                               19.0.0.0.0           VALID

Oracle Database Java Packages            19.0.0.0.0           VALID

OLAP Analytic Workspace                  19.0.0.0.0           VALID

Oracle XML Database                      19.0.0.0.0           VALID

Oracle Workspace Manager                 19.0.0.0.0           VALID

Oracle Text                              19.0.0.0.0           VALID

Oracle Multimedia                        19.0.0.0.0           VALID

Spatial                                  19.0.0.0.0           VALID

Oracle OLAP API                          19.0.0.0.0           VALID

Oracle Label Security                    19.0.0.0.0           VALID

Oracle Database Catalog Views            19.0.0.0.0           VALID

Oracle Database Packages and Types       19.0.0.0.0           VALID


15 rows selected.


SQL> exit

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.20.0.0.0

Conclusion

This blog walked through the end-to-end process of performing an in-place patch upgrade of Oracle Database 19c from version 19.15.0.0.0 to 19.20.0.0.0 using dbcli on DBCS running in Base database service in OCI. Key steps included running prechecks, applying the patch to the Oracle Home, enabling optional components like OLAP, and performing post-patch validation with utlrp.sql.

The upgrade completed successfully, with all core components in a VALID state and the database running on the new patched version. This approach ensures minimal downtime while keeping the environment consistent and secure with the latest updates and fixes.

Following a structured and clean patching process—combined with checks like clearing old datapatch outputs and validating job statuses—helps maintain Oracle environments efficiently and reduces the risk of post-upgrade issues.