测试版-物理switchover

注意:standby数据库应该是alter database recover managed standby database disconnect from session命令之后执行的。
而并非alter database recover managed standby database cancel;命令之后执行
1、检查primary数据库是否支持switchover操作
   $sqlplus / as sysdba
   SQL> select switchover_status from v$database;
       SWITCHOVER_STATUS
        --------------------
        TO STANDBY
   说明:如果该列值为"TO STANDBY"则表示primary数据库支持转换为standby角色,否则的话你就需要重新检查一下Data Guard配置,比如看看LOG_ARCHIVE_DEST_n之类参数值是否正确有效等等。

2、primary数据库启动switchover
   首先将primary转换为standby的角色,通过下列语句:
   SQL> alter database commit to switchover to physical standby;(with session shutdown)
   说明:语句执行完毕后,primary数据库将会转换为standby数据库,并自动备份控制文件到trace。
3、primary数据库重启动到mount
   SQL> shutdown immediate
   SQL> startup mount
4、检查待转换standby数据库是否支持switchover操作
   待原primary切换为standby角色之后,检查待转换的standby数据库switchover_status列,看看是否支持角色转换。
   $ sqlplus / as sysdba
   SQL> select switchover_status from v$database;
   SWITCHOVER_STATUS
   --------------------
   TO PRIMARY
   说明:此时待转换standby数据库switchover_status列值应该是"TO_PRIMARY",如否则检查其初始化参数文件中的设置,提示一下,比着原primary数据库的初始化参数改改。
5、转换角色到primary  --待转换standby数据库操作
   通过下列语句转换standby到primary角色:
   SQL> alter database commit to switchover to primary;
   注意:待转换的物理standby可以处于mount模式或open read only模式,但不能处于open read write模式。
6、完成转换,打开新的primary数据库
   SQL> shutdown immediate;
   SQL> alter database open;
   注:如果数据库处于open read-only模式的话,需要先shutdown然后直接startup即可。
7、验证一下
   (1)新的primary数据库
   SQL> select max(sequence#) from v$archived_log;
   MAX(SEQUENCE#)
   --------------
   67
   SQL> alter system switch logfile;
   SQL> select max(sequence#) from v$archived_log;
   MAX(SEQUENCE#)
   --------------
   68
   (2)新的standby数据库
   SQL>  select max(sequence#) from v$archived_log;
   MAX(SEQUENCE#)
   --------------
   68
到此转换成功。

你可能感兴趣的:(sql)