主备库切换原因
1. switch:用户主动切换;
2. failover:主库出现故障,强行切换;
switch切换过程:先主库再备库
主库
v$database Switchover_Status值的含义
| NOT ALLOWED | 当前的数据库不是带有备用数据库的主数据库 |
|---|---|
| PREPARING DICTIONARY | 该逻辑备用数据库正在向一个主数据库和其他备用数据库发送它的重做数据,以便为切换做准备 |
| PREPARING SWITCHOVER | 接受用于切换的重做数据时,逻辑备用配置会使用它 |
| RECOVERY NEEDED | 备用数据库还没有接收到切换请求 |
| SESSIONS ACTIVE | 在主数据库中存在活动的SQL会话;在继续执行之前必须断开这些会话 |
| SWITCHOVER PENDING | 适用于那些已收到主数据库切换请求但是还没有处理该请求的备用数据库 |
| SWITCHOVER LATENT | 切换没有完成并返回到主数据库 |
| TO LOGICAL STANDBY | 主数据库已经收到了来自逻辑备用数据库的完整的字典 |
| TO PRIMARY | 该备用数据库可以转换为主数据库 |
| TO STANDBY | 该主数据库可以转换为备用数据库 |
1. 查看switchover_status:
select database_role, switchover_status from v$database;
如果switchover_status为:to standby 则:
alter database commit to switchover to physical standby;
否则用:
alter database commit to switchover to physical standby with session shutdown;
2. 重启数据库:
shutdown immediate;
startup nomount;
3. 以备库mount
alter database mount standby database;
备库
1. 应用redo:alter database recover managed standby database disconnect from session;
2. 查看switchover_status:select database_role, switchover_status from v$database;
如果switchover_status为:to primary 则:ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY
否则用:ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
3. 重启数据库
shutdown immediate;
startup;
failover 主备库切换
1.停止日志应用
alter database recover managed standby database cancel;
2. 关闭standby日志传输
alter database recover managed standby database finish force;
3. 切换到primary
alter database commit to switchover to primary with session shutdown;
做这一步的时候,若存在gap,则会报ORA-16139:Switchover: Media recovery required - standby not in limbo 错误。
做测试的时候,若先起主库再起备库,且未等待备库相关日志传输完毕,就会出现这个问题。此时需要强制切换
alter database activate physical standby database;
4. 重启数据库到open状态
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




