(一)故障转移操作流程图 (二)故障转移操作流程 STEP1:刷新所有未发送到备库的日志到备库 SQL> ALTER SYSTEM FLUSH REDO TO 'target_db_name'; 其中,target_db_name为备库的db_unique_name。
STEP2:确认备库接收到的最新的归档日志文件 SQL> SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY thread#) AS LAST from V$ARCHIVED_LOG; THREAD LAST ---------- ---------- 1 100 如果可能,对于还未传输到备库的日志文件,直接从主数据库上拷贝过去,然后注册日志,注册日志放入如下: SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1'; STEP3:确认和解决日志GAP SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP; THREAD# LOW_SEQUENCE# HIGH_SEQUENCE# ---------- ------------- -------------- 1 90 92 在这个例子中,GAP存在于线程1的90,91,92号归档日志上,如果可能,拷贝这些日志到备库服务器上,然后注册日志 SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1'; STEP4:重复步骤3直到把所有GAP解决
STEP5:备库停止日志应用 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; STEP6:完成所有已经接收日志的应用 SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH; 如果这个操作未报错,则执行步骤7。 SQL> ALTER DATABASE ACTIVATE PHYSICAL STANDBY DATABASE; 这个语句完成后跳到第9步执行。 STEP7:确认目标备库准备切换为主库 SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; SWITCHOVER_STATUS ----------------- TO PRIMARY 如果SWITCHOVER_STATUS的值为“TO PRIMARY”或者“SESSIONS ACTIVE”,则说明备库已经准备切换为主库。如果不是这2个值,确认Redo日志应用是否还是活跃的,继续查询,直到变为这2个值中的一个为止。
STEP8:切换物理备库为主库 SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN; STEP9:打开新的主库 SQL> ALTER DATABASE OPEN; 后续: 1.在打开数据库之后,建议做一个完整备份; 2.如果主服务器/数据库重新启动,则需要还原失败的主数据库。 (责任编辑:) |