物理standby的Switchover

=======================物理standby的Switchover=====================
1、检查是否支持switchover操作   --primary数据库操作
   登陆primary数据库,查询v$database视图的switchover_status列。
   $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、启动switchover  --primary数据库操作
   首先将primary转换为standby的角色,通过下列语句:
   SQL> alter database commit to switchover to physical standby;
   说明:语句执行完毕后,primary数据库将会转换为standby数据库,并自动备份控制文件到trace。
3、重启动到mount  --原primary数据库操作
   SQL> shutdown immediate
   SQL> startup mount
4、检查是否支持switchover操作   --待转换standby数据库操作
   待原primary切换为standby角色之后,检查待转换的standby数据库switchover_status列,看看是否支持角色转换。
   $ set oracle_sid=jsspdg
   $ 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> alter database open;
   注:如果数据库处于open read-only模式的话,需要先shutdown然后直接startup即可。
7、验证一下
   (1)新的primary数据库
   SQL> show parameter db_unique
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- ------------------------------
   db_unique_name                       string      jsspdg
   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> show parameter db_unique
   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- ------------------------------
   db_unique_name                       string      jssweb
   SQL>  select max(sequence#) from v$archived_log;
   MAX(SEQUENCE#)
   --------------
   68
   转换成功。

你可能感兴趣的:(oracle,sql)