切换是计划内事件,计划外是故障转移
1)切换前准备
将Primary端和Standby端的实例都减小到1。
确保Primary上已没有活动会话:
-
SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
----------------------------------------
TO STANDBY
如果是结果是SESSIONS ACTIVE,说明还有会话连接,检查:
-
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.
b. 如果是最高性能
在Primary,查看当前日志序列号
-
SELECT THREAD#,SEQUENCE#,STATUS FROM V$LOG;
THREAD# SEQUENCE# STATUS
---------- ---------- --------------------------------
1 265 INACTIVE
1 266 CURRENT
1 264 INACTIVE
在Standby,查看RFS的序列号。如果和Primary一致,则表明同步。
-
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
2)tail -f 查看alert log
3) 执行切换
在Primary
-
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
-
WITH SESSION SHUTDOWN;
到这里,原来的Primary已经转换为Standby。接下来要将原来的Standby转换为Primary。
在原来的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数据库
新的Standby数据库启用Redo Apply
-
SQL> SHUTDOWN IMMEDIATE
-
SQL> STARTUP MOUNT
-
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
完成。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22621861/viewspace-1381304/
,如需转载,请注明出处,否则将追究法律责任。