0 确定备库状态
select database_role, open_mode, switchover_status, protection_mode from v$database;
READ ONLY WITH APPLY - 物理备用数据库以实时查询模式打开
NOT ALLOWED - 在主数据库上,此状态表示没有有效且已启用的备用数据库。
在备用数据库上,此状态表示尚未从主数据库接收到切换请求。
TO PRIMARY - 数据库已准备好切换到主角色。
1 查看是否存在Gap
select thread#, low_sequence#, high_sequence# from v$archive_gap;
显示有关备用数据库上的存档间隙的信息。此视图可用于找出阻止当前恢复的当前存档缺口
2 停止备库实时恢复
alter database recover managed standby database cancel;
@stbstatus
3 强制应用备库的所有日志
alter database recover managed standby database finish force;
select database_role, open_mode, switchover_status, protection_mode from v$database;
4 备库 -> 主库
alter database commit to switchover to primary with session shutdown; -- 如果失败就执行下面的语句
alter database active physical standby database; -- Active
5 启动数据库
alter database open;
6 说明
经过Failover,我们认为Primary站点其实已经不能作为HA架构成员了。重新让Primary加入进去的方法有三个:
① 利用RMAN备份将Primary恢复到failover之前,重新进行日志弥补、角色切换;
② 利用Flashback Database策略,将数据库恢复到failover之前的时间点;
③ 删除Primary数据库,重新利用新Primary搭建standby。