Oracle DataGuard主从切换
摘要
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、在原主库端检查数据库可切换状态
1 | SQL> select switchover_status from v$database; |
SWITCHOVER_STATUS–>TO STANDBY,表示可以正常切换.
SWITCHOVER_STATUS–>SESSIONS ACTIVE,表示当前有会话处于ACTIVE状态
2、开始原主库正常切换
如果SWITCHOVER_STATUS 的值为TO STANDBY:
1 | SQL> alter database commit to switchover to physical standby; |
如果SWITCHOVER_STATUS 的值为SESSIONS ACTIVE:
1 | SQL> alter database commit to switchover to physical standby with session shutdown; |
3、重启原主库
1 | SQL> shutdown immediate; |
4、到原备库验证可切换状态
1 | SQL> select switchover_status from v$database; |
5、将原备库转换为新主库
如果SWITCHOVER_STATUS 的值为TO PRIMARY 则:
1 | SQL> alter database commit to switchover to primary; |
如果SWITCHOVER_STATUS 的值为SESSIONS ACTIVE 则:
1 | SQL> alter database commit to switchover to primary with session shutdown; |
6、打开原备库
1 | SQL> alter database open; |
7、原主库切换成新备库
新备库是mount状态了,运行以下语句
① 执行日志的运用
1 | SQL> alter database recover managed standby database using current logfile disconnect from session; |
② 取消日志的运用
1 | SQL> alter database recover managed standby database cancel; |
③ 打开数据库
1 | SQL> alter database open; |
④ 在open状态下执行日志的即时运用
1 | SQL> alter database recover managed standby database using current logfile disconnect from session; |