随着Oracle 9i/10g/11g的更多高可用特性的出现,Oracle也推出了它自己的高可用概念,那就是Oracle 最高可用性体系结构(Oracle Maximum Availability Architecture,MAA)。它是Oracle提供的全套的高可用解决方案,由Oracle已经在使用的高可用特性组成,目标是消除设计最优高可用性体系结构时的复杂性。 高可用(HA)有两种不同的含义,在广义环境中,是指整个系统的高可用(High Availability)性,在狭义方面,一般指主机的冗余接管,如主机HA,如果不特殊说明,本书中的HA都指广义的高可用性。在高可用的解释方面,可以分为如下一些方面:(1)系统失败或崩溃(System faults and crashes)(2)应用层或者中间层错误(Application and middleware failures)(3)网络失败(Network failures)(4)介质失败,一般指存放数据的媒体介质故障(Media failures)(5)人为失误(Human Error)(6)分级与容灾(Disasters and extended outages)(7)计划宕机与维护(Planned downtime, maintenance and management tasks)可见,高可用不仅仅包含了系统本身故障、应用层的错误、网络错误、人为错误等,还应当包括数据冗余、容灾及计划的维护时间,也就是说,一个真正的高可用环境,不仅仅能避免系统本身的问题,还应当能防止天灾人祸,并且有一个简单可靠的系统维护方法如微码升级、软件升级等计划停机维护。高可用的计算方法一般以年在线率来计算,如规定整个系统一年之中的可用环境要达到99.95%,那么24*365*(1-99.95%)=4.38小时(包括计划内维护时间)。另外,子系统的可用性一定会高于整个系统的可用性,如承接前面规定整个系统的可用率为99.95%,那么对于数据库子系统,可用性很可能就是要求达到99.99%。高可用性的在线率(可用级别)与停机时间可以参考如图1所示的对照表:图1 高可用级别对照表基于以上的规定,假定一个系统一年之中故障时间是1小时(差不多99.99%),但是计划内维护时间却花了20小时,那么这个系统也不能算是一个满足设计要求的高可用环境。现阶段使用环境中,基本没有真正的100%的在线环境,或者说,如果达到100%的在线能力,要付出非常大的代价,所以一般能达到99.9%以上的可用性的环境,一般都可以认为是比较高的可用环境了。 Oracle 的MAA从非计划宕机到计划内的停机维护说明了高可用的保证,在MAA体系结构中,可以分为如下4个部分。■ 非计划宕机系统失败:RAC数据异常:Data guard、ASM、Flashback、Rman、Streams■ 计划内停机系统改变:在线修改配置,在线滚动补丁升级数据变化:在线重定义至于计划内停机的一些可用性,可以从如下几个方面考虑:在线修改配置的特性,如ASM动态增加移动硬盘,Oracle内存或SGA的在线调整,RAC动态增加与删除节点。在线滚动补丁升级的特性,如RAC环境的滚动升级,Data guard环境的滚动升级。在线重定义特性,如在线重定义表,在线rebuild索引等等。不过,据Oracle培训机构CUUG透露,Oracle推出MAA计划,也表示了它对高可用性方面的重视,特别是从Oracle 9i/10g/11g看来,很多特性都是为高可用性准备的。可以这么说,Oracle 8i/9i开始出现很多高可用的特性,而在Oracle 10g/11g中,它们更完善、更可靠了。图2是一个典型的Oracle MAA体系结构。