Wednesday, September 2, 2026

Dataguard for RAC(prim) to RAC(standby)



###############################################################################
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)