You are on page 1of 87

Mallikarjun Ramadurg Mallik034

19c RAC DataGuard Build Document


Contents
Mallikarjun Ramadurg Mallik034

Check PRODDB database status...................................................................................................................................................................................3


Check PRODDB database listener and tnsnames.ora...................................................................................................................................................3
Check GI listener status on PROD servers.................................................................................................................................................................... 3
Check for ASM instance status on PROD Server..........................................................................................................................................................4
Check for All listener status on PROD servers..............................................................................................................................................................4
Mallikarjun Ramadurg Mallik034

Check cluster resource and Listeners are registered with cluster on PROD server......................................................................................................5
Verify local listener and scan listener on all the DB instances.....................................................................................................................................5
Verify TNSPING and the password from primary database on all nodes.....................................................................................................................5
Add the standby TNS details on PROD Servers............................................................................................................................................................6
Create initPRODDB.ora in PROD DB servers................................................................................................................................................................ 6
Mallikarjun Ramadurg Mallik034

Copy local password file from ASM on PROD Servers..................................................................................................................................................7


PRODDB prechks.......................................................................................................................................................................................................... 8
Add Standby Redo’s on PRODDB Server......................................................................................................................................................................8
Verify the standby redologs after adding at PRODDB Server.......................................................................................................................................9
Set dataguard parameter at PRODDB.......................................................................................................................................................................... 9
Mallikarjun Ramadurg Mallik034

DR database restore script......................................................................................................................................................................................... 10


Create dump and audit directories at STANDDB servers...........................................................................................................................................12
Create initSTANDDB.ora at Standby Servers..............................................................................................................................................................12
Verify STANDDB listener and tnsnames.ora file at STANDDB Server.........................................................................................................................12
Start STANDDB in nomount mode............................................................................................................................................................................. 13
Mallikarjun Ramadurg Mallik034

Add STANDDB listener to cluster at STANDDB Server................................................................................................................................................14


Verify the tnsping and password connection at STANDDB Server.............................................................................................................................14
Verify the STANDDB listener are registered with cluster...........................................................................................................................................15
Verify the RMAN connection with axillary instance...................................................................................................................................................15
Start RMAN active database duplication................................................................................................................................................................... 15
Mallikarjun Ramadurg Mallik034

Check STANDDB restore status.................................................................................................................................................................................. 15


After Restore complete verify the STANDDB.............................................................................................................................................................16
Create RAC initSTANDDB1.ora from from initPRODDB1.ora at STANDDB Server......................................................................................................16
Start STANDDB instance using initSTANDB1.ora........................................................................................................................................................17
Create local pfile initSTANDB1.ora point to SPFILE inside diskgroup.........................................................................................................................18
Mallikarjun Ramadurg Mallik034

Start STANDDB1 instance and verify the SPFILE........................................................................................................................................................18


Convert STANDDB database to RAC and add RAC parameter....................................................................................................................................19
Verify the STANDDB instance started with SPFILE on all nodes.................................................................................................................................19
Enable Log Archive Destination on Primary STANDDB Server....................................................................................................................................19
Start MRP process on node1 at STANDDB Server......................................................................................................................................................20
Mallikarjun Ramadurg Mallik034

Environment:

Primary: PRODDB
2 Node RAC – rac1.localdomain.com
Mallikarjun Ramadurg Mallik034

- rac2.lcoaldomain.com

Standby: STANDDB
2 Node RAC – rac3.localdomain.com
- rac4.lcoaldomain.com
Mallikarjun Ramadurg Mallik034

Check PRODDB database status


oracle$ srvctl status database -d PRODDB
Mallikarjun Ramadurg Mallik034

Check PRODDB database listener and tnsnames.ora


oracle$ cd $ORACLE_HOME/network/admin

oracle$ cat listener.ora

Node1:
Mallikarjun Ramadurg Mallik034

oracle$ cat tnsnames.ora


>>> PRODDB
>>> PRODDB1
>>> PRODDB2

oracle$ lsnrcrtl status


Mallikarjun Ramadurg Mallik034

oracle$ lsnrctl status LISTENER_PRODDB

Check GI listener status on PROD servers


grid$ cd $GI_HOME/network/admin
Mallikarjun Ramadurg Mallik034

grid$ cat listener.ora

grid$ lsnecrtl status

grid$ lsnrctl status LISTENER


Mallikarjun Ramadurg Mallik034

Check for ASM instance status on PROD Server


grid$ ps -ef|grep smon
>>> on all nodes
Mallikarjun Ramadurg Mallik034

Check for All listener status on PROD servers


Check for all listeners (LISTENER and LISTENER_PRODDB will run on all the nodes but SCAN
listener may run on any available nodes)

ps -ef|grep tns
Mallikarjun Ramadurg Mallik034

>>> LISTENER (Should Run on all node)


>>> LISTNERE_SCAN1
>>> LISTNERE_SCAN2
>>> LISTNERE_SCAN3
>>> LISTNERE_PRODDB (Should Run on all node)
Mallikarjun Ramadurg Mallik034

Check cluster resource and Listeners are registered with cluster on PROD server
#crsctl start res –t –init
#crsctl start res –t
>>> on all nodes

>>> if not addended please add with below commands


Mallikarjun Ramadurg Mallik034

srvctl add listener -l LISTENER_PRODDB -p 1522 -o /u01/app/oracle/product/19.0.0/dbhome_1


srvctl start listener -l LISTENER_PRODDB
srvctl status listener -l LISTENER_PRODDB
lsnrctl status LISTENER_PRODDB
Mallikarjun Ramadurg Mallik034

Verify local listener and scan listener on all the DB instances


SQL> show parameter local_listener

>>> If you don’t see local listener then add local listener with below commands
Mallikarjun Ramadurg Mallik034

alter system set local_listener ='(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)


(HOST=rac1-vip)(PORT=1522))))' scope=BOTH SID='PRODDB1';
alter system set local_listener ='(DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)
(HOST=rac2-vip)(PORT=1522))))' scope=BOTH SID='PRODDB2';

SQL> show parameter remote_listener


Mallikarjun Ramadurg Mallik034

Verify TNSPING and the password from primary database on all nodes
oracle$ tnsping PRODDB
oracle$ tnsping PRODDB1
oracle$ tnsping PRODDB2

sqlplus sys/'oracle'@PRODDB as sysdba


Mallikarjun Ramadurg Mallik034

sqlplus sys/'oracle'@PRODDB1 as sysdba


sqlplus sys/'oracle'@PRODDB2 as sysdba

Add the standby TNS details on PROD Servers


oracle$ cd <ORACLE_HOME>/network/admin
Mallikarjun Ramadurg Mallik034

Add below entries

oracle$ vitnsnames.ora
>>> STANDDB
>>> STANDDB1
>>> STANDDB2
Mallikarjun Ramadurg Mallik034

Create initPRODDB.ora in PROD DB servers


On Primary side check for the iniPRODDB.ora under $ORACLE_HOME/dbs directory if not
available please create local init file.
Mallikarjun Ramadurg Mallik034

oracle$ cd $ORACLE_HOME/dbs
oracle$ ls -lthr

If no initPRODDB.ora found please crease it with below commands

sqlplus / as sysdba
SQL> show parameter spfile;
Mallikarjun Ramadurg Mallik034

SQL> create pfile from pfile;

Once created copy it STANDDB side

cd $ORACLE_HOME/dbs
scp initPRODDB1.ora rac3:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/.
scp initPRODDB1.ora rac4:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/.
Mallikarjun Ramadurg Mallik034

Copy local password file from ASM on PROD Servers


On primary verify the local password file under $ORACLE_HOME/dbs directory if not
available please copy it from ASM.
Mallikarjun Ramadurg Mallik034

Get password file lcoation:


ASMCMD>pwget --dbuniquenamePRODDB

Copy Password file to local file system


ASMCMD>pwcopy '+DATA/PRODDB/orapwPRODDB' '/tmp/orapwPRODDB'

Copy Password to Standby


Mallikarjun Ramadurg Mallik034

scp /tmp/orapwPRODDB rac3:/tmp/orapwPRODDB


scp /tmp/orapwPRODDB rac4:/tmp/orapwPRODDB

Copy from /tmp to $ORACLE_HOME/dbs on Standby Servers


rac3@oracle$ cp /tmp/orapwPRODDB $ORACLE_HOME/dbs
rac4@oracle$ cp /tmp/orapwPRODDB $ORACLE_HOME/dbs
Mallikarjun Ramadurg Mallik034

Move Password file to DiskGroup on Standby Servers


ASMCMD>mkdir +DATA/STANDDB
ASMCMD>pwcopy '/tmp/orapwPRODDB' '+DATA/STANDDB/orapwSTANDDB'
Mallikarjun Ramadurg Mallik034

PRODDB prechks
Connect to primary database and verify force logging and redo logs groups

sqlplus sys/’oracle’@PRODDB as sysdba

select force_logging from v$database;


Mallikarjun Ramadurg Mallik034

>>> FORCE_LOGING Should be YES

set lines 190 pages 190


col instance for a8
col member for a50
SELECT t.INSTANCE, l.THREAD#, l.GROUP#, l.SEQUENCE#, l.bytes, l.archived, l.status, lf.MEMBER
FROM v$log l, v$logfilelf, v$thread t
Mallikarjun Ramadurg Mallik034

WHERE t.THREAD# = l.THREAD#


AND l.GROUP# = lf.GROUP#
ORDER BY l.THREAD#, GROUP#;

>>> which will display log groups


Mallikarjun Ramadurg Mallik034

Add Standby Redo’s on PRODDB Server


Verify Primary side Standby Redo’s on PRODDB Server

SQL> select * from v$standby_log;


Mallikarjun Ramadurg Mallik034

>>> if you don’t find any standby redologs then add the standby redo logs with 1 extra redo logs
group on each thread

SQL> Alter database add standby logfile thread 1 group 19 ('+DATAC1', '+RECOC1') SIZE 2G;
SQL> Alter database add standby logfile thread 1 group 20 ('+DATAC1', '+RECOC1') SIZE 2G;
Mallikarjun Ramadurg Mallik034

Verify the standby redologs after adding at PRODDB Server


SQL>select * from v$standby_log;
SQL>select group#, thread#, sequence#, archived, status from v$standby_log;
Mallikarjun Ramadurg Mallik034

Set dataguard parameter at PRODDB


Verify the below dataguard parameter at PRODDB and if not set please set as below

show parameter log_archive_config


show parameter standby_file_management
show parameter log_archive_dest_2
Mallikarjun Ramadurg Mallik034

show parameter log_archive_dest_state_2


show parameter fal_server

>>> Set these parameter using below commands

alter system set log_archive_config = 'DG_CONFIG=(PRODDB,STANDDB)' scope=both sid='*';

alter system set standby_file_management=AUTO scope=both sid='*';


Mallikarjun Ramadurg Mallik034

alter system set log_archive_dest_2='SERVICE=STANDDB VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)


DB_UNIQUE_NAME=STANDDB' scope=both sid='*';

alter system set log_archive_dest_state_2='DEFER' scope=both;

alter system set fal_server='PRODDB' scope=both sid='*';


Mallikarjun Ramadurg Mallik034

DR database restore script


cd /home/oracle/
vi Duplicate_STANDDB_from_PRODDB.sh

export DT=`date '+%m%d%Y%H%M'`


export CUR_DATE=`date`
Mallikarjun Ramadurg Mallik034

echo start_time $CUR_DATE


rman target sys/'oracle'@PRODDB auxiliary sys/'oracle'@STANDDB log=/home/oracle
/rmanLog_STANDDB_dg_${DT}.log << xx > dup_STANDDB1_${DT}.log
run
{
ALLOCATE AUXILIARY CHANNEL c1 DEVICE TYPE DISK ;
ALLOCATE AUXILIARY CHANNEL c2 DEVICE TYPE DISK ;
ALLOCATE AUXILIARY CHANNEL c3 DEVICE TYPE DISK ;
Mallikarjun Ramadurg Mallik034

ALLOCATE AUXILIARY CHANNEL c4 DEVICE TYPE DISK ;


ALLOCATE AUXILIARY CHANNEL c5 DEVICE TYPE DISK ;
ALLOCATE AUXILIARY CHANNEL c6 DEVICE TYPE DISK ;
ALLOCATE AUXILIARY CHANNEL c7 DEVICE TYPE DISK ;
ALLOCATE AUXILIARY CHANNEL c8 DEVICE TYPE DISK ;

ALLOCATE CHANNEL c9 DEVICE TYPE DISK ;


ALLOCATE CHANNEL c10 DEVICE TYPE DISK ;
Mallikarjun Ramadurg Mallik034

ALLOCATE CHANNEL c11 DEVICE TYPE DISK ;


ALLOCATE CHANNEL c12 DEVICE TYPE DISK ;
ALLOCATE CHANNEL c13 DEVICE TYPE DISK ;
ALLOCATE CHANNEL c14 DEVICE TYPE DISK ;
ALLOCATE CHANNEL c15 DEVICE TYPE DISK ;
ALLOCATE CHANNEL c16 DEVICE TYPE DISK ;

duplicate target database for standby from active database


Mallikarjun Ramadurg Mallik034

spfile
parameter_value_convert 'PRODDB','STANDDB'
set db_file_name_convert '+DATA/PRODDB/','+DATA/STANDDB/'
set db_create_file_dest='+DATA'
set db_recovery_file_dest_size='5000G'
set standby_file_management='AUTO'
set db_recovery_file_dest='+RECO'
set diagnostic_dest='/u01/app/oracle'
Mallikarjun Ramadurg Mallik034

set db_name='PRODDB'
set db_unique_name='STANDDB'
set log_file_name_convert='+DATA/PRODDB/','+DATA/STANDDB/','+RECO/PRODDB/','+RECO/STANDDB/'
set control_files='+DATA/STANDDB/controlfile/control01.ctl','+RECO/STANDDB/controlfile/
control02.ctl'
set cluster_database='false'
set background_dump_dest='/u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace'
set core_dump_dest='/u01/app/oracle/diag/rdbms/standdb/STANDDB1/cdump'
Mallikarjun Ramadurg Mallik034

set user_dump_dest='/u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace'
set service_names='STANDDB,STANDDB1'
set log_archive_dest_1 =''
set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac3-vip)
(PORT=1523))))'
set remote_listener='rac-sscan:1521'
;
}
Mallikarjun Ramadurg Mallik034

exit;
xx
echo end_time $CUR_DATE

Create dump and audit directories at STANDDB servers


Mallikarjun Ramadurg Mallik034

Verify the dump and audit directories and if not created create them

ls -ld /u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace
ls -ld /u01/app/oracle/diag/rdbms/standdb/STANDDB1/cdump
ls -ld /u01/app/oracle/diag/audit

mkdir -p /u01/app/oracle/diag/rdbms/standdb/STANDDB1/trace
Mallikarjun Ramadurg Mallik034

mkdir -p /u01/app/oracle/diag/rdbms/standdb/STANDDB1/cdump
mkdir -p /u01/app/oracle/diag/audit

Create initSTANDDB.ora at Standby Servers


Create initSTANDDB.ora file under $ORACLE_HOME/dbs directory
Mallikarjun Ramadurg Mallik034

vi initSTANDDB.ora
db_name=PRODDB
db_unique_name=STANDDB
STANDDB.local_listener='(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=rac3-vip)(PORT=1523)))'
remote_listener='rac-sscan:1521'
Mallikarjun Ramadurg Mallik034

Verify STANDDB listener and tnsnames.ora file at STANDDB Server


oracle$ cd $ORACLE_HOME/network/admin
oracle$ cat listener.ora

>>> Add the static listener registration method in listener.ora


Mallikarjun Ramadurg Mallik034

oracle$ cat tnsnames.ora

>>> You should see all these below entries

>>> STANDB
>>> STANDB1
>>> STANDB2
Mallikarjun Ramadurg Mallik034

>>> PRODDB
>>> PRODDB1
>>> PRODDB2

Start STANDDB in nomount mode


Mallikarjun Ramadurg Mallik034

Start the STANDDB instance with local initSTANDDB.ora created in nomount mode.

. oraenv
>>> STANDDB

vi .bash_profile
>>> set ORACLE_SID=STANDDB
Mallikarjun Ramadurg Mallik034

vi db.env
>>> export ORACLE_SID=STANDDB

sqlplus / as sysdba
startup nomount pfile='/u01/app/oracle/product/19.0.0/dbhome_1/dbs/initSTANDDB.ora';
Mallikarjun Ramadurg Mallik034

Add STANDDB listener to cluster at STANDDB Server


Will verify the STANDBD listener and add them to cluster.

srvctl add listener -l LISTENER_STANDDB -p 1523 -o /u01/app/oracle/product/19.0.0/dbhome_1


srvctl start listener -l LISTENER_STANDDB
srvctl status listener -l LISTENER_STANDDB
Mallikarjun Ramadurg Mallik034

lsnrctl status LISTENER_STANDDB

oracle$ lsnrcrtl status

oracle$ lsnrctl status LISTENER_STANDDB

ps -ef|greptns
Mallikarjun Ramadurg Mallik034

Verify the tnsping and password connection at STANDDB Server


oracle$ tnsping PRODDB
oracle$ tnsping PRODDB1
oracle$ tnsping PRODDB2
Mallikarjun Ramadurg Mallik034

oracle$ tnsping STANDDB


oracle$ tnsping STANDDB1
oracle$ tnsping STANDDB2

sqlplus sys/'oracle'@PRODDB as sysdba


sqlplus sys/'oracle'@PRODDB1 as sysdba
sqlplus sys/'oracle'@PRODDB2 as sysdba
Mallikarjun Ramadurg Mallik034

sqlplus sys/'oracle'@STANDDB as sysdba


sqlplus sys/'oracle'@STANDDB1 as sysdba

Verify the STANDDB listener are registered with cluster


Mallikarjun Ramadurg Mallik034

grid$ crsctl stat res -t

Verify the RMAN connection with axillary instance


rman target sys/'oracle'@PRODDB auxiliary sys/'oracle'@STANDDB
rman target sys/'oracle'@PRODDB auxiliary sys/'oracle'@STANDDB1
Mallikarjun Ramadurg Mallik034

Start RMAN active database duplication


Start the RMAN active database duplication and monitor the STANDDB restore status using restore
log file.
Mallikarjun Ramadurg Mallik034

Run the Active database duplicate for standby restore script as below.

cd /home/oracle
nohup ./Duplicate_STANDDB_from_PRODDB.sh > /dev/null &

tail -f /home/oracle/rmanLog_STANDDB_dg_<DAT_TIMESTAMP>.log
Mallikarjun Ramadurg Mallik034

Check STANDDB restore status


Check the restore status by logging into ASM and datafile directory size.

>>> At STANDDB ASM side

ASMCMD> cd +DATA/STANDDB/DATAFILE
Mallikarjun Ramadurg Mallik034

ASMCMD>ls -l

>>> At using restore logfile

tail -f /home/oracle/rmanLog_STANDDB_dg_<DAT_TIMESTAMP>.log
Mallikarjun Ramadurg Mallik034

After Restore complete verify the STANDDB

sqlplus / as sysdba
select name,open_mode from v$database;
select instance_name, status from v$instance;
shut immediate
Mallikarjun Ramadurg Mallik034

Create RAC initSTANDDB1.ora from from initPRODDB1.ora at STANDDB Server


We will rename initPRODDB1.ora (already created and moved to STANDDB in step 10) as
initSTANDDB1.ora and modify the parameter as per STANDDB servers.
Mallikarjun Ramadurg Mallik034

oracle$ cp initPRODDB1.ora initSTANDDB1.ora

>>> Edit initSTANDDB1.ora and replace all PRODDB parameter as STANDDB parameters

Example: .......

PRODDB1.instance_number=1>>> STANDDB1.instance_number=1
PRODDB2.instance_number=2>>> STANDBD2.instance_number=2
Mallikarjun Ramadurg Mallik034

>>> Also we will change the SCAN listener and Local listener as per STANDDB name.
rac-sacn >>> rac-sscan
rac1-vip >>> rac3-vip
rac2-vip >>> rac4-vip
Mallikarjun Ramadurg Mallik034

Start STANDDB instance using initSTANDB1.ora


Start the STANDDB1 instance using above modified pfile initSTANDDB1.ora and create SPFILE inside
DATA diskgroup

. oraenv
Mallikarjun Ramadurg Mallik034

>>> STANDDB1

vi .bash_profile
>>> export ORACLE_SID=STANDDB1

vi db.env
>>> export ORACLE_SID=STANDDB1
Mallikarjun Ramadurg Mallik034

sqlplus / as sysdba
startup mount pfile='/u01/app/oracle/product/19.0.0/STANDDB/dbs/initSTANDDB1.ora';

create spfile='+DATA/STANDDB/PARAMETERFILE/spfileSTANDDB.ora' from


pfile='/u01/app/oracle/product/19.0.0/STANDDB/dbs/initSTANDDB1.ora';

ASMCMD>cd '+DATA/STANDDB/PARAMETERFILE/
ASMCMD> ls -l
Mallikarjun Ramadurg Mallik034

Create local pfile initSTANDB1.ora point to SPFILE inside diskgroup


Create local pfile initSTANDDB1.ora to point to SPFILE inside disk_group.

cd $ORACLE_HOME/dbs
Mallikarjun Ramadurg Mallik034

mv initSTANDDB1.ora initSTANDDB1.ora_after_RAC_modified_GOLD

Node1>>>
cd $ORACLE_HOME/dbs
cat > initSTANDDB1.ora
spfile='+DATA/STANDDB/PARAMETERFILE/spfileSTANDDB.ora'
cat initOBIXPAOS1.ora
Mallikarjun Ramadurg Mallik034

Node2 >>>
cat > initSTANDDB2.ora
spfile='+DATA/STANDDB/PARAMETERFILE/spfileSTANDDB.ora'
cat initSTANDDB2.ora
Mallikarjun Ramadurg Mallik034

Start STANDDB1 instance and verify the SPFILE


Start STANDDB1 instance and verify the it should start with SPFILE which is inside Disk_Group

sqlplus / as sysdba
startup mount;
Mallikarjun Ramadurg Mallik034

show parameter spfile


shut immediate

Convert STANDDB database to RAC and add RAC parameter


Mallikarjun Ramadurg Mallik034

srvctl add database -d STANDDB -n STANDDB -o '/u01/app/oracle/product/19.0.0/dbhome_1' -c RAC -p


'+DATA/STANDDB/PARAMETERFILE/spfileSTANDDB.ora' -t IMMEDIATE -a 'DATA,RECO'

Add the RAC instances


srvctl add instance -d STANDDB -i STANDDB1 -n rac3
srvctl add instance -d STANDDB -i STANDDB2 -n rac4

srvctl config database -d STANDDB


Mallikarjun Ramadurg Mallik034

srvctl modify database -d STANDDB -r physical_standby

srvctl status database -d STANDDB


srvctl stop database -d STANDDB
srvctl start database -d STANDDB
srvctl status database -d STANDDB
Mallikarjun Ramadurg Mallik034

Verify the STANDDB instance started with SPFILE on all nodes


sqlplus / as sysdba
show parameter spfile
Mallikarjun Ramadurg Mallik034

Enable Log Archive Destination on Primary STANDDB Server


sqlplus / as sysdba
show parameter log_archive_dest_state_2

alter system set log_archive_dest_state_2=enable scope=both sid='*';


Mallikarjun Ramadurg Mallik034

show parameter log_archive_dest_state_2

archive log list

SELECT a.thread#, b. last_seq, a.applied_seq, a.last_app_timestamp, b.last_seq-a.applied_seq


ARCHIVE_GAP
FROM (SELECT thread#, MAX(sequence#) applied_seq, MAX(next_time) last_app_timestamp
FROM gv$archived_log WHERE applied = 'YES' GROUP BY thread#) a,
Mallikarjun Ramadurg Mallik034

(SELECT thread#, MAX (sequence#) last_seq FROM gv$archived_log GROUP BY thread#) b WHERE
a.thread# = b.thread#;

Start MRP process on node1 at STANDDB Server


sqlplus / as sysdba
Mallikarjun Ramadurg Mallik034

set lines 300


select INST_ID,name,open_mode,db_unique_name,database_role from gv$database;

alter database recover managed standby database disconnect;

select INST_ID,name,open_mode,db_unique_name,database_role from gv$database;


Mallikarjun Ramadurg Mallik034

set lines 300 pages 300


select message from v$dataguard_status;

You might also like