You are on page 1of 4

###################################################################################

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

You might also like