Welcome 微信登录

首页 / 数据库 / MySQL / Oracle 11g Active Dataguard Switchover实验

Oracle Data Guard是Oracle HA架构体系的重要组成部分,也是Oracle MAA(Maximum Availability Architecture)的关键技术方案。借助Data Guard的Switchover和Failover特性,我们可以实现运维系统高可用性需求,最大限度的降低计划内和非计划内宕机时间。
 
Data Guard建立在数据库软硬件、数据冗余策略,通过搭建和主库Primary Database数据相同、软硬件独立的物理(Physical)和逻辑(Logical)备库Standby,并且借助Redo Log传递应用确保数据同步。当单独数据库(通常为Primary)发生故障,不能继续提供服务时,额外的Standby可以作为备用数据库来支持应用,减少系统整体数据丢失和停机影响。
 
Switchover和Failover是Dataguard里面一组有区别又有联系的概念,其本质都是Primary停止对外服务,由Standby支持对外数据服务,变为新的Primary。但是两者从概念到操作上都有很大差异。
 
Switchover的核心是“Planned”,也就是计划内的停机切换动作。我们的运维系统在运行过程中,经常有如设备检修、软件升级补丁等维护操作。这个时候,如果是一些SLA要求很高的系统,停机时间窗口就是一个问题。特别是一些7*24的系统,业务部门是不会允许过长的停机时间。Switchover就是对Dataguard或者RAC环境下,临时性的Primary点停机进行升级工作,由Standby变为Primary支持服务,最后再切换回来的过程。这个过程在Oracle中成为角色转换role transition。由于是有准备、有计划的操作,Switchover是平顺的,不会引起数据的丢失。
 
Failover的核心则是“unplanned”,是和Switchover相对应,更贴近Data Guard的原始设计初衷。如果Primary出现故障,不能支持服务的时候。Standby可以在很短的时间内,自动或者手动的切换到Primary角色。之后由这个新的Primary支持服务。如果Primary可以修复好,则可能需要重新搭建DG或者Apply为新的Standby,之后切换回Primary角色。Failover由于涉及到Primary站点的故障类型程度,所以是可能出现数据丢失的。
 
进行Switchover和Failover的工具方法很多,最常用的有三个:SQL Command、Data Guard Broker和DB Grid Control。本文介绍如何使用SQL Command进行Switchover操作。
 
 相关参考:Oracle Data Guard 重要配置参数 http://www.linuxidc.com/Linux/2013-08/88784.htm基于同一主机配置 Oracle 11g Data Guard http://www.linuxidc.com/Linux/2013-08/88848.htm探索Oracle之11g DataGuard http://www.linuxidc.com/Linux/2013-08/88692.htmOracle Data Guard (RAC+DG) 归档删除策略及脚本 http://www.linuxidc.com/Linux/2013-07/87782.htmOracle Data Guard 的角色转换 http://www.linuxidc.com/Linux/2013-06/86190.htmOracle Data Guard的日志FAL gap问题 http://www.linuxidc.com/Linux/2013-04/82561.htmOracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法 http://www.linuxidc.com/Linux/2013-03/82009.htm1、环境介绍 我们选择环境已经搭建好Dataguard,版本为11.2.0.4(Primary和Standby相同)。操作系统版本为Red Hat Linux 6.5。  SQL> select * from v$version; BANNER--------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - ProductionPL/SQL Release 11.2.0.4.0 - ProductionCORE 11.2.0.4.0 Production Primary数据库unique名称为ora11g。 SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
 
 NAME      LOG_MODE    OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME
 
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
 
ORA11G    ARCHIVELOG  READ WRITE          PRIMARY          SESSIONS ACTIVE      ora11g
 
 Standby数据库名称为ora11gsy,此时开启实时数据同步应用。 SQL> alter database recover managed standby database using current logfile disconnect from session;
 
 Database altered SQL> select name, LOG_MODE, OPEN_MODE, database_role, SWITCHOVER_STATUS, db_unique_name from v$database;
 
 NAME      LOG_MODE    OPEN_MODE            DATABASE_ROLE    SWITCHOVER_STATUS    DB_UNIQUE_NAME
 
--------- ------------ -------------------- ---------------- -------------------- ------------------------------
 
ORA11G    ARCHIVELOG  READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED          ora11gsy
 
 注意:此时standby的open mode为Read only with apply,这个是11g Active Data Guard的特性。传统DG在进行Apply的过程中,是处在mount状态的,不支持实时数据只读操作。11g支持在apply中打开数据库到只读状态。
 
 2、Switchover过程中Primary主库操作 进行Switchover的过程分为三个步骤,一个是在Primary上停止工作,切换到Standby状态,第二个是在选择一个Standby实例,切换角色到Primary状态,最后是将其他Standby的Apply过程启动。
 
注意在上面我们查看Primary数据库ora11g的v$database视图,其中switchover_status取值是我们需要关注的,如果取值为session active或者to standby,我们是可以进行切换的。如果其他值,说明配置的log传输机制存在问题,需要解决调整。
 
 --在ora11g上SQL> alter database commit to switchover to physical standby with session shutdown;
 
Database altered 注意:如果swtichover_status状态为session active,就需要在命令中加入with session shutdown子句。执行后,我们发现Primary ora11g已经关闭。
 
  SQL> select status from v$instance;select status from v$instance*ERROR at line 1:ORA-03135: connection lost contactProcess ID: 2357Session ID: 1 Serial number: 5  SQL> exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - Production
 
With the Partitioning, OLAP, Data Mining and Real Application Testing options --实例进程消失[oracle@SimpleLinux trace]$ ps -ef | grep pmonoracle    2107    1  0 15:35 ?        00:00:01 ora_pmon_ora11gsyoracle    2473  1848  1 16:03 pts/1    00:00:00 grep pmon 此时,alert log中也记录了实例停止的情况。 ALTER DATABASE ADD STANDBY LOGFILE "srl1.f" SIZE 52428800;ALTER DATABASE ADD STANDBY LOGFILE "srl2.f" SIZE 52428800;ALTER DATABASE ADD STANDBY LOGFILE "srl3.f" SIZE 52428800;ALTER DATABASE ADD STANDBY LOGFILE "srl4.f" SIZE 52428800;Archivelog for thread 1 sequence 19 required for standby recoverySwitchover: Primary controlfile converted to standby controlfile succesfully.Switchover: Complete - Database shutdown requiredUSER (ospid: 2365): terminating the instanceInstance terminated by USER, pid = 2365Completed: alter database commit to switchover to physical standby with session shutdown
 
 Shutting down instance (abort)License high water mark = 6Sun Apr 20 16:02:11 2014Instance shutdown complete 在这个过程中,为了确保数据无损失,Primary一定将所有的日志信息传递到Standby上。此时,可以启动Primary,到mount standby状态。 [oracle@SimpleLinux trace]$ sqlplus /nologSQL*Plus: Release 11.2.0.4.0 Production on Sun Apr 20 16:06:47 2014 Copyright (c) 1982, 2013, Oracle.  All rights reserved. SQL> conn / as sysdbaConnected to an idle instance.SQL> startup nomountORACLE instance started. Total System Global Area  372449280 bytesFixed Size                  1364732 bytesVariable Size            331353348 bytesDatabase Buffers          33554432 bytesRedo Buffers                6176768 bytes SQL> alter database mount standby database;Database altered.注意:如果需要进行设备维修或者停机操作,是可以不启动Primary的。更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-05/101103p2.htm
  • 1
  • 2
  • 下一页
详说Oracle Vault——Vault卸载Oracle 11g Data Guard搭建过程中问题解决两例相关资讯      DataGuard  Active Dataguard 
  • DataGuard如何传送Redo到Standby  (05月04日)
  • RAC环境下DataGuard到单机  (04月08日)
  • Oracle 11G R2 DataGuard日常维护  (02月20日)
  • MRP0- Background Media Recovery   (04月16日)
  • DataGuard环境中的密码维护  (03月17日)
  • Oracle 11G R2利用RMAN搭建  (02月20日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数