###############################################################################
in this blog we will configure STANDBY with RAC for Pimary with RAC
Dataguard for RAC(prim) to RAC(standby)
considerations
- OL-7.9, Prim GI19.18 and RDBMS 19.18 (db-NDWH)(db_unq-NDWHP)
- OL-8.10, Standby GI 19.32 and RDBMS 19.18(db-NDWH)(db_unq-NDWHS)
- made runinstallaer for 19.18 (download and unzip) on stanby for setup software only
- prepare init and tns setup
- rman checks and duplicate command
- restore to ASM disk DATA
- convert to 2 node and add database to cluster
[root@DR-DWHDB01 ~]# mkdir
-p /u01/patches/ojvm
[root@DR-DWHDB01 ~]# mkdir
/u01/patches/CPU_19.18
[root@DR-DWHDB01 ~]# time
unzip -q /u02/19cSW/19cGI_18PSU/p34762026_190000_Linux-x86-64.zip -d
/u01/patches/CPU_19.18/
[root@DR-DWHDB01 OJVM_19_18]# unzip -q
/u02/19cSW/OJVM_19_ALL/OJVM_19_18/p34786990_190000_Linux-x86-64.zip -d
/u01/patches/ojvm
###---RDBMS 19.18 installation on RAC with
setup software only option
[oracle@DR-DWHDB01 db_1]$ time
unzip -q /u02/19cSW/LINUX.X64_193000_db_home.zip -d
/u01/app/oracle/product/19.0.0.0/db_1
[oracle@DR-DWHDB01 ~]$ $ORACLE_HOME/OPatch/opatch
version
[oracle@DR-DWHDB01 ~]$ mv
/u01/app/oracle/product/19.0.0.0/db_1/OPatch/
/u01/app/oracle/product/19.0.0.0/db_1/OPatch_19.3_17
[oracle@DR-DWHDB01 ~]$ unzip
-q '/u02/19cSW/p6880880_190000_Linux-x86-64 (3).zip' -d
/u01/app/oracle/product/19.0.0.0/db_1
[root@DR-DWHDB01 ~]# chown
-R oracle:oinstall /u01/patches/
###--- Prim DB patches
[oracle@DWHDB02 db_1]$ opatch
lspatches
34786990;OJVM RELEASE UPDATE: 19.18.0.0.230117 (34786990)
34768559;OCW RELEASE UPDATE 19.18.0.0.0 (34768559)
34765931;DATABASE RELEASE UPDATE : 19.18.0.0.230117 (REL-JAN230131) (34765931)
OPatch succeeded.
[oracle@DWHDB02 db_1]$
###---
34765931 Database Release Update 19.18.0.0.230117
34768559 OCW Release Update 19.18.0.0.230117
34786990 OJVM RELEASE UPDATE: 19.18.0.0.230117
$ORACLE_HOME/OPatch/opatch version
[oracle@DR-DWHDB01 ~]$ cd
/u01/app/oracle/product/19.0.0.0/db_1
[oracle@DR-DWHDB01 db_1]$ ./runInstaller
-applyRU /u01/patches/CPU_19.18/34762026/34765931 -applyOneOffs
/u01/patches/CPU_19.18/34762026/34768559,/u01/patches/ojvm/34786990
[oracle@DWHDB02 ~]$ orapwd
file=+DATA/NDWH/PASSWORD/orapwNDWH password=59awestridge_1 dbuniquename='NDWH'
entries=30 force=y
[oracle@DWHDB02 ~]$ srvctl config database -d NDWH
ASMCMD [+DATA/NDWH/PASSWORD] > pwcopy
orapwndwh /u02/applmgr
[root@DWHDB02 applmgr]# chown
-R oracle:oinstall /u02/applmgr/orapwndwh
[oracle@DR-DWHDB01 dbs]$ cp
/u02/applmgr/orapwndwh .
[oracle@DR-DWHDB01 dbs]$ mv
orapwndwh orapwNDWHS1
[oracle@DR-DWHDB02 ~]$ cp
/u02/applmgr/orapwndwh $ORACLE_HOME/dbs
[oracle@DR-DWHDB02 dbs]$ mv
orapwndwh orapwNDWHS2
####---- Create Standby log on primary
https://docs.oracle.com/cd/B19306_01/server.102/b14239/create_ps.htm#i69583
(maximum number of logfiles for each thread + 1) * maximum number of threads
(1:1,1:2 + 1)* 2
(2+1)*2=6
alter database add standby
logfile thread 1
group 5 ('+DATA') size
1000M,
group 6 ('+DATA') size
1000M,
group 7 ('+DATA') size
1000M;
alter database add standby
logfile thread 2
group 8 ('+DATA') size
1000M,
group 9 ('+DATA') size
1000M,
group 10 ('+DATA') size
1000M;
set linesize 200;
col MEMBER for a48;
select b.thread#,
a.group#, a.member, b.bytes/1024/1024 AS size_mb FROM v$logfile a, v$log b
WHERE a.group# = b.group#;
SELECT * FROM V$LOGFILE;
THREAD# GROUP# MEMBER SIZE_MB
---------- ---------- ------------------------------------------------ ----------
1 1 +DATA/NDWH/ONLINELOG/group_1.262.1133958911 1000
1 2 +DATA/NDWH/ONLINELOG/group_2.263.1133958911 1000
2 3 +DATA/NDWH/ONLINELOG/group_3.264.1133959711 1000
2 4 +DATA/NDWH/ONLINELOG/group_4.261.1133959715 1000
SQL>
GROUP# STATUS TYPE MEMBER IS_ CON_ID
---------- ------- ------- ------------------------------------------------ --- ----------
2 ONLINE +DATA/NDWH/ONLINELOG/group_2.263.1133958911 NO 0
1 ONLINE +DATA/NDWH/ONLINELOG/group_1.262.1133958911 NO 0
3 ONLINE +DATA/NDWH/ONLINELOG/group_3.264.1133959711 NO 0
4 ONLINE +DATA/NDWH/ONLINELOG/group_4.261.1133959715 NO 0
5 STANDBY +DATA/NDWHP/ONLINELOG/group_5.298.1242313599 NO 0
6 STANDBY +DATA/NDWHP/ONLINELOG/group_6.329.1242313601 NO 0
7 STANDBY +DATA/NDWHP/ONLINELOG/group_7.328.1242313603 NO 0
8 STANDBY +DATA/NDWHP/ONLINELOG/group_8.327.1242313641 NO 0
9 STANDBY +DATA/NDWHP/ONLINELOG/group_9.326.1242313643 NO 0
10 STANDBY +DATA/NDWHP/ONLINELOG/group_10.325.1242313645 NO 0
10 rows selected.
SQL>
####---- modify init parameters in primary
alter system set
db_unique_name='NDWHP' scope=both sid='*';
alter system set
log_archive_config='dg_config=(NDWHP,NDWHS)' scope=both sid='*';
alter system set
log_archive_dest_2='service="NDWHS"','ASYNC NOAFFIRM delay=0 optional
compression=disable max_failure=10 max_connections=5 reopen=180
db_unique_name="NDWHS"
net_timeout=30','valid_for=(online_logfiles,primary_role)' scope=both sid='*';
alter system set
log_archive_dest_state_1='enable' scope=both sid='*';
alter system set log_archive_dest_state_2='enable' scope=both sid='*';
alter system set
fal_client='NDWHP' scope=both sid='*';
alter system set
log_archive_max_processes=30 scope=both sid='*';
alter system set
standby_file_management='AUTO' scope=both sid='*';
alter system set
fal_server='NDWHS' scope=both sid='*';
alter system set
log_archive_dest_1='location=use_db_recovery_file_dest
valid_for=(all_logfiles,all_roles) db_unique_name=NDWHP' scope=both sid='*';
alter system set log_file_name_convert='+DATA/NDWH/ONLINELOG','/u01/app/oracle/oradata/NDWHS/onlinelog' scope=spfile sid='*';
alter system set db_file_name_convert='+DATA/NDWH/DATAFILE','/u01/app/oracle/oradata/NDWHS/datafile','+DATA/NDWH/TEMPFILE','/u01/app/oracle/oradata/NDWHS/datafile' scope=spfile sid='*';
###---- tns entry at Prim (UR is mentioned for Static Listner)
[oracle@DWHDB01 admin]$ vi
tnsnames.ora
NDWHS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.28.191)(PORT = 1541))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = NDWH)(UR=A)
)
)
[oracle@DR-DWHDB01 dbs]$ cat
initNDWH.ora
*.audit_file_dest='/u01/app/oracle/admin/NDWH/adump'
*.compatible='19.0.0'
*.db_create_file_dest='+DATA'
*.db_name='NDWH'
*.db_recovery_file_dest='+RECO'
*.DB_RECOVERY_FILE_DEST_SIZE=900G
*.db_unique_name='NDWHS'
*.fal_client='NDWHS'
*.fal_server='NDWH'
*.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=10.98.28.191)(PORT=1521))'
*.log_archive_config='dg_config=(NDWHS,NDWHP)'
*.log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=NDWHS'
*.log_archive_dest_2=''
#*.log_archive_dest_2='service=NDWHP LGWR ASYNC NOAFFIRM max_failure=10 max_connections=5 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=NDWHP'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_max_processes=20
#*.remote_listener='scan-ndwh:1521'
*.sga_target=2G
*.standby_file_management='AUTO'
#-- instance wise parameters
NDWHS1.instance_number=1
NDWHS1.thread=1
NDWHS1.undo_tablespace='UNDOTBS1'
[oracle@DR-DWHDB01 dbs]$
[oracle@DR-DWHDB01 ~]$ mkdir
-p /u01/app/oracle/admin/NDWH/adump
[oracle@DR-DWHDB02 ~]$ mkdir
-p /u01/app/oracle/admin/NDWH/adump
###--- Static Listner creation
[oracle@DR-DWHDB01 admin]$ cat
listener.ora
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = NDWHS)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0.0/db_1)
(SID_NAME = NDWHS1)
)
)
LISTENER1 =
(DESCRIPTION_LIST=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DR-DWHDB01.areef.com) (PORT = 1541))
)
)
[oracle@DR-DWHDB01 admin]$
[oracle@DR-DWHDB01 admin]$ lsnrctl
start LISTENER1
[oracle@DR-DWHDB01 admin]$ ls
-ltrh
total 12K
-rw-r--r-- 1 oracle oinstall 1.5K Feb 14 2018 shrept.lst
drwxr-xr-x 2 oracle oinstall 64 Apr 17 2019 samples
-rw-r--r-- 1 oracle oinstall 242 Aug 26 16:06 listener.ora_auto
-rw-r--r-- 1 oracle oinstall 298 Aug 26 16:14 listener.ora
[oracle@DR-DWHDB01 admin]$ vi
tnsnames.ora
[oracle@DR-DWHDB01 admin]$ cat
tnsnames.ora
NDWHP =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = scan-ndwh.areef.com)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = NDWHP)
)
)
NDWHS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.98.28.191)(PORT = 1541))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = NDWH)(UR=A)
)
)
[oracle@DR-DWHDB01 admin]$
[oracle@DR-DWHDB01 admin]$ scp
tnsnames.ora DR-DWHDB02:/u01/app/oracle/product/19.0.0.0/db_1/network/admin/
tnsnames.ora 100% 344 468.6KB/s 00:00
[oracle@DR-DWHDB01 admin]$
[oracle@DR-DWHDB01 admin]$ sqlplus
sys/59awestridge_1@NDWHP as sysdba
SQL> select EXPIRY_DATE from v$pwfile_users;
EXPIRY_DA
---------
14-DEC-26
SQL>
[oracle@DR-DWHDB01 admin]$ sqlplus
sys/59awestridge_1@NDWHS as sysdba
SQL> select EXPIRY_DATE from v$pwfile_users;
EXPIRY_DA
---------
SQL>
[oracle@DR-DWHDB01 dbs]$ rman
target sys/59awestridge_1@NDWHP auxiliary sys/59awestridge_1@NDWHS
Recovery Manager: Release 19.0.0.0.0 - Production on Wed Aug 26 16:44:33 2026
Version 19.18.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
connected to target database: NDWH (DBID=2080975740)
connected to auxiliary database: NDWH (not mounted)
RMAN>
RUN
{
ALLOCATE CHANNEL c1 TYPE DISK;
ALLOCATE CHANNEL c2 TYPE DISK;
ALLOCATE CHANNEL c3 TYPE DISK;
ALLOCATE CHANNEL c4 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL a1 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL a2 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL a3 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL a4 TYPE DISK;
DUPLICATE TARGET DATABASE
FOR STANDBY FROM ACTIVE DATABASE DORECOVER NOFILENAMECHECK;
}
Finished Duplicate Db at 26-AUG-26
RMAN>
RMAN>
######################################### standby sql checks
SQL>
set linesize 200;
col name for a6;
set linesize 200
col name for a6;
select
NAME,DB_UNIQUE_NAME,CONTROLFILE_TYPE,OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,DATAGUARD_BROKER,SWITCHOVER_STATUS
from v$database;
NAME DB_UNIQUE_NAME CONTROL OPEN_MODE DATABASE_ROLE PROTECTION_MODE DATAGUAR SWITCHOVER_STATUS
------ ------------------------------ ------- -------------------- ---------------- -------------------- -------- --------------------
NDWH NDWHS STANDBY READ ONLY PHYSICAL STANDBY MAXIMUM PERFORMANCE DISABLED NOT ALLOWED
SQL>
######################################### primary sql session
SQL>
set linesize 200;
col name for a6;
set linesize 200
col name for a6;
select
NAME,DB_UNIQUE_NAME,CONTROLFILE_TYPE,OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,DATAGUARD_BROKER,SWITCHOVER_STATUS
from v$database;
NAME DB_UNIQUE_NAME CONTROL OPEN_MODE DATABASE_ROLE PROTECTION_MODE DATAGUAR SWITCHOVER_STATUS
------ ------------------------------ ------- -------------------- ---------------- -------------------- -------- --------------------
NDWH NDWHP CURRENT READ WRITE PRIMARY MAXIMUM PERFORMANCE DISABLED FAILED DESTINATION
SQL>
SQL> select
dest_id,destination,status,error,valid_now from v$archive_dest where
target='STANDBY';
DEST_ID
----------
DESTINATION
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STATUS ERROR VALID_NOW
--------- ----------------------------------------------------------------- ----------------
2
NDWHS
DISABLED ORA-12541: TNS:no listener INACTIVE
SQL>
#########################################
create spfile in ASM on standby db node1
SQL> show
parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /u01/app/oracle/product/19.0.0
.0/db_1/dbs/spfileNDWHS1.ora
SQL>
SQL> create
pfile='/u01/app/oracle/product/19.0.0.0/db_1/dbs/initNDWHS.ora' from spfile;
File created.
SQL> create
spfile='+DATA/NDWHS/PARAMETERFILE/spfilendwhs.ora' from
pfile='/u01/app/oracle/product/19.0.0.0/db_1/dbs/initNDWHS.ora';
File created.
SQL>
SQL> shut
immediate
ASMCMD [+DATA/NDWHS/PARAMETERFILE] > ls
spfile.298.1242387087
spfilendwhs.ora
ASMCMD [+DATA/NDWHS/PARAMETERFILE] >
[oracle@DR-DWHDB01 ~]$ cd
$ORACLE_HOME/dbs
[oracle@DR-DWHDB01 dbs]$ mv
spfileNDWHS1.ora spfileNDWHS1.ora_after_rman
[oracle@DR-DWHDB01 dbs]$ cp
$ORACLE_HOME/dbs/initNDWHS1.ora $ORACLE_HOME/dbs/initNDWHS1.ora_b4rman
[oracle@DR-DWHDB01 dbs]$ ls
-ltrh
total 52K
-rw-r--r-- 1 oracle oinstall 3.1K May 14 2015 init.ora
-rw-r----- 1 oracle oinstall 6.0K Aug 26 14:19 orapwndwhs
-rw-r----- 1 oracle oinstall 6.0K Aug 27 10:49 orapwNDWHS1
-rw-r----- 1 oracle asmadmin 9.5K Aug 27 11:17 spfileNDWHS1.ora_after_rman
-rw-r--r-- 1 oracle asmadmin 4.1K Aug 27 11:29 initNDWHS.ora
-rw-r--r-- 1 oracle oinstall 969 Aug 27 11:34 initNDWHS1.ora_b4rman
-rw-r--r-- 1 oracle oinstall 51 Aug 27 11:35 initNDWHS1.ora
-rw-rw---- 1 oracle asmadmin 1.6K Aug 27 11:36 hc_NDWHS1.dat
[oracle@DR-DWHDB01 dbs]$
[oracle@DR-DWHDB01 dbs]$
[oracle@DR-DWHDB01 dbs]$ echo
"spfile='+DATA/NDWHS/PARAMETERFILE/spfilendwhs.ora'" >
$ORACLE_HOME/dbs/initNDWHS1.ora
[oracle@DR-DWHDB01 dbs]$
[oracle@DR-DWHDB01 dbs]$ cat
$ORACLE_HOME/dbs/initNDWHS1.ora
spfile='+DATA/NDWHS/PARAMETERFILE/spfilendwhs.ora'
[oracle@DR-DWHDB01 dbs]$
[oracle@DR-DWHDB01 dbs]$ scp
initNDWHS1.ora
oracle@DR-DWHDB02:/u01/app/oracle/product/19.0.0.0/db_1/dbs/initNDWHS2.ora
[oracle@DR-DWHDB01 dbs]$ !sq
sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Aug 27 11:41:01 2026
Version 19.18.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
mount;
ORACLE instance started.
Total System Global Area 2147481632 bytes
Fixed Size 8927264 bytes
Variable Size 654311424 bytes
Database Buffers 1476395008 bytes
Redo Buffers 7847936 bytes
Database mounted.
SQL> show
parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DATA/NDWHS/PARAMETERFILE/spfi
lendwhs.ora
SQL>
######--- Add instance 2
parameters
[oracle@DR-DWHDB01 ~]$ srvctl
config scan_listener
SCAN Listeners for network 1:
Registration invited nodes:
Registration invited subnets:
Endpoints: TCP:1531
SCAN Listener LISTENER_SCAN1 exists
SCAN Listener is enabled.
SCAN Listener LISTENER_SCAN2 exists
SCAN Listener is enabled.
SCAN Listener LISTENER_SCAN3 exists
SCAN Listener is enabled.
[oracle@DR-DWHDB01 ~]$
alter system set
undo_tablespace=UNDOTBS2 sid='NDWHS2' scope=spfile;
alter system set
instance_number=1 sid='NDWHS1' scope=spfile;
alter system set
instance_number=2 sid='NDWHS2' scope=spfile;
alter system set
instance_name='NDWHS1' sid='NDWHS1' scope=spfile;
alter system set
instance_name='NDWHS2' sid='NDWHS2' scope=spfile;
alter system set thread=1
sid='NDWHS1' scope=spfile;
alter system set thread=2
sid='NDWHS2' scope=spfile;
alter system set
cluster_database=TRUE scope=spfile;
alter system set
remote_listener='scan-ctsdr:1531'
scope=spfile;
shut immediate;
startup mount;
SQL> select
name,open_mode, database_role,cdb from v$database;
NAME OPEN_MODE DATABASE_ROLE CDB
--------- -------------------- ---------------- ---
NDWH MOUNTED PHYSICAL STANDBY NO
SQL>
######---- add database to OCR
https://mypieceofdata.com/2024/11/26/error-ora-12547-tnslost-contact-trying-to-connect-on-sqlplus-before-duplicate/
issue was "/" in belwo -oraclehome /u01/app/oracle/product/19.0.0.0/db_1/
[oracle@DR-DWHDB01 ~]$ srvctl
add database -db NDWHS -oraclehome /u01/app/oracle/product/19.0.0.0/db_1 -role
physical_standby -startoption open -spfile
+DATA/NDWHS/PARAMETERFILE/spfilendwhs.ora
[oracle@DR-DWHDB01 ~]$ srvctl
config database
NDWHS
[oracle@DR-DWHDB01 ~]$ srvctl
add instance -db NDWHS -instance NDWHS1 -node DR-DWHDB01
[oracle@DR-DWHDB01 ~]$ srvctl
add instance -db NDWHS -instance NDWHS2 -node DR-DWHDB02
[oracle@DR-DWHDB01 ~]$ srvctl
start database -d NDWHS
[oracle@DR-DWHDB01 ~]$ srvctl
status database -d NDWHS
Instance NDWHS1 is running on node dr01-nctsdb01
Instance NDWHS2 is running on node dr01-nctsdb02
[oracle@DR-DWHDB01 ~]$
####--- update password file
[grid@DR-DWHDB01 ~]$ asmcmd
-p
ASMCMD [+] > cd +DATA/NDWHS/PASS*
ASMCMD [+DATA/NDWHS/PASSWORD] > ls
ASMCMD [+DATA/NDWHS/PASSWORD] > pwcopy
--dbuniquename NDWHS /u01/app/oracle/product/19.0.0.0/db_1/dbs/orapwNDWHS1
+DATA/NDWHS/PASSWORD/orapwndwhs
copying /u01/app/oracle/product/19.0.0.0/db_1/dbs/orapwNDWHS1 -> +DATA/NDWHS/PASSWORD/orapwndwhs
ASMCMD-9453: failed to register password file as a CRS resource
ASMCMD [+DATA/NDWHS/PASSWORD] > ls
orapwndwhs
pwdndwhs.299.1242396617
ASMCMD [+DATA/NDWHS/PASSWORD] > exit
[grid@DR-DWHDB01 ~]$ exit
logout
[oracle@DR-DWHDB01 dbs]$ srvctl
modify database -d NDWHS -pwfile +DATA/NDWHS/PASSWORD/orapwndwhs
[oracle@DR-DWHDB01 dbs]$ srvctl
config database -d NDWHS | grep "Password file:"
Password file: +DATA/NDWHS/PASSWORD/orapwndwhs
[oracle@DR-DWHDB01 dbs]$
SQL>
set linesize 200;
col destination for a20;
select
NAME,DB_UNIQUE_NAME,CONTROLFILE_TYPE,OPEN_MODE,DATABASE_ROLE,PROTECTION_MODE,DATAGUARD_BROKER,SWITCHOVER_STATUS
from gv$database;
NAME DB_UNIQUE_NAME CONTROL OPEN_MODE DATABASE_ROLE PROTECTION_MODE DATAGUAR SWITCHOVER_STATUS
--------- ------------------------------ ------- -------------------- ---------------- -------------------- -------- --------------------
NDWH NDWHS STANDBY READ ONLY PHYSICAL STANDBY MAXIMUM PERFORMANCE DISABLED NOT ALLOWED
NDWH NDWHS STANDBY READ ONLY PHYSICAL STANDBY MAXIMUM PERFORMANCE DISABLED NOT ALLOWED
SQL>
######--- after starting recovery mode if logs are not shipping then stop and start standby DB if required stop/start PRIM also then it worked here
set time on;
set sqlprompt
"_user'@'_connect_identifier 'on' _date> "
alter session set
nls_date_format='dd-Mon-yyyy hh24:mi:ss';
4:23:16 SYS@NDWHS1 on 27-Aug-2026 14:23:16> alter
database recover managed standby database disconnect from session;
Database altered.
SQL>
14:23:45 SYS@NDWH2 on 27-Aug-2026 14:22:45> select
dest_id,destination,status,error,valid_now from v$archive_dest where
target='STANDBY';
DEST_ID
----------
DESTINATION
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
STATUS TARGET DB_UNIQUE_NAME ERROR
--------- ---------------- ------------------------------ -----------------------------------------------------------------
2
NDWHS
DISABLED STANDBY NDWHS ORA-12541: TNS:no listener
14:22:45 SYS@NDWH2 on 27-Aug-2026 14:22:45> select
recovery_mode from v$archive_dest_status where dest_id = 2;
RECOVERY_MODE
----------------------------------
IDLE
14:22:55 SYS@NDWH2 on 27-Aug-2026 14:22:55>
14:24:13 SYS@NDWH2 on 27-Aug-2026 14:24:13> /
RECOVERY_MODE
----------------------------------
MANAGED
14:25:19 SYS@NDWH2 on 27-Aug-2026 14:25:19> /
RECOVERY_MODE
----------------------------------
MANAGED REAL TIME APPLY WITH QUERY
14:25:20 SYS@NDWH2 on 27-Aug-2026 14:25:20>
15:21:52 SYS@NDWH2 on 27-Aug-2026 15:21:52> select
dest_id,destination,status,error,valid_now from v$archive_dest where
target='STANDBY';
DEST_ID
----------
DESTINATION
--------------------------------------------------------------------------------
STATUS ERROR
--------- -----------------------------------------------------------------
VALID_NOW
----------------
2
NDWHS
VALID
YES
15:22:01 SYS@NDWH1 on 27-Aug-2026 15:22:01>
############################ DG Broker true on both prim
and standby
15:15:02 SYS@NDWHS1 on 27-Aug-2026 15:15:02> show
parameter dg_broker
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/19.0.0
.0/db_1/dbs/dr1NDWHS.dat
dg_broker_config_file2 string /u01/app/oracle/product/19.0.0
.0/db_1/dbs/dr2NDWHS.dat
dg_broker_start boolean FALSE
15:15:07 SYS@NDWHS1 on 27-Aug-2026 15:15:07>
15:22:01 SYS@NDWH1 on 27-Aug-2026 15:22:01> alter system set
dg_broker_start=TRUE scope=both sid='*';
15:17:17 SYS@NDWHS1 on 27-Aug-2026 15:17:17> alter system set
dg_broker_start=TRUE scope=both sid='*';
[oracle@DR-DWHDB01 ~]$ dgmgrl
DGMGRL> connect
sys/59awestridge_1@NDWHP
DGMGRL> create
configuration NDWH as primary database is NDWHP connect identifier is NDWHP;
Configuration "ndwh" created with primary database "ndwhp"
DGMGRL> add
database NDWHS as connect identifier is NDWHS maintained as physical;
Database "ndwhs" added
DGMGRL> show
configuration
DGMGRL> enable
configuration
DGMGRL> enable
database ndwhp;
DGMGRL> enable
database ndwhs;
DGMGRL> show
configuration
Configuration - ndwh
Protection Mode: MaxPerformance
Members:
ndwhp - Primary database
ndwhs - Physical standby database
Warning: ORA-16532: Oracle Data Guard broker configuration does not exist
Fast-Start Failover: Disabled
Configuration Status:
WARNING (status updated 38 seconds ago)
DGMGRL>
[oracle@DR-DWHDB02 dbs]$ srvctl stop database -d NDWHS
[oracle@DR-DWHDB02 dbs]$ srvctl start database -d NDWHS
DGMGRL> show configuration
Configuration - ndwh
Protection Mode: MaxPerformance
Members:
ndwhp - Primary database
ndwhs - Physical standby database
Warning: ORA-16809: multiple warnings detected for the member
Fast-Start Failover: Disabled
Configuration Status:
WARNING (status updated 53 seconds ago)
DGMGRL> SHOW
DATABASE ndwhs;
Database - ndwhs
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 0 seconds ago)
Apply Lag: 0 seconds (computed 0 seconds ago)
Average Apply Rate: 79.00 KByte/s
Real Time Query: ON
Instance(s):
NDWHS1 (apply instance)
NDWHS2
Database Status:
SUCCESS
DGMGRL> show configuration
Configuration - ndwh
Protection Mode: MaxPerformance
Members:
ndwhp - Primary database
ndwhs - Physical standby database
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS (status updated 28 second ago)
DGMGRL>
###############################################################################
###############################################################################
to safely remove configuration of datagaurd
along with broker
Remove broker configuration
[oracle@DWHDB02 ~]$ dgmgrl
DGMGRL> connect
sys/59awestridge_1@NDWHP
DGMGRL> show configuration
DGMGRL> remove
configuration;
DGMGRL> show configuration
ORA-16525: The Oracle Data Guard broker is not yet available.
Configuration details cannot be determined by DGMGRL
DGMGRL>
select * from v$log
select bytes/1024/1024 as size_mb from v$log
SELECT GROUP# FROM V$STANDBY_LOG;
select dest_id,destination,status from v$archive_dest where target='STANDBY'
VALID
select recovery_mode from v$archive_dest_status where dest_id = 2;
MANAGED WITH REAL TIME APPLY
1. Put primary database on maximum performance mode
16:22:55 SYS@NDWH2 on 27-Aug-2026 16:22:55>
ALTER DATABASE SET STANDBY
DATABASE TO MAXIMIZE PERFORMANCE;
Database altered.
2. Remove below mentioned parameter form primary database
alter system set
dg_broker_start=false scope=both sid='*';
alter system reset
LOG_ARCHIVE_CONFIG scope=spfile sid='*';
alter system reset
DB_FILE_NAME_CONVERT scope=spfile sid='*';
alter system reset
LOG_FILE_NAME_CONVERT scope=spfile sid='*';
alter system reset
STANDBY_FILE_MANAGEMENT scope=spfile sid='*';
alter system reset
FAL_SERVER scope=spfile sid='*';
alter system reset
FAL_CLIENT scope=spfile sid='*';
alter system reset LOG_ARCHIVE_DEST_STATE_2
scope=spfile sid='*';
alter system reset
LOG_ARCHIVE_DEST_2 scope=spfile sid='*'; --- destination pointing to standby
alter system reset
STANDBY_ARCHIVE_DEST scope=spfile sid='*';
3. Drop all standby log files from primary:
SQL> SELECT
GROUP# FROM V$STANDBY_LOG;
GROUP#
----------
5
6
7
8
SQL> alter database drop
standby logfile group 5;
alter database drop
standby logfile group 6;
alter database drop
standby logfile group 7;
alter database drop
standby logfile group 8;
SQL> SELECT GROUP# FROM V$STANDBY_LOG;
no rows selected
SQL>
4. Restart the primary database to reflect the parameters
shutdown immediate;
startup
Now the standby database is completely separated from primary.
###############################################################################
###############################################################################
If you want to use the
standby database as a standalone database, then follow below steps on standby
SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP
You can change dbid using NID utility( as dbid would be same as primary)