Switchover to Production ODA Environment
Standby
———-
SQL> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE ‘MRP%’;
PROCESS
———
MRP0
SQL> set lines 133 pages 133
select database_role,db_unique_name,open_mode,protection_mode from gv$database;
DATABASE_ROLE DB_UNIQUE_NAME OPEN_MODE PROTECTION_MODE
—————- —————————— ——————– ——————–
PHYSICAL STANDBY testdb READ ONLY WITH APPLY MAXIMUM PERFORMANCE
SQL> SELECT ARCH.THREAD# “Thread”, ARCH.SEQUENCE# “Last Sequence Received”, APPL.SEQUENCE# “Last Sequence Applied”, (ARCH.SEQUENCE# – APPL.SEQUENCE#) “Difference”
FROM (SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM
V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1;
2 3
Thread Last Sequence Received Last Sequence Applied Difference
———- ———————- ——————— ———-
1 1770 1770 0
2 1564 1564 0
2 1564 1564 0
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.10.0.0.0
[oracle@test ~]$ srvctl status database -d testdb
Instance testdb1 is running on node test
Instance testdb2 is not running on node test2
[oracle@test ~]$ srvctl stop database -d testdb
[oracle@test ~]$ srvctl status database -d testdb
Instance testdb1 is not running on node test
Instance testdb2 is not running on node test2
[oracle@test ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 – Production on Thu Feb 22 10:47:22 2024
Version 19.10.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 4294963264 bytes
Fixed Size 8904768 bytes
Variable Size 2583691264 bytes
Database Buffers 1660944384 bytes
Redo Buffers 41422848 bytes
Database mounted.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
Primary
———-
SQL> set lines 133 pages 133
select database_role,db_unique_name,open_mode,protection_mode from gv$database;SQL>
DATABASE_ROLE DB_UNIQUE_NAME OPEN_MODE PROTECTION_MODE
—————- —————————— ——————– ——————–
PRIMARY testdbdr READ WRITE MAXIMUM PERFORMANCE
SQL> alter system archive log current;
System altered.
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
——————–
RESOLVABLE GAP
SQL> select
dest_name,
status,
error
from
v$archive_dest
where
status=’ERROR’; 2 3 4 5 6 7 8
no rows selected
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
——————–
TO STANDBY
Standby
———-
[oracle@test 2024_02_22]$ srvctl stop instance -i testdb2 -d testdb
[oracle@test 2024_02_22]$ srvctl status database -db testdb
Instance testdb1 is running on node test
Instance testdb2 is not running on node test2
Primary
——–
SQL> alter database switchover to testdb verify;
alter database switchover to testdb verify
*
ERROR at line 1:
ORA-16475: succeeded with warnings, check alert log for more details
SQL> alter database switchover to testdb;
Database altered.
New Secondary
===============
startup mount;
alter system set log_archive_dest_state_2=’DEFER’ scope=both sid=’*’;
System altered.
SQL> alter database recover managed standby database disconnect from session;
Database altered.
SQL> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE ‘MRP%’;
PROCESS
———
MRP0
SQL> set lines 133 pages 133
select database_role,db_unique_name,open_mode,protection_mode from gv$database;SQL>
DATABASE_ROLE DB_UNIQUE_NAME OPEN_MODE PROTECTION_MODE
—————- —————————— ——————– ——————–
PHYSICAL STANDBY testdbdr MOUNTED MAXIMUM PERFORMANCE
SQL> select message from v$dataguard_status;
New Primary
=============
SQL> select open_mode,name from v$database;
OPEN_MODE NAME
——————– ———
MOUNTED testdb
SQL> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE ‘MRP%’;
no rows selected
SQL> alter system set log_archive_dest_state_2=’ENABLE’ scope=both sid=’*’;
System altered.
SQL> alter database open;
Database altered.
SQL> set lines 133 pages 133
select database_role,db_unique_name,open_mode,protection_mode from gv$database;SQL>
DATABASE_ROLE DB_UNIQUE_NAME OPEN_MODE PROTECTION_MODE
—————- —————————— ——————– ——————–
PRIMARY testdb READ WRITE MAXIMUM PERFORMANCE
SQL> SELECT ARCH.THREAD# “Thread”, ARCH.SEQUENCE# “Last Sequence Received”, APPL.SEQUENCE# “Last Sequence Applied”, (ARCH.SEQUENCE# – APPL.SEQUENCE#) “Difference”
FROM (SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM
V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,(SELECT THREAD# ,SEQUENCE# FROM 2 V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL WHERE ARCH.THREAD# = APPL.THREAD# ORDER BY 1; 3
Thread Last Sequence Received Last Sequence Applied Difference
———- ———————- ——————— ———-
1 1778 1778 0
1 1778 1778 0
2 1564 1564 0
2 1564 1564 0
SQL> select
dest_name,
status,
error
from
v$archive_dest
where
status=’ERROR’; 2 3 4 5 6 7 8
no rows selected
SQL> select sequence#,applied from (select sequence#,applied from gv$archived_log order by sequence# desc) where rownum<=15;