目录

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、在原主库端检查数据库可切换状态

text

SQL> select switchover_status from v$database; 

SWITCHOVER_STATUS–>TO STANDBY,表示可以正常切换.

SWITCHOVER_STATUS–>SESSIONS ACTIVE,表示当前有会话处于ACTIVE状态

2、开始原主库正常切换

如果SWITCHOVER_STATUS 的值为TO STANDBY:

sql

SQL> alter database commit to switchover to physical standby; 

如果SWITCHOVER_STATUS 的值为SESSIONS ACTIVE:

sql

SQL> alter database commit to switchover to physical standby with session shutdown; 

3、重启原主库

sql

SQL> shutdown immediate;
SQL> startup mount;

4、到原备库验证可切换状态

sql

SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY

5、将原备库转换为新主库

如果SWITCHOVER_STATUS 的值为TO PRIMARY 则:

sql

SQL> alter database commit to switchover to primary; 

如果SWITCHOVER_STATUS 的值为SESSIONS ACTIVE 则:

sql

SQL> alter database commit to switchover to primary with session shutdown; 

6、打开原备库

sql

SQL> alter database open; 

7、原主库切换成新备库

新备库是mount状态了,运行以下语句

① 执行日志的运用

sql

SQL> alter database recover managed standby database using current logfile disconnect from session; 

② 取消日志的运用

sql

SQL> alter database recover managed standby database cancel; 

③ 打开数据库

sql

SQL> alter database open; 

④ 在open状态下执行日志的即时运用

sql

SQL> alter database recover managed standby database using current logfile disconnect from session; 

相关内容