热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle11gActiveDataguardSwitchover实验

OracleDataGuard是OracleHA架构体系的重要组成部分,也是OracleMAA(MaximumAvailabilityArchitecture)的关键技术方案。借

Oracle Data Guard是Oracle HA架构体系的重要组成部分,也是Oracle MAA(Maximum Availability Architecture)的关键技术方案。借

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 重要配置参数

基于同一主机配置 Oracle 11g Data Guard

探索Oracle之11g DataGuard

Oracle Data Guard (RAC+DG) 归档删除策略及脚本

Oracle Data Guard 的角色转换

Oracle Data Guard的日志FAL gap问题

Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法

1、环境介绍

我们选择环境已经搭建好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 - Production

PL/SQL Release 11.2.0.4.0 - Production

CORE 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 contact

Process ID: 2357

Session ID: 1 Serial number: 5

SQL> exit

Disconnected 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 pmon

oracle 2107 1 0 15:35 ? 00:00:01 ora_pmon_ora11gsy

oracle 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 recovery

Switchover: Primary controlfile converted to standby controlfile succesfully.

Switchover: Complete - Database shutdown required

USER (ospid: 2365): terminating the instance

Instance terminated by USER, pid = 2365

Completed: alter database commit to switchover to physical standby with session shutdown

Shutting down instance (abort)

License high water mark = 6

Sun Apr 20 16:02:11 2014

Instance shutdown complete

在这个过程中,为了确保数据无损失,Primary一定将所有的日志信息传递到Standby上。此时,可以启动Primary,到mount standby状态。

[oracle@SimpleLinux trace]$ sqlplus /nolog

SQL*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 sysdba

Connected to an idle instance.

SQL> startup nomount

ORACLE instance started.

Total System Global Area 372449280 bytes

Fixed Size 1364732 bytes

Variable Size 331353348 bytes

Database Buffers 33554432 bytes

Redo Buffers 6176768 bytes

SQL> alter database mount standby database;

Database altered.

注意:如果需要进行设备维修或者停机操作,是可以不启动Primary的。

更多详情见请继续阅读下一页的精彩内容:


推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
author-avatar
灵动的音乐xl
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有