1)切换前准备
将Primary端和Standby端的实例都减小到1。
确保Primary上已没有活动会话:
点击(此处)折叠或打开
- SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
----------------------------------------
TO STANDBY
点击(此处)折叠或打开
- SELECT PROGRAM, TYPE FROM V$SESSION WHERE TYPE='USER';
确认Standby是否与Primary同步:
分两种情况:
a. 如果是最高可用或最大保护:
点击(此处)折叠或打开
-
SELECT DB_UNIQUE_NAME, PROTECTION_MODE, SYNCHRONIZATION_STATUS,
- SYNCHRONIZED FROM V$ARCHIVE_DEST_STATUS;
DB_UNIQUE_NAME PROTECTION_MODE SYNCHRONIZATION_STATUS SYN
--------------- -------------------- ---------------------- ---
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
matrix_dr0 MAXIMUM AVAILABILITY OK YES
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
NONE MAXIMUM PERFORMANCE CHECK CONFIGURATION NO
10 rows selected.
在Primary,查看当前日志序列号
点击(此处)折叠或打开
- SELECT THREAD#,SEQUENCE#,STATUS FROM V$LOG;
THREAD# SEQUENCE# STATUS
---------- ---------- --------------------------------
1 265 INACTIVE
1 266 CURRENT
1 264 INACTIVE
点击(此处)折叠或打开
- SELECT CLIENT_PROCESS,PROCESS,SEQUENCE#,STATUS FROM V$MANAGED_STANDBY;
CLIENT_PROCESS PROCESS SEQUENCE# STATUS
---------------- ------------------ ---------- ------------------------
ARCH ARCH 0 CONNECTED
ARCH ARCH 0 CONNECTED
ARCH ARCH 0 CONNECTED
ARCH ARCH 265 CLOSING
N/A MRP0 266 APPLYING_LOG
ARCH RFS 0 IDLE
UNKNOWN RFS 0 IDLE
LGWR RFS 266 IDLE
3) 执行切换
在Primary
点击(此处)折叠或打开
-
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
- WITH SESSION SHUTDOWN;
在原来的Standby端,正在等待转换为Primary(TO PRIMARY)
点击(此处)折叠或打开
- SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
----------------------------------------
TO PRIMARY
点击(此处)折叠或打开
-
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
- WITH SESSION SHUTDOWN;
4)后续
打开新Primary数据库
点击(此处)折叠或打开
- ALTER DATABASE OPEN;
点击(此处)折叠或打开
-
SQL> SHUTDOWN IMMEDIATE
-
SQL> STARTUP MOUNT
- SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;