I'm Top Oracle DBA

Step by Step to Switchover on Oracle Database 11G

This article shows the Step of switchover from Physical standby to primary database on Oracle Database 11G.

Mention

  1. They have downtime
  2. actually do at primary first

Step

  1. Check the archive and role database on both sites (Primary and Standby)
  2. Switchover (start with the primary)
  3. Test a little bit of Transaction on the New Primary
  4. Switchover back (start with the new primary)


Step 1

Check the archive and role database on both sites (Primary and Standby)

On Primary
SQL> set line 900
SQL> set pagesi 900
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   READ WRITE             468920739 PRIMARY          TO STANDBY           DISABLED NONE    DB11G

SQL> select max(sequence#) from v$archived_log  where applied='YES';

MAX(SEQUENCE#)
--------------
            49
On Standby
SQL> set line 900
SQL> set pagesi 900
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   MOUNTED                468920739 PHYSICAL STANDBY NOT ALLOWED          DISABLED NONE    DB11G_STDBY

 SQL> select max(sequence#) from v$archived_log  where applied='YES';

MAX(SEQUENCE#)
--------------
            49


Step 2

Starting Switchover

On Primary
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

Database altered.

SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup mount;

ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2220200 bytes
Variable Size             851447640 bytes
Database Buffers          209715200 bytes
Redo Buffers                5554176 bytes
Database mounted.
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   MOUNTED                        0 PHYSICAL STANDBY TO PRIMARY           DISABLED NONE    DB11G

SQL> alter database recover managed standby database disconnect from session;

Database altered.
On Physical Standby
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   MOUNTED                        0 PHYSICAL STANDBY TO PRIMARY           DISABLED NONE    DB11G_STDBY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> 
SQL> shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes
Database mounted.
Database opened.
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   READ WRITE             472535662 PRIMARY          RESOLVABLE GAP       DISABLED NONE    DB11G_STDBY

SQL> 
SQL> 
SQL> 


Step 3

Test a little bit of Transaction on the New Primary

On New Primary
SQL> 
SQL> create user isuphisara identified by "isuphisara";

User created.

SQL> grant dba,resource,connect,create session to isuphisara;

Grant succeeded.


SQL> select owner,table_name from dba_tables where owner='SCOTT';

OWNER                          TABLE_NAME
------------------------------ ------------------------------
SCOTT                          DEPT
SCOTT                          EMP
SCOTT                          BONUS
SCOTT                          SALGRADE

SQL> create table isuphisara.dept as select * from scott.dept;

Table created.

SQL> create table isuphisara.EMP  as select * from scott.dept;

Table created.

SQL> select * from isuphisara.dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON


SQL> desc isuphisara.dept
 Name                                              Null?     Type
 ------------------------------------------------------------------------
 DEPTNO                      NUMBER(2)
 DNAME                       VARCHAR2(14)
 LOC                         VARCHAR2(13)

SQL> insert into isuphisara.dept(deptno,dname,loc) values('00','ABCD','BKK');

1 row created.

SQL> commit;

Commit complete.


SQL> alter system switch logfile;

System altered.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/arch
Oldest online log sequence     55
Next log sequence to archive   57
Current log sequence           57
SQL> alter system checkpoint;

System altered.

SQL> select max(sequence#) from v$archived_log  where applied='YES';

MAX(SEQUENCE#)
--------------
            57


Status
Primary switch to standby
standby switch to primary


Step 4

Switchover back to the normal

On New Primary
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/arch
Oldest online log sequence     55
Next log sequence to archive   57
Current log sequence           57
SQL> alter system checkpoint;

System altered.

SQL> select max(sequence#) from v$archived_log  where applied='YES';

MAX(SEQUENCE#)
--------------
            57

SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   READ WRITE             472535662 PRIMARY          TO STANDBY           DISABLED NONE    DB11G_STDBY

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

Database altered.

SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  217157632 bytes
Fixed Size                  2211928 bytes
Variable Size             159387560 bytes
Database Buffers           50331648 bytes
Redo Buffers                5226496 bytes
Database mounted.
SQL> alter database recover managed standby database disconnect from session;


Database altered.

SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   MOUNTED                472560866 PHYSICAL STANDBY NOT ALLOWED          DISABLED NONE    DB11G_STDBY
On New standby
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,SWITCHOVER#,DATABASE_ROLE,SWITCHOVER_STATUS,DATAGUARD_BROKER,GUARD_STATUS,DB_UNIQUE_NAME from v$database;

      DBID NAME      LOG_MODE     OPEN_MODE            SWITCHOVER# DATABASE_ROLE    SWITCHOVER_STATUS    DATAGUAR GUARD_S DB_UNIQUE_NAME
---------- --------- ------------ -------------------- ----------- ---------------- -------------------- -------- ------- ------------------------------
 468941731 DB11G     ARCHIVELOG   MOUNTED                        0 PHYSICAL STANDBY TO PRIMARY           DISABLED NONE    DB11G

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

Database altered.

SQL> shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup;

ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2220200 bytes
Variable Size             851447640 bytes
Database Buffers          209715200 bytes
Redo Buffers                5554176 bytes
Database mounted.
Database opened.
SQL> select owner,table_name from dba_tables where owner='ISUPHISARA';

OWNER                          TABLE_NAME
------------------------------ ------------------------------
ISUPHISARA                     DEPT
ISUPHISARA                     EMP

SQL> select * from ISUPHISARA.DEPT;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
         0 ABCD           BKK


Crosscheck

On Primary
SQL> select max(sequence#) from v$archived_log  where applied='YES';

MAX(SEQUENCE#)
--------------
            63
On Physical Standby
SQL> select max(sequence#) from v$archived_log  where applied='YES';

MAX(SEQUENCE#)
--------------
            63
error: Content is protected !!