0

0

Oracle 11g Active Dataguard Switchover实验

php中文网

php中文网

发布时间:2016-06-07 16:48:35

|

1318人浏览过

|

来源于php中文网

原创

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、环境介绍

 

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

下载

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

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

linux

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

286

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

126

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

42

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

19

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

23

2026.02.13

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.02.12

雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法
雨课堂网页版登录入口与使用指南_官方在线教学平台访问方法

本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。

14

2026.02.12

豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法
豆包AI网页版入口与智能创作指南_官方在线写作与图片生成使用方法

本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。

421

2026.02.12

PostgreSQL性能优化与索引调优实战
PostgreSQL性能优化与索引调优实战

本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。

51

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ASP教程
ASP教程

共36课时 | 26.1万人学习

李炎恢ASP基础视频教程
李炎恢ASP基础视频教程

共210课时 | 44.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号