2. 物理Standby执行Failover
1). 检查standby归档文件是否连续
STANDBY>SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
no rows selected
这一步很重要,必须确保所有已生成的归档文件都已传到standby服务器。
如果上述语句有返回结果,则必须把缺失的归档文件从primary端复制到standby端,然后通过以下命令将其加入数据库:
STANDBY>alter database register physical logfile 'filespec'
2). 检查standby归档文件是否完整
STANDBY>SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY threa
d#) AS LAST from V$ARCHIVED_LOG;
THREAD LAST
---------- ----------
1 479
通过上述语句可以查出standby目前序号最大的归档日志为479,如果在primary端有比479更大的归档日志,把它们拷贝过来,然后通过以下命令将其加入数据库:
STANDBY>alter database register physical logfile 'filespec'
3)启动failover
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;4)切换为primaryTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
ALTER DATABASE OPEN;STANDBY>select database_role from v$database;DATABASE_ROLE----------------PRIMARY