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

时间: 2024-09-19 08:54:13

Oracle] Data Guard 之 浅析Switchover与Failover的相关文章

[Oracle] Data Guard 之 浅析Switchover与Failover_oracle

Data Guard主从库之间的角色切换分为以下两种:1)SwitchoverSwithchover通常都是人为的有计划的进行角色互换,比如升级等.它通常都是无损的,即不会有数据丢失.其执行主要分为两个阶段:1.Primary转为Standby2.Standby(之一)转为Primary2)FailoverFailover是指由于Primary故障无法短时间恢复,Standby不得不充当Primay的角色,如果处于最高性能模式,这种切换很有可能导致数据丢失. 下面分别演示物理Standby的Sw

DG8——有关Oracle Data Guard Failover 的说明

原文转自:http://blog.csdn.net/tianlesoftware/article/details/6256542 在之前的两篇文章里都对oracle Data Guard的Failover 进行了说明,但是没有个系统的说明,所以在这篇把DG的Failover 做个系统的说明.          物理Data Guard 下Failover 时Redo 的处理问题        http://blog.csdn.net/tianlesoftware/archive/2010/11/

Oracle Data Guard 理论知识

Oracle Data Guard 理论知识   来源:Linux社区 作者:tianlesoftware       RAC,Data Gurad,Stream是Oracle高可用性体系中的三种工具,每个工具即可以独立应用,也可以相互配合.他们各自的侧重点不同,适用场景也不同.   RAC它的强项在于解决单点故障和负载均衡,因此RAC方案常用于7*24的核心系统,但RAC方案中的数据只有一份,尽管可以通过RAID等机制可以避免存储故障,但是数据本身是没有冗余的,容易形成单点故障.   Data

Data Guard Physical Standby Switchover

Data Guard Physical Standby Switchover 一.确保主库相关参数文件,设置正确 如下为主数据库相关参数 DB_NAME=pridb DB_UNIQUE_NAME=pridb LOG_ARCHIVE_CONFIG='DG_CONFIG=(pridb,stdb)' CONTROL_FILES='/arch1/chicago/control1.ctl', '/arch2/chicago/control2.ct' LOG_ARCHIVE_DEST_1= 'LOCATIO

数据库主备切换-Oracle Data Guard 切换数据库无成功反馈

问题描述 Oracle Data Guard 切换数据库无成功反馈 Oracle Data Guard 切换数据库 切换主库为备库输入 Alter database commit to switchover to physical standby with session shutdown; 后不出现Database altered提示 没有任何反馈信息 这是什么原因? 解决方案 http://wenku.baidu.com/link?url=SgdMwsixAP6-wPLqV99ulf6qbi

Oracle Data Guard压缩归档效果对比(r12笔记第26天)

   Oracle Data Guard对归档的传输提供了很多辅助的选项,这个可 以通过log_archive_dest_x看到.    一般说这类的优化,如果有大批量的归档需要传输,对于网络带宽还真是一个不小的冲击,有一种改进方法,就是打包压缩归档,然后传输到备库,然后解压应用,整个过程有几个地方需要注意,整个过程肯定会有延迟,而且还不小,在压缩和解压的过程对系统资源会有一个持续的耗用.而好处也相对明显很多,就是对于带宽的占用会有一定的压缩.所以一句话总结,如果压缩备份,对系统会有额外的资源消

Oracle Data Guard学习(2) 日志传输

Oracle Data Guard从宏观上来说,主要提供以下两个服务: 1)日志传输:主库把生成的Redo日志传输至备库: 2)日志应用:备库应用从主库传输过来的Redo日志. 本文先介绍其中的日志传输服务,日志应用服务在下节<Data Guard 系列(3) - 日志应用>介绍 . 1. 日志传输方式 有两种日志传输方式(ARC和LGWR),第一种是采用ARC进程传输日志,其示意图如下: 注:上图来自<大话Oracle RAC> 其大致过程如下: 1)主库:日志先写入在线重做日志

Oracle Data Guard CPU/PSU补丁安装教程

非Data Guard的补丁安装教程可参考<[Oracle] CPU/PSU补丁安装教程>,Data Guard需要Primary 和Standby同时打上补丁,所以步骤更复杂一些,其主要步骤如下: 在Primary停止日志传输服务: 关闭Standby数据库,在Standby的软件上打补丁(注意:不需要 为Standby数据库打补丁),启动standby为mount状态,不启用managed recovery: 关闭Primary, 在Primary的软件和数据库本身都打上补丁: 启动Pri

Oracle]Data Guard 之 Redo传输详解

Data Guard主要提供两个服务:1)Redo传输服务:即把Primay端的Redo日志传输到一个或多个Standby目的地. 2)Redo应用服务:即在Standby端应用从Primay端传输过来的Redo日志. 本文先讲讲其中的Redo传输服务. 1.使用ARCn传输Redo日志默认情况下采用ARCn传输redo日志,不过只有在最高性能模式下才可以使用ARCn(具体可参考<Oracle] Data Guard 之 三种保护模式介绍 >),采用ARCH传输Redo日志的示意图如下:其大致