- Introduction: In Oracle, a switchover is a role transition operation between the primary and standby databases in a Data Guard environment. A switchover allows you to switch roles between the primary and standby databases in a planned manner, without data loss. This is typically done for maintenance, testing, or load balancing.
- Prerequisites: o Downtime required at Database end for 30 mins.
- Environment:
- Now start Switchover activity step by step:
o Application and Database connectivity for Standby site.
o Primary and Standby databases should be in sync.
Server | Primary | Standby |
---|---|---|
Hostname | Source | Target |
IP | 192.168.80.51 | 192.168.80.111 |
OS | OEL 9 | OEL 9 |
SID | ORCLDC | ORCLDR |
Service Name | ORCLDC | ORCLDR |
At Primary:
SQL> select NAME,DB_UNIQUE_NAME,DATABASE_ROLE,OPEN_MODE,SWITCHOVER_STATUS from v$database; NAME DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE SWITCHOVER_STATUS --------- ------------------------------ ---------------- -------------------- -------------------- ORCL ORCLDC PRIMARY READ WRITE TO STANDBY SQL> set lines 200 pages 300 SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS'; SQL> select d.db_unique_name, d.database_role, a.thread#, b.last_seq, a.applied_seq, a.last_app_timestamp, b.last_seq - a.applied_seq ARC_DIFF FROM (select thread#, MAX(sequence#) applied_seq, MAX(next_time) last_app_timestamp from gv$archived_log where applied='YES' group by thread#) a, (select thread#, MAX(sequence#) last_seq from gv$archived_log group by thread#) b, (select db_unique_name, database_role from v$database) d where a.thread#=b.thread#; SQL> Session altered. SQL>DB_UNIQUE_NAME DATABASE_ROLE THREAD# LAST_SEQ APPLIED_SEQ LAST_APP_TIMESTAMP ARC_DIFF ------------------------------ ---------------- ---------- ---------- ----------- -------------------- ---------- ORCLDC PRIMARY 1 103 103 08-FEB-2025 20:24:32 0 |
SQL> select NAME,DB_UNIQUE_NAME,DATABASE_ROLE,OPEN_MODE,SWITCHOVER_STATUS from v$database; NAME DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE SWITCHOVER_STATUS --------- ------------------------------ ---------------- -------------------- -------------------- ORCL ORCLDR PHYSICAL STANDBY READ ONLY WITH APPLY NOT ALLOWED SQL> set lines 200 pages 300 SQL> alter session set nls_date_format= 'DD-MON-YYYY HH24:MI:SS'; SQL> select d.db_unique_name, d.database_role, a.thread#, b.last_seq, a.applied_seq, b.last_seq - a.applied_seq ARC_DIFF, a.last_app_timestamp, round((sysdate - a.last_app_timestamp) * 24 * 60, 2) Gap_in_Mins, round((sysdate - a.last_app_timestamp) * 24 * 60 * 60, 2) Gap_in_Seconds FROM (select thread#, MAX(sequence#) applied_seq, MAX(next_time) last_app_timestamp from gv$archived_log where REGISTRAR='RFS' and applied='YES' group by thread#) a, (select thread#, MAX(sequence#) last_seq from gv$archived_log group by thread#) b, (select db_unique_name, database_role from v$database) d where a.thread#=b.thread#; SQL> Session altered. SQL>DB_UNIQUE_NAME DATABASE_ROLE THREAD# LAST_SEQ APPLIED_SEQ ARC_DIFF LAST_APP_TIMESTAMP GAP_IN_MINS GAP_IN_SECONDS ------------------------------ ---------------- ---------- ---------- ----------- ---------- -------------------- ----------- -------------- ORCLDR PHYSICAL STANDBY 1 103 103 0 08-FEB-2025 20:24:32 12.85 771 |
SQL> alter database switchover to orcldr verify; Database altered. |
If you receive any warning message like below then check DB alert log and take action accordingly.
SQL> alter database switchover to orcldr verify; alter database switchover to orcldr verify * ERROR at line 1: ORA-16475: succeeded with warnings, check alert log for more details |
SQL> alter database switchover to orcldr; Database altered. |
At new Primary:
SQL> startup ORACLE instance started. Total System Global Area 1459616616 bytes Fixed Size 9177960 bytes Variable Size 905969664 bytes Database Buffers 536870912 bytes Redo Buffers 7598080 bytes Database mounted. Database opened. SQL> select NAME,DB_UNIQUE_NAME,DATABASE_ROLE,OPEN_MODE,LOG_MODE from v$database; NAME DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE LOG_MODE --------- ---------------- ---------------- -------------------- ------------ ORCL ORCLDR PRIMARY READ WRITE ARCHIVELOG |
SQL> startup mount; ORACLE instance started. Total System Global Area 1459616616 bytes Fixed Size 9177960 bytes Variable Size 1157627904 bytes Database Buffers 285212672 bytes Redo Buffers 7598080 bytes Database mounted. SQL> select NAME,DB_UNIQUE_NAME,DATABASE_ROLE,OPEN_MODE,LOG_MODE from v$database; NAME DB_UNIQUE_NAME DATABASE_ROLE OPEN_MODE LOG_MODE --------- ---------------- ---------------- -------------------- ------------ ORCL ORCLDC PHYSICAL STANDBY MOUNTED ARCHIVELOG SQL> alter database recover managed standby database disconnect from session; Database altered. |
SQL> alter system switch logfile; System altered. SQL> / System altered. |
Thanks for visiting!!
0 comments:
Post a Comment