Current Configuration |
Future configuration |
ODA X8-2 |
ODA X11-2 |
GI version 19.10 |
GI version 19.26 |
Database version 19.6 |
Database version 19.26 |
Note:-Active
data guard is setup between primary and standby but dataguard broker is not
present.
Test
Setup: To test
migration approach a small primary database orcltest and a standby
database orcldg has been created.Standby
DB orcldg has been registered in catalog database and successful backup has been taken.
We will
now add broker configuration which is needed later point of time in X-11
platform for switchover
1.
Connect
to your primary/standby database and check the value of DG_BROKER_START
SQL>
show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------
----------- ------------------------------
dg_broker_start boolean FALSE
2. set
the DG_BROKER_START parameter to TRUE.
SQL>
alter system set dg_broker_start=true;
3.
Invoke DGMGRL and
connect to your primary database.
oracle@orcltest/db:$
dgmgrl sys/*****@orcltest
DGMGRL
for Linux: Release 19.0.0.0.0 - Production on Thu Sep 25 11:33:05 2025
Version
19.6.0.0.0
Copyright
(c) 1982, 2019, Oracle and/or its affiliates.
All rights reserved.
Welcome
to DGMGRL, type "help" for information.
Connected
to "orcltest"
Connected
as SYSDBA.
4.
Create
the broker configuration for the primary database and verify
DGMGRL>
create configuration dgconfig_orcltest as primary database is 'orcltest'
connect identifier is orcltest;
Configuration
"dgconfig_orcltest" created with primary database "orcltest"
DGMGRL>
show configuration
Configuration
- dgconfig_orcltest
Protection Mode: MaxPerformance
Members:
orcltest - Primary database
Fast-Start
Failover: Disabled
Configuration
Status:
DISABLED
5.
Use
the following commands to add your physical standby database to the broker
configuration.
DGMGRL>
add database 'orcldg' as connect identifier is orcldg;
Database
"orcldg" added
DGMGRL>
show configuration
Configuration
- dgconfig_orcltest
Protection Mode: MaxPerformance
Members:
orcltest
- Primary database
orcldg - Physical standby database
Fast-Start
Failover: Disabled
Configuration
Status:
DISABLED
6.
Enable
broker configuration and check lag
DGMGRL>
enable configuration
Enabled.
DGMGRL>
show configuration lag verbose;
Protection Mode: MaxPerformance
Members:
orcltest
- Primary database
orcldg - Physical standby database
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
TraceLevel = 'USER'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
ObserverReconnect = '0'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
ObserverOverride = 'FALSE'
ExternalDestination1 = ''
ExternalDestination2 = ''
PrimaryLostWriteAction = 'CONTINUE'
ConfigurationWideServiceName = 'orcltest_CFG'
Fast-Start
Failover: Disabled
Configuration
Status:
SUCCESS
We
can check same lag command in standby site.
7.
Test
switchover from broker.Use below command in standby sisde
DGMGRL>
validate database 'orcldg';
Database Role: Physical standby database
Primary Database: orcltest
Ready for Switchover: Yes
Ready for Failover: Yes (Primary Running)
Flashback Database Status:
orcltest :
Off
orcldg:
Off
Managed by Clusterware:
orcltest :
YES
orcldg:
YES
Current Log File Groups Configuration:
Thread #
Online Redo Log Groups Standby
Redo Log Groups Status
(orcltest) (orcldg)
1
3 2 Insufficient SRLs
Future Log File Groups Configuration:
Thread #
Online Redo Log Groups Standby
Redo Log Groups Status
(orcldg) (orcltest)
1
3 0 Insufficient SRLs
Warning: standby
redo logs not configured for thread 1 on orcltest
So
it shows that we are not ready to switchover.
Query
from primary database orcltest shows that thread 0 which is not valid for group
4,5,6
SQL> select
GROUP#,THREAD#,BYTES/1024/1024/1024,ARCHIVED,STATUS,CON_ID
from v$standby_log;
GROUP# THREAD#
BYTES/1024/1024/1024 ARC STATUS
CON_ID
---------- ----------
-------------------- --- ---------- ----------
4 0 4 YES UNASSIGNED 0
5 0 4 YES UNASSIGNED 0
6 0 4 YES UNASSIGNED 0
SQL> select
GROUP#,THREAD#,BYTES/1024/1024/1024,ARCHIVED,STATUS,CON_ID from v$log;
GROUP# THREAD# BYTES/1024/1024/1024 ARC
STATUS CON_ID
---------- ---------- -------------------- ---
---------------- ----------
1 1 4 NO CURRENT 0
2 1 4 YES INACTIVE 0
3 1 4 YES INACTIVE 0
Query
from standby database orcldg shows that thread 0 which is not valid for group 6
SQL> select
GROUP#,THREAD#,BYTES/1024/1024/1024,ARCHIVED,STATUS,CON_ID
from v$standby_log;
GROUP# THREAD# BYTES/1024/1024/1024 ARC
STATUS CON_ID
---------- ---------- -------------------- ---
---------- ----------
4 1 4 YES ACTIVE 0
5 1 4 NO UNASSIGNED 0
6 0 4 YES UNASSIGNED 0
SQL> select
GROUP#,THREAD#,BYTES/1024/1024/1024,ARCHIVED,STATUS,CON_ID from v$log;
GROUP# THREAD# BYTES/1024/1024/1024 ARC
STATUS CON_ID
---------- ---------- -------------------- ---
---------------- ----------
1 1 4 YES UNUSED 0
2 1 4 YES UNUSED 0
3 1 4 YES UNUSED 0
Fix:-Cancel mrp in standby and recreate
standby redo log file with thread 1.
Dropping of standby redo log file was
failing because we have active standby log file as shown below
SQL>
ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;
ALTER
DATABASE DROP STANDBY LOGFILE GROUP 4
*
ERROR at
line 1:
ORA-00261:
log 4 of thread 1 is being archived or modified
ORA-00312:
online log 4 thread 1: '+RECO/ORCLDG/ONLINELOG/group_4.990.1212589559'
SQL>
select group#, thread#, sequence#, status from v$standby_log;
GROUP#
THREAD# SEQUENCE# STATUS
----------
---------- ---------- ----------
4 1 10 ACTIVE
5 1 0 UNASSIGNED
6 0 0 UNASSIGNED
Drop and recreate group 5 and 6 like
below
SQL> alter database drop logfile
group 5;
Database altered.
SQL> alter database add standby
logfile thread 1 group 5 size 4G;
Database altered.
Then switch logfile in primary and
then you can see that active standby redo log is in group 5.
Perform same drop and recreate
steps in standby orcldg.Validate like below
SQL>
select GROUP#,THREAD#,BYTES/1024/1024/1024,ARCHIVED,STATUS,CON_ID from
v$standby_log;
GROUP#
THREAD# BYTES/1024/1024/1024 ARC STATUS CON_ID
----------
---------- -------------------- --- ---------- ----------
4 1 4 YES UNASSIGNED 0
5 1 4 YES UNASSIGNED 0
6 1 4 YES UNASSIGNED 0
Now we can
see that warning is not appearing anymore
DGMGRL>
validate database 'orcldg';
Database Role: Physical standby database
Primary Database: orcltest
Ready for Switchover: Yes
Ready for Failover: Yes (Primary Running)
Flashback Database Status:
orcltest :
Off
orcldg:
Off
Managed by Clusterware:
orcltest :
YES
orcldg:
YES
Current Log File Groups Configuration:
Thread #
Online Redo Log Groups Standby
Redo Log Groups Status
(orcltest) (orcldg)
1
3 3 Insufficient SRLs
Future Log File Groups Configuration:
Thread #
Online Redo Log Groups Standby
Redo Log Groups Status
(orcldg) (orcltest)
1
3 3 Insufficient SRLs
Before
switchover check log_archive_dest_1 and dest_2 parameter which is set nothing
From
standby database connect to dgmgrl and use below command
DGMGRL>
switchover to orcldg;
Performing
switchover NOW, please wait...
New primary
database "orcldg" is opening...
Oracle
Clusterware is restarting database "orcltest" ...
Connected
to "orcltest"
Connected
to "orcltest"
Switchover
succeeded, new primary is "orcldg"
DGMGRL>
show configuration
Configuration
- dgconfig_orcltest
Protection Mode: MaxPerformance
Members:
orcldg - Primary database
orcltest
- Physical standby database
Fast-Start
Failover: Disabled
Configuration
Status:
SUCCESS
(status updated 57 seconds ago)
We can see
that now log_archive_dest_2 has been set after switchover
SQL>
show parameter log_archive_dest_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_2 string service="orcltest", ASYNC
NOAFFIRM delay=0 optional compression=disable max_failure=0 reope
n=300 db_unique_name="orcltest" net_timeout=30,
valid_for=(online_logfile,all_roles)
***********************************Broker
configuration and switchover Testing completed
successfully******************************************
Note:-Create Pfile from spfile which will
be used later.
Create
2nd standby database from the backup of standby database
1.Create
an init parameter file inittemp.ora with the following minimum required
parameters and bring up the instance
DB_NAME=orcltest
DB_UNIQUE_NAME=ORCLPRIM
control_files='+RECO/ORCLPRIM/CONTROLFILE/control01.ctl'
fal_server=orcltest
fal_client=ORCLPRIM
db_file_name_convert='ORCLDG','ORCLPRIM'
log_file_name_convert='ORCLDG','ORCLPRIM'
db_recovery_file_dest='+RECO'
db_recovery_file_dest_size=200G
log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST
VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
2. Set oracle environment and start instance in
nomount mode using the pfile
export ORACLE_SID=ORCLPRIM
export ORACLE_BASE=/u01/app/odaorabase/oracle
export ORACLE_HOME=/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1
startup nomount
pfile=’$ORACLE_HOME/dbs/inittemp.ora’
3. Get
latest controlfile backup piece and restore standby controlfile from that
backup piece
Go to standby site(orcldg) use below
command to get that information
List backup of controlfile
BS
Key Type LV Size Device Type Elapsed Time Completion Time
-------
---- -- ---------- ----------- ------------ -------------------
22 Full
10.20M DISK 00:00:01 2025-09-25 13:51:30
BP Key: 22 Status: AVAILABLE Compressed: NO Tag: TAG20250925T135129
Piece Name: /tmp/rman/orcldg/c-129063019-20250925-02
Standby Control File Included: Ckp SCN:
2847189 Ckp time: 2025-09-25
13:51:01
Login
in new X11 server
rman
target /
RMAN>
restore standby controlfile from '/tmp/rman/orcldg/c-129063019-20250925-02';
restore
standby controlfile from '/tmp/rman/orcldg/c-129063019-20250925-02';
Starting
restore at 26-SEP-25
using
target database control file instead of recovery catalog
allocated
channel: ORA_DISK_1
channel
ORA_DISK_1: SID=4332 device type=DISK
channel
ORA_DISK_1: restoring control file
channel
ORA_DISK_1: restore complete, elapsed time: 00:00:02
output
file name=+RECO/ORCLPRIM/CONTROLFILE/control01.ctl
Finished
restore at 26-SEP-25
4. Mount
the database and catalog backup piece
RMAN> alter database mount;
alter
database mount;
released
channel: ORA_DISK_1
Statement
processed
RMAN>
catalog start with '/tmp/rman/orcldg/';
catalog
start with '/tmp/rman/orcldg/';
searching
for all files that match the pattern /tmp/rman/orcldg/
List
of Files Unknown to the Database
=====================================
File
Name: /tmp/rman/orcldg/3744ig8m_1_1
File
Name: /tmp/rman/orcldg/c-129063019-20250925-02
File
Name: /tmp/rman/orcldg/3844ig8m_1_1
File
Name: /tmp/rman/orcldg/3944ig8m_1_1
File
Name: /tmp/rman/orcldg/c-129063019-20250925-03
File
Name: /tmp/rman/orcldg/3a44ig8m_1_1
File
Name: /tmp/rman/orcldg/3c44ig8m_1_1
File
Name: /tmp/rman/orcldg/3b44ig8m_1_1
Do
you really want to catalog the above files (enter YES or NO)? yes
cataloging
files...
cataloging
done
List
of Cataloged Files
=======================
File
Name: /tmp/rman/orcldg/3744ig8m_1_1
File
Name: /tmp/rman/orcldg/c-129063019-20250925-02
File
Name: /tmp/rman/orcldg/3844ig8m_1_1
File
Name: /tmp/rman/orcldg/3944ig8m_1_1
File
Name: /tmp/rman/orcldg/c-129063019-20250925-03
File
Name: /tmp/rman/orcldg/3a44ig8m_1_1
File
Name: /tmp/rman/orcldg/3c44ig8m_1_1
File
Name: /tmp/rman/orcldg/3b44ig8m_1_1
5.
From primary database generate below statement and save in a file clone.cmd
select ‘set new name for datafile
‘||file#||’ to ‘’+DATA’’;’ from v$datafile;
6.
execute clone.cmd in RMAN prompt
RMAN>
@/home/oracle/clone.cmd
@/home/oracle/clone.cmd
RMAN>
run
2>
{set newname for datafile 1 to '+DATA' ;
3>
set newname for datafile 3 to '+DATA' ;
4>
set newname for datafile 4 to '+DATA' ;
5>
set until sequence 20;
6>
restore database;
7>
switch datafile all;
8>
recover database;
9>
}
8. Shutdown and start with actual pfile created for database and then create spfile from that
SQL> startup nomount
pfile='$ORACLE_HOME/dbs/initORCLPRIM.ora'
ORACLE instance
started.
Total System Global
Area 1.0286E+11 bytes
Fixed Size 37352048 bytes
Variable Size 1.5032E+10 bytes
Database Buffers 8.7510E+10 bytes
Redo Buffers 276926464 bytes
SQL> create spfile
from pfile='$ORACLE_HOME/dbs/initORCLPRIM.ora';
File created.
We can see spfile has
been created
ASMCMD> ls -l +DATA/ORCLPRIM/PARAMETERFILE/
Type Redund Striped
Time Sys Name
PARAMETERFILE MIRROR
COARSE SEP 26 06:00:00 Y
spfile.269.1212821133
9.
Register
this spfile in cluster using srvctl command
srvctl modify database
-d ORCLPRIM -spfile '+DATA/ORCLPRIM/PARAMETERFILE/spfile.269. 1212821679'
srvctl config database
-d ORCLPRIM
Database unique name: ORCLPRIM
Database name: ORCLPRIM
Oracle home:
/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/ORCLPRIM/PARAMETERFILE/spfile.269. 1212821679
Password file:
/u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/dbs/orapwORCLPRIM
Domain: world
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy:
AUTOMATIC
Server pools:
Disk Groups: DATA,RECO
Mount point paths:
/u01/app/odaorahome,/u01/app/odaorabase0,/u01/app/odaorabase1
Services:
Type: SINGLE
OSDBA group: dba
OSOPER group: dbaoper
Database instance: ORCLPRIM
Configured nodes:
tuslpmdmoda03a,tuslpmdmoda03b
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number
for database services:
Database is
administrator managed
Now,Start the database
using spfile.
10. Add following parameter in standby
database mdp
Alter system set
fal_server=’orcltest’;
Alter system set
fal_client=’ORCLPRIM’
11. Add following parameters in primary
database orcltest and standby database in sequence
SQL> alter system
set log_archive_config='DG_CONFIG=(orcltest,orcldg,ORCLPRIM)';
System altered.
SQL> alter system
set LOG_ARCHIVE_DEST_3='SERVICE=ORCLPRIM.world ASYNC
VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLPRIM';
System altered.
In standby database ORCLPRIM
Alter system set
log_archive_config=’DG_CONFIG(orcltest,orcldg,ORCLPRIM)’;
Tried
to add in broker but it failed
DGMGRL>
add database 'ORCLPRIM' as connect identifier is ORCLPRIM;
Database
"ORCLPRIM" added
DGMGRL>
show configuration
Configuration
- dgconfig_orcltest
Protection Mode: MaxPerformance
Members:
orcltest
- Primary database
orcldg - Physical standby database
ORCLPRIM
- Physical standby database (disabled)
ORA-16905: The member was not enabled
yet.
Fast-Start
Failover: Disabled
Configuration
Status:
SUCCESS (status updated 46 seconds ago)
DGMGRL>
enable database 'ORCLPRIM';
Enabled.
DGMGRL>
show configuration
Configuration
- dgconfig_orcltest
Protection Mode: MaxPerformance
Members:
orcltest
- Primary database
orcldg - Physical standby database
ORCLPRIM
- Physical standby database
Error: ORA-16664: unable to receive the
result from a member
Fast-Start
Failover: Disabled
Configuration
Status:
ERROR (status updated 44 seconds ago)
Enable
trace in ORCLPRIM database
SQL>
alter system set dg_broker_Start=false;
SQL> alter system set events '16191 trace name errorstack level 10';
SQL> alter system set dg_broker_Start=true;
Disable
trace
SQL>
alter system set dg_broker_Start=false;
SQL> alter system set events '16191 trace name errorstack off';
SQL> alter system set dg_broker_Start=true;
Found
below error in drcorcltest.log under trace directory
EDIT DATABASE ORCLPRIM SET PROPERTY ClusterDatabase = TRUE completed
with error ORA-16524
Connected
to broker and made the property as false
EDIT
DATABASE ORCLPRIM SET PROPERTY ClusterDatabase = FLASE;
There
were 2 active standby redo log as shown in below and one was pointing to
non-existing path highlighted below.
GROUP# STATUS TYPE
MEMBER
IS_ CON_ID
---------- -------
------- -------------------------------------------------- --- ----------
3 ONLINE
+RECO/ORCLPRIM/ONLINELOG/group_3.315.1212997323 NO 0
2 ONLINE
+RECO/ORCLPRIM/ONLINELOG/group_2.314.1212997321 NO 0
1 ONLINE
+RECO/ORCLPRIM/ONLINELOG/group_1.286.1212997321 NO 0
4 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_4.288.1212997309 NO 0
5 STANDBY
+RECO/ORCLDG/ONLINELOG/group_5.1285.1212757847
NO 0
6 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_6.313.1212997307 NO 0
7 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_7.318.1212998067 NO 0
GROUP# DBID THREAD# SEQUENCE#
BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#
NEXT_TIME LAST_CHANGE# LAST_TIME
CON_ID
----------
-------------------- ---------- ---------- ---------- ---------- ---------- ---
---------- ------------- --------- ------------ --------- ------------
--------- ----------
4 129063019 1 20 4294967296 512 0 YES ACTIVE 2845302 25-SEP-25 0 0
5
129063019 1 30 4294967296 512
478720 YES ACTIVE
3045912 26-SEP-25 3047648
26-SEP-25 0
6 UNASSIGNED 1 0 4294967296 512 0 NO
UNASSIGNED
0
This
has been fixed like below
SQL>
alter database clear logfile group 5;
Database
altered.
SQL>
select * from v$logfile;
GROUP# STATUS TYPE
MEMBER
IS_ CON_ID
---------- -------
------- -------------------------------------------------- --- ----------
3 ONLINE
+RECO/ORCLPRIM/ONLINELOG/group_3.315.1212997323 NO 0
2 ONLINE
+RECO/ORCLPRIM/ONLINELOG/group_2.314.1212997321 NO 0
1 ONLINE
+RECO/ORCLPRIM/ONLINELOG/group_1.286.1212997321 NO 0
4 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_4.288.1212997309 NO 0
5 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_5.324.1213000229 NO 0
6 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_6.313.1212997307 NO 0
7 STANDBY +RECO/ORCLPRIM/ONLINELOG/group_7.318.1212998067 NO 0
SQL> select * from
v$standby_Log;
GROUP# DBID THREAD# SEQUENCE#
BYTES BLOCKSIZE USED ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#
NEXT_TIME LAST_CHANGE# LAST_TIME
CON_ID
----------
-------------------- ---------- ---------- ---------- ---------- ---------- ---
---------- ------------- --------- ------------ --------- ------------
--------- ----------
4 129063019 1 61 4294967296 512
252928 YES ACTIVE
3489852 28-SEP-25 3490790
28-SEP-25 0
5 UNASSIGNED 1 0 4294967296 512 0 YES UNASSIGNED
0
6 UNASSIGNED 1 0 4294967296 512 0 NO
UNASSIGNED
0
7 UNASSIGNED 1 0 4294967296 512 0 YES UNASSIGNED
0
DGMGRL> show
configuration verbose;
Configuration - dgconfig_orcltest
Protection Mode: MaxPerformance
Members:
orcltest - Primary database
orcldg -
Physical standby database
ORCLPRIM - Physical standby database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
TraceLevel = 'USER'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
ObserverReconnect = '0'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
ObserverOverride = 'FALSE'
ExternalDestination1 = ''
ExternalDestination2 = ''
PrimaryLostWriteAction = 'CONTINUE'
ConfigurationWideServiceName = 'orcltest_CFG'
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS
Standby site
dgmgrl sys/*****@ORCLPRIM
DGMGRL for Linux: Release
19.0.0.0.0 - Production on Sun Sep 28 08:44:26 2025
Version 19.26.0.0.0
Connected to "ORCLPRIM"
Connected as SYSDBA.
DGMGRL> validate
database 'ORCLPRIM';
Primary Database: orcltest
Ready for Failover: Yes (Primary Running)
orcltest:
Off
ORCLPRIM
: Off
orcltest:
YES
ORCLPRIM
: YES
Members:
ORCLPRIM - Primary database
orcltest
- Physical standby database
orcldg - Physical standby database
Error: ORA-16664: unable to receive the
result from a member
ERROR (status updated 64 seconds ago)
---------
------------------------------ -------------------- ----------------
ORCLTEST ORCLPRIM READ WRITE PRIMARY
--------------------------------------------------------------------------------
------------------------------ --------------------------------------------
Oracle Database Catalog
Views
19.6.0.0.0
VALID
Oracle Database Packages
and Types
19.6.0.0.0
VALID
Oracle Real Application
Clusters
19.6.0.0.0
VALID
JServer JAVA Virtual
Machine
19.6.0.0.0
VALID
Oracle XDK
19.6.0.0.0
VALID
Oracle Database Java
Packages
19.6.0.0.0
VALID
OLAP Analytic
Workspace
19.6.0.0.0
VALID
Oracle XML Database
19.6.0.0.0
VALID
Oracle Workspace
Manager
19.6.0.0.0
VALID
Oracle Text
19.6.0.0.0
VALID
Oracle Multimedia
19.6.0.0.0
VALID
Spatial
19.6.0.0.0
VALID
Oracle OLAP API
19.6.0.0.0
VALID
Oracle Label
Security
19.6.0.0.0
VALID
Oracle Database
Vault
19.6.0.0.0
VALID
Run below command from
the location so that catalog is upgraded to 19.26
cd /u01/app/odaorahome/oracle/product/19.0.0.0/dbhome_1/OPatch
./datapatch -verbose