###################################################################################
##
####################### Step Manual Data Guard Switchover
#########################
###################################################################################
##
https://oracledbwr.com/oracle-12c-step-by-step-manual-data-guard-switchover/
on prod and standy
------------------
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
Create Redo Logs standby
Create online redo logs for the standby. It's a good idea to match the
configuration of the primary server.
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/DB11G/redo03.log
/u01/app/oracle/oradata/DB11G/redo02.log
/u01/app/oracle/oradata/DB11G/redo01.log
SQL> desc v$log
Name Null? Type
----------------------------------------- -------- ----------------------------
GROUP# NUMBER
THREAD# NUMBER
SEQUENCE# NUMBER
BYTES NUMBER
BLOCKSIZE NUMBER
MEMBERS NUMBER
ARCHIVED VARCHAR2(3)
STATUS VARCHAR2(16)
FIRST_CHANGE# NUMBER
FIRST_TIME DATE
NEXT_CHANGE# NUMBER
NEXT_TIME DATE
SQL> select ((BYTES/1024)/1024) from v$log;
((BYTES/1024)/1024)
-------------------
50
50
50
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/redo03.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/redo03.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/redo01.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;
=== create standby redo logs on both the standby and the primary database (in case
of switchovers)==
In addition to the online redo logs, you should create standby redo logs on both
the standby and the primary database (in case of switchovers). The standby redo
logs should be at least as big as the largest online redo log and there should be
one extra group per thread compared the online redo logs. In my case, the following
standby redo logs must be created on both servers.
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10
('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11
('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12
('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13
('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 50M;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
Primary database:-
select name,open_mode,database_role from v$database
SQL> select name,open_mode,database_role from v$database;
2 ;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
DB11G READ WRITE PRIMARY
Standby database:-
select name,open_mode,database_role from v$database;
SQL> select name,open_mode,database_role from v$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
DB11G MOUNTED PHYSICAL STANDBY
Precheck for Switchover:-
Before performing switchover, kindly verify the state of data guard on both the
instances by following SQL queries:
Step 2:-
ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
SELECT sequence#, first_time, next_time, applied FROM v$archived_log ORDER BY
sequence#;
On Primary database:-
Step 4:
SQL> alter database commit to switchover to standby;
shutdown immediate
startup nomount
alter database mount standby database
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
-select name,open_mode,database_role from v$database;
On Standby database:
Step 7:-
alter database commit to switchover to primary;
SQL> alter database commit to switchover to primary;
Database altered.
SQL> select name,open_mode,database_role from v$database;
NAME OPEN_MODE DATABASE_ROLE
--------- -------------------- ----------------
DB11G MOUNTED PRIMARY
SQL> shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 1653518336 bytes
Fixed Size 2253784 bytes
Variable Size 1023413288 bytes
Database Buffers 620756992 bytes
Redo Buffers 7094272 bytes
Database mounted.
Database opened.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DB11GDR NOAFFIRM ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11GDR';
3. ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=DEFER;
5. SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;