一、物理standby的角色转换
1. 检查是否支持switchover操作 ----在主库10.239.136.3操作
SQL> select switchover_status from v$database;
主库显示是to standby状态
2. 启动switchover ----在主库10.239.136.3操作
首先将主库改为standby
Sql> alter database commit to switchover to physical standby with session shutdown
语句执行完毕,主库由primary变为standby
3. 将主库重启到mount -- ----在主库10.239.136.3操作
SQL>shutdown immediate
SQL>startup mount
SQL>select database_role from v$database;
4. 检查standby是否支持switchover -- ----在备份库10.239.136.4操作
5. SQL> select switchover_status from v$database;
此语句显示状态为 to primary
6. 转换备库角色到主库 -- ----在备份库10.239.136.4操作
SQL>alter database recover managed standby database disconnect from session;
SQL>alter database commit to switchover to primary;
SQL>alter database open;
通过以上步骤可以成功的将备库置为主库,主库变为备库
SQL> select switchover_status from v$database;
显示为to standby
SQL>select database_role from v$database;
显示为primary
二、以下步骤是将主备库切回到原来的模式
1、在备库上执行以下语句
alter database open;
alter database commit to switchover to physical standby with session shutdown
shutdown immediate
startup mount
1、 在主库执行以下语句
alter database recover managed standby database disconnect from session;
alter database commit to switchover to primary;
alter database open;
SQL> select switchover_status from v$database;
显示为to standby
SQL>select database_role from v$database;
三、 以下步骤请不要做测试执行,因为是在主库已经瘫痪的情况下执行切换数据库到备库,做完以下操作后主库将脱离dataguard环境,需要重新搭建,所以请不要做测试
1、检查归档是否连续
SQL> select *from v$archive_GAP;
未选定行
2 、 检查归档文件是否完整
分别在 primary/standby 执行下列语句:
SQL> select distinct thread#,max(sequence#) over(partition by thread#) a from v$archived_log;
3、启动 failover
执行下列语句:
SQL> alter database recover managed standby database finish force;
FORCE 关键字将会停止当前活动的 RFS 进程,以便立刻执行 failover 。
4、剩下的步骤就与前面 switchover 很相似了
切换物理 standby 角色为 primary、
SQL> alter database commit to switchover to primary;
数据库已更改。
SQL> alter database open;
数据库已更改
SQL> select switchover_status from v$database;