Oracle CloudWorld 2022 - 使用Oracle MAA实现应用程序的连续可用性
每每谈到Oracle MAA,大家条件反射般就会想到Oracle的RAC和ADG等核心选件,当然,这些技术有口皆碑,也的确是MAA的构建基础,但本文我们不再过多谈这些耳熟能详的技术,而是来跟大家探讨下在此基础之上,我们如何将基础MAA优化到业务连续性MAA这个程度,最终实现应用程序的连续可用性。
在本次OCW大会上,下面几位大咖就在演讲中探讨了这个话题:

现在就让我们跟着专家的思路,一起来看下该如何使用Oracle MAA实现应用程序的连续可用性:
1.为什么建议选择透明的应用程序连续性
我们先看下Oracle最大可用性体系架构的概览:

架构里面红框标注的AC部分,也随着版本演进有了TAC,但其实两种方式并不是替代关系,而是有各自的适用场景:

针对文章开头提到的基础MAA和业务连续性MAA,基础MAA可以提供数据库级别的最大可用性,而业务连续性MAA则是在基础MAA之上,面向业务和最终用户所演进出的增强版MAA:

在Oracle自治数据库中,TAC就是默认配置的,提高了自治数据库的业务连续性:

2.确保业务连续性的高可用性要求
配置业务连续性时,需要指定数据库服务,这里需要特别注意我们要使用用户定义的数据库服务,而不要使用默认的服务。

笔者之前就遇到过有客户因为使用了默认服务而导致部分场景异常的问题,最终修正为用户自定义的服务之后,一切回归正常。
确认使用正确的服务之后,继续来看下应用连接串的连接最佳实践参考:

然后我们需要了解下FAN和排空的基础概念:

下面这张图非常关键,非常清晰的说明了AC/TAC的整个处理过程逻辑:

在第一个箭头指向的时间点,节点1首先进行排空操作,也就是继续处理节点1上未完成的事物,不再接受新的连接,此时新的连接都会连接节点2,当到达设置排空的超时时间窗口后,节点1上还未完成的事物将会被强制中断,然后到节点2上重放这些未完成的事物,整个过程,对应用程序或用户而言,是感知不到错误信息的。
3.如何有效使用TAC应对计划内维护和计划外停机
现实客户场景中,针对停机有两种情况:一是计划内的维护,会提前申请停机窗口;二是计划外的停机,因为各类软硬件故障导致突发的停机。有效使用TAC可以应对这两种情况:

此外,需要注意存在一些例外情况,无法启用回放功能:

4.当透明应用程序连续性不适合时该怎么办
前面提到,AC/TAC两种方式并不是替代关系,而是有各自的适用场景,当TAC不适合时,可以考虑AC是否能够满足你的需求,下面是两种方式的简单对比:

如果上面的对比表格还不够清晰,那么下面的指引会让你更容易的选择究竟是AC还是TAC更适合你的场景。

此外,针对使用套装应用软件的用户,也不用太过于着急,因为很多主流的套装软件都开始支持或部分支持AC/TAC,且不支持的部分也基本都在积极的开发过程中:

5.客户案例分享
最后,我们跟大家分享一例来自真实客户的实践,该客户使用Oracle 19c 透明应用连续性功能,通过简化应用程序工程师的弹性设计,提高了整个公司的应用程序弹性:

客户在整个实践过程中还总结了一些经验供大家参考:

客户的直观感受,在遵循了所有指导并满足要求后,发现TAC真是一项惊人的功能,给用户也带来了惊奇的感觉!如果屏幕前的你也想进一步为你的企业提升业务连续性,却还没有体验过AC/TAC功能的话,就赶快在自己的环境实际去测试感受下吧。
说明:本文是笔者在甲骨文云技术公众号发布的文章。
图片来源是依据OCW演讲者的英文PPT翻成中文的,另外图片中所有的字体,按要求,都是 先刷Noto sans SC regular、再刷Oracle Sans的方式统一调整优化过。
Oracle CloudWorld 2022 - 使用Oracle MAA实现应用程序的连续可用性的更多相关文章
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- 【转】Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
阅读目录 目录 Oracle集群概念和原理 RAC概述 RAC 集成集群件管理 RAC 的体系结构 RAC 的结构组成和机制 RAC 后台进程 RAC 共享存储 RAC 数据库和单实例数据库的区别 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)
RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)
RAC 特殊问题和实战经验(五) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档
ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报 分类: Oracle RA ...
- Part 1: Running Oracle E-Business Suite on Oracle Cloud
You can now run Oracle E-Business Suite on Oracle Cloud. EBS customers can take advantage of rapid ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.3.Oracle 集群节点间连通失败
1.检查节点连通性的错误 [grid@linuxrac1 grid]$ ./runcluvfy.sh stage -post hwos -n linuxrac1,linuxrac2 -verbose ...
- .net远程连接oracle数据库不用安装oracle客户端
asp.net远程连接oracle数据库不用安装oracle客户端的方法下面是asp.net连接远程Oracle数据库服务器步骤: 1.asp.net连接oracle服务器需要添加Sytem.Data ...
- .net远程连接oracle数据库不用安装oracle客户端的方法
.net远程连接oracle数据库不用安装oracle客户端的方法步骤: 1.添加Sytem.Data.OracleClient命名空间. 2.连接时需要ConnectionString字符串,出现在 ...
- oracle全托管驱动Oracle.ManagedDataAccess
oracle官方的托管驱动,发布只需一个6M多的dll,支持EF 支持分布式事务,使用步骤如下: 1,Download ODP.NET, Managed Driver .zip file to a d ...
随机推荐
- 用python SMTP发送简单邮件
python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议 它是一组由源地址到目的地址传送邮件得规则,由它来控制信件的中转方式. Pyth ...
- windows服务启动时提示找不到指定路径的问题
我是自己写了一个windows服务,并且在之前一直运行良好,上周四晚上之后,竟然莫名其妙的停止了,我登上远程服务器,才发现,该服务已经停止,当我手动打开该服务时,提示我如下错误,找不到指定路径:. 一 ...
- Wise 的平台工程 KPI 探索之旅
作者|Lambros Charissis 翻译|Seal软件 链接|https://medium.com/wise-engineering/platform-engineering-kpis-6a32 ...
- @Deprecated注解的使用
被注解@Deprecated标记的程序元素是不鼓励使用的程序元素,通常是因为它很危险,或者是因为存在更好的替代方案. 除了对象自身引用自己用@Deprecated标记的方法外,其他情况使用@Depre ...
- [ARM 汇编]高级部分—性能优化与调试—3.4.3 使用模拟器进行调试与测试
在ARM汇编程序开发过程中,使用模拟器(emulator)进行调试和测试是一种非常有效的方法.模拟器可以在不同的处理器上测试代码,帮助我们发现潜在的问题,并提供丰富的调试功能.本节将介绍如何使用QEM ...
- Java 使用maven模板创建web项目慢的解决方法
创建的时候在这里加上这个,使用本地仓库创建. 快捷粘贴↓↓↓ archetypeCatalog local
- Kubernetes(k8s)服务账号Service Accounts
目录 一.系统环境 二.前言 三.服务账号Service Accounts简介 四.用户账号与服务账号区别 五.服务账号(Service Accounts) 5.1 创建服务账号(Service Ac ...
- Python中 sys.argv[]用法详解
sys.argv[0]表示代码本身文件路径. sys.argv[]是一个从程序外部获取参数的桥梁,从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一 ...
- 阿里云容蓓:DCDN 助力云原生时代的应用构建及最佳实践
在数字化转型速度不断提升的今天,大带宽.低时延.高并发的场景不断涌现,内容分发网络(Content Delivery Network,CDN)应用需求还在不断攀升,打造更高质量的CDN服务将成为新时代 ...
- matlab gui .mat数据读取
在matlab的gui中用load函数读取.mat等类型数据 %定义全局变量 global img_correct %读取数据名称及位置 [filename,pathname]=uigetfile({ ...