您当前的位置: 首页 > 数据库教程 > Oracle教程 > Oracle] Data Guard 之 浅析Switchover与Failover

Oracle] Data Guard 之 浅析Switchover与Failover

作者:不详 来源:网络 发布时间: 2014-09-01 11:37 点击:
以下是对Oracle中Switchover与Failover的使用进行了详细的分析介绍,需要的朋友参考下 Data Guard主从库之间的角色切换分为以下两种: 1)Switchover Swithchover通常都是人为的有计划的进行角色互换,比如升级等。它通常都是无损的,即不会有数据丢失。 其执行主要分

Oracle] Data Guard 之 浅析Switchover与Failover

  以下是对Oracle中Switchover与Failover的使用进行了详细的分析介绍,需要的朋友参考下

  Data Guard主从库之间的角色切换分为以下两种:

  1)Switchover

  
Swithchover通常都是人为的有计划的进行角色互换,比如升级等。它通常都是无损的,即不会有数据丢失。其执行主要分为两个阶段:

  
1.Primary转为Standby

  2.Standby(之一)转为Primary

  2)Failover

  
Failover是指由于Primary故障无法短时间恢复,Standby不得不充当Primay的角色,如果处于最高性能模式,这种切换很有可能导致数据丢失。

  下面分别演示物理Standby的Switchover和Failover(逻辑Standby的切换类似)。

  1. 物理Standby执行Switchover

  1) 确认pirmary是否可以切换为standby

  
PRIMARY>select switchover_status from v$database;

  SWITCHOVER_STATUS

  --------------------

  TO STANDBY

  2) 切换primary为standby

  
PRIMARY>alter database commit to switchover to physical standby;

  3) 启动原primary到mount状态

  
此时原primary就是以standby身份在运行了。

  4) 确认standby是否可以切换为primary

  
STANDBY>select switchover_status from v$database;

  SWITCHOVER_STATUS

  --------------------

  TO PRIMARY

  5) 切换standby为primary

  
STANDBY>alter database commit to switchover to primary;

  Database altered.

  STANDBY>alter database open;

  Database altered.

  6) 验证

  
PRIMARY>select database_role from v$database;

  DATABASE_ROLE

  ----------------

  PHYSICAL STANDBY

  STANDBY>select database_role from v$database;

  DATABASE_ROLE

  ----------------

  PRIMARY

  可以看到原来的primary现在变成standby,原来的standby变成primary了。

  检查新的primary的log_archive_dest参数的设置是否正确:

  STANDBY>show parameter log_archive_dest_2

  NAME                               TYPE      VALUE

  ------------------------------------ ----------- ------------------------------

  log_archive_dest_2          string    service=O01DMS0 ARCH VALID_FOR

                                                              =(ONLINE_LOGFILES,PRIMARY_ROLE

                                                               ) DB_UNIQUE_NAME=O01DMS0

  STANDBY>show parameter log_archive_dest_state_2

  NAME                               TYPE      VALUE

  ------------------------------------ ----------- ---------------------

  log_archive_dest_state_2           string    ENABLE

  在新primary端做log switch:

  STANDBY>alter system switch logfile;

  System altered.

  STANDBY>select max(sequence#) from v$archived_log;

  MAX(SEQUENCE#)

  --------------

           479

  在新standby端查看:

  
PRIMARY>select max(sequence#) from v$archived_log;

  MAX(SEQUENCE#)

  --------------

           479

  两边的归档日志的最大序号吻合,说明switchover成功。

  2. 物理Standby执行Failover

  1). 检查standby归档文件是否连续

  
STANDBY>SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

  no rows selected

  这一步很重要,必须确保所有已生成的归档文件都已传到standby服务器。

  如果上述语句有返回结果,则必须把缺失的归档文件从primary端复制到standby端,然后通过以下命令将其加入数据库:

  STANDBY>alter database register physical logfile 'filespec'

  2). 检查standby归档文件是否完整

  
STANDBY>SELECT UNIQUE THREAD# AS THREAD, MAX(SEQUENCE#) OVER (PARTITION BY threa

  d#) AS LAST from V$ARCHIVED_LOG;

    THREAD     LAST

  ---------- ----------

         1      479

  通过上述语句可以查出standby目前序号最大的归档日志为479,如果在primary端有比479更大的归档日志,把它们拷贝过来,然后通过以下命令将其加入数据库:

  STANDBY>alter database register physical logfile 'filespec'

  3)启动failover

  ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;4)切换为primaryTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

  ALTER DATABASE OPEN;STANDBY>select database_role from v$database;DATABASE_ROLE----------------PRIMARY
分享到:
本文"Oracle] Data Guard 之 浅析Switchover与Failover"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4