You are on page 1of 25

Oracle 白皮书

2013 年 6 月

Oracle Real Application Clusters (RAC)


Oracle Database 12c Real Application Clusters (RAC)

概要 ..............................................................................................................1
Oracle Real Application Clusters — 概述......................................................2
业务连续性和高可用性 ..................................................................................5
可伸缩性和敏捷性 .........................................................................................6
经济高效的负载管理 .....................................................................................7
标准化的部署和系统管理 ............................................................................ 11
Oracle Real Application Clusters 的新特性 .................................................12
Oracle RAC 支持 Oracle Multitenant.....................................................12
应用程序连续性和事务防护 ...................................................................13
Oracle Flex ASM ...................................................................................15
假设命令评估 ........................................................................................17
策略管理的数据库和集群管理 ...............................................................18
总结 ............................................................................................................20
Oracle Database 12c Real Application Clusters (RAC)

概要

业务连续性、高可用性、可伸缩性、灵活性和敏捷性与轻松的管理相结合,是成功 IT 基础架构
和云部署的支柱。十多年来,已有数以千计的 Oracle 客户选择包含 Real Application Clusters
(RAC) 的 Oracle 数据库作为其数据库系统解决方案。Oracle Real Application Cluster 12c 延
续了过去的成功,在各个领域中提供了大量对您的业务成功至关重要的增强功能。

Oracle RAC 最初旨在提供改进的数据库服务,经过多年的发展,如今它已立足于全面的高可


用性 (HA) 体系基础上,该 HA 体系可用作数据库云系统的基础,也可以作为共享基础架构确
保为您的数据中心中的所有应用程序提供高度的可用性、可伸缩性、灵活性和敏捷性。

本文介绍 Oracle RAC 的优势,并讨论最新版本 Oracle RAC 体系每一层中可为使用 Oracle


RAC 数据库提供更高应用程序可用性的主要增强功能。本文中讨论的 Oracle RAC 主要优势包
括但不限于以下几项:

 业务连续性和高可用性

 可伸缩性和敏捷性

 经济高效的负载管理

 标准化的部署和系统管理

1
Oracle Database 12c Real Application Clusters (RAC)

Oracle Real Application Clusters — 概述

包含 Oracle Real Application Clusters (RAC) 选件的 Oracle 数据库允许依托一组共享的数据文件


(也称为数据库)在集群中的不同服务器上运行多个数据库实例。该数据库跨越多个硬件系
统,但是在应用程序看来,它是一个统一的数据库。这样就能够利用商用硬件降低总拥有
成本并为支持各种应用程序负载提供一个可伸缩的计算环境。Oracle RAC 是 Oracle 首要的
共享磁盘数据库集群技术。

图 1:Oracle RAC 12c 和 Oracle RAC 体系概览

Oracle RAC 体系

Oracle RAC 数据库要求首先在系统上安装 Oracle Clusterware,然后再安装支持 Oracle RAC 的


数据库主目录。Oracle Clusterware (OCW) 是 Oracle Grid Infrastructure (GI) 产品套件的一个不
可 或 缺 的 组 成 部 分 , 该 产 品 套 件 还 包 括 自 动 存 储 管 理 (ASM) 和 Oracle 云 文 件 系 统
(CloudFS)。

包含 Oracle ASM/CloudFS 和 Oracle Clusterware 的 Oracle Grid Infrastructure 以及包含 Oracle


Real Application Clusters (RAC) 选件的 Oracle 数据库共同构成了 Oracle RAC 体系。

Oracle Grid Infrastructure 是 Oracle RAC 数据库系统的基础,


使用 Oracle Clusterware 实现自动资源布置、调整和管理,
使用 Oracle 自动存储管理实现高效、可靠的存储管理。

2
Oracle Database 12c Real Application Clusters (RAC)

Oracle Clusterware

Oracle Clusterware 是一种将服务器场转换为集群的技术。集群是一组独立但相互连接的服务


器,它们能够像一个系统似的协同工作。Oracle Clusterware 是该系统中支持协同工作的智能
所在。

Oracle Clusterware 作为运行 Oracle Real Application Clusters (RAC) 所需的底层集群软件,随


Oracle Database 10g 第 1 版而引入。作为 Oracle RAC 体系的一部分,Oracle Clusterware 还用
于 Oracle ASM 集群版,并且紧密集成到 Oracle RAC 体系中。

Oracle Clusterware 作为一个全面的免费集群解决方案,也可在 Oracle RAC 以外的环境中使


用。在这些环境中,通常使用 Oracle Clusterware 来自动执行各种应用程序的资源布置、调整
和管理。在两种环境中,Oracle Clusterware 都负责维护节点的成员关系并确保其相互隔离。

Oracle Clusterware 12c 中的新特性

根据集群部署和管理需求,可通过以下三种方式之一来安装 Oracle Clusterware 12c:1) 标


准集群(典型的 Oracle RAC 集群,其配置与 Oracle Clusterware 12c 之前的版本类似)2)
Oracle Flex Cluster(Oracle Clusterware 12c 提供的一种新型集群拓扑,将传统的、紧密耦合的
以及新型松散耦合的服务器组合到一个集群中)3) 应用程序集群(为非数据库应用程序定
制的一种优化部署)1。

Oracle Flex Cluster 是一个创新型多层高可用性全局资源管理解决方案,


用于业务关键型端到端云计算。

Oracle 自动存储管理 (ASM)

Oracle RAC 采用共享磁盘架构,因此卷管理和用于存储数据库数据的文件系统必须支持集


群识别。Oracle 自动存储管理 (ASM) 是为 Oracle 数据库推荐的(集群)卷管理器。

Oracle ASM 管理所有数据:Oracle 数据库文件、Oracle Clusterware 文件和非结构化数据,


如二进制文件、外部文件和文本文件(通过 Oracle CloudFS 进行管理)。凭借其较低的成
本、便捷的管理以及较高的性能特性,Oracle ASM 成为 管理 Oracle 数据库存储的理想存储
技术。

1 有关 Oracle Clusterware 的详细信息,请参阅 www.oracle.com/goto/clusterware

3
Oracle Database 12c Real Application Clusters (RAC)

为实现性能和高可用性目标,Oracle ASM 遵循“全面条块化和镜像”原则。通过智能化的镜


像功能,管理员可以定义双向或三向镜像以保护重要数据。当读操作识别出磁盘上损坏的
块时,Oracle ASM 自动将有效的块从镜像副本重新定位到磁盘的未损坏部分。 2

Oracle ASM 12c 中的新特性

Oracle ASM 12c 引进了 Oracle Flex ASM,这是一种新的 Oracle ASM 部署模型,可提高数据库
实例的可用性并降低 Oracle ASM 带来的资源占用。Oracle Flex ASM 简化了基于集群的数据
库整合,当特定服务器上的 Oracle Flex ASM 实例出现故障时,能够确保运行在该服务器上
的 Oracle Database 12c 实例继续运行。

Oracle 云文件系统 (CloudFS)

Oracle 云文件系统简化并自动化存储管理功能,提高存储利用率、正常运行时间和敏捷性,
从而可为所有通用文件和数据库文件提供可预测的性能和可用性。CloudFS 包含集群卷管理
器和集群文件系统:
 Oracle ASM 动态卷管理器 (ADVM) 是针对 Oracle ACFS 和第三方文件系统的通用集
群卷管理器。
 Oracle ASM 集群文件系统 (ACFS) 是一个通用的与 POSIX 和 Windows 兼容的集群文
件系统,其中包含高级数据服务,如快照、复制、加密和安全性等。

Oracle Cloud File System 12c 中的新特性

在 Oracle Grid Infrastructure 12c 中,Oracle 集群文件系统(也称为 Oracle ACFS)更具灵活


性。Oracle ACFS 除了可用于存储非结构化数据(配置文件、应用程序特定数据文件)外,
现在还可用于存储 Oracle (RAC) 数据库文件以及共享的数据库主目录和备份集。

2 有关 Oracle ASM 和 Oracle 云文件系统的详细信息,请参阅 www.oracle.com/goto/asm

4
Oracle Database 12c Real Application Clusters (RAC)

业务连续性和高可用性

Oracle Real Application Clusters (RAC) 是数据中心高可用性 (HA) 的基础。Oracle RAC 体系以
Oracle Grid Infrastructure 作为自己的管理框架,该框架提供计划、意外以及运行时和按需容
量管理方法,因此可确保数据中心针对各种应用程序的操作不会中断。

Oracle RAC 是 Oracle 最高可用性架构不可或缺的组成部分,该架构提供的最佳实践可为您


的数据中心提供最高可用性。由此而论,Oracle RAC 的一个主要优势是,数据库使用的多
个物理服务器提供固有的容错功能。集群中的各个服务器独立运行,因此其中的一个或多
个服务器故障不会影响其他服务器。此架构还允许一组服务器透明地上线或下线,而系统
的其余部分仍继续提供不中断的数据库服务。

Oracle RAC 主要有以下特点,这些特点对于高可用性数据管理来说极其重要:


 可靠性 — Oracle 数据库以其可靠性而著称。Oracle RAC 消除了数据库服务器单点故
障问题,从而使可靠性更上一层楼。如果一个实例发生故障,集群中的其余实例仍
将保持正常运行状态。Oracle Clusterware 监视所有 Oracle 进程,并能立即重启任何
发生故障的组件。
 错误检测 — Oracle Clusterware 自动监视 Oracle RAC 数据库和其他 Oracle 进程
(Oracle ASM、实例、监听器等),并快速诊断环境中的问题。它还经常能在用户
察觉到故障之前自动完成故障恢复。
 恢复能力 — Oracle 数 据 库 包 含 的许多特性有助于数据库轻松地从各类故障中恢
复。如果 Oracle RAC 数据库中的一个实例出现故障,集群中的另外一个实例将察觉
到这一故障,随后自动进行故障恢复。利用快速应用程序通知 (FAN)、快速连接故
障切换 (FCF),尤其是利用 Oracle RAC 12c 应用程序连续性特性,可轻松地掩藏任何
组件故障,使用户无法察觉。
 连续运行 — Oracle RAC 可在计划和意外中断期间提供连续的服务。如果一个服务
器(或实例)出现故障,数据库将保持运行,应用程序仍能继续访问数据,从而让
业务关键型负载得以完成运行,而且多数情况下服务交付无延迟。

o 大多数数据库维护操作无需停机即可完成,而且对用户透明。很多维护任务
都可以滚动方式执行,因此可最大限度地减少应用程序停机,或消除停机。

Oracle Database 12c 中的新特性

通过确保业务关键型应用程序在系统出现故障时仍能继续运行来促进业务的成功,该功能
是 Oracle Database 12c 中的新特性。

5
Oracle Database 12c Real Application Clusters (RAC)

应用程序连续性 (AC) 是一项新技术,通过在其他数据库实例上重放受故障影响的“运行中”


事务来保护应用程序免受实例和会话故障的影响。

应用程序连续性使用新的 Oracle Database 12c Transaction Guard 特性,确保在出现数据库


级故障或用户“误操作”时(如在基于 Web 的订单应用程序中进行结帐时使用双击购买或浏览
器的“回退按钮”),应用程序始终能从数据库获得“已知结果”(预期结果)。若没有该特
性,这些操作可能会导致意外结果。应用程序连续性需要某种 Oracle Database 12c 客户端访
问驱动程序,而各种应用程序可以原生地使用 Transaction Guard API。

可伸缩性和敏捷性

Oracle Real Application Clusters 提供独特的扩展应用程序的技术。过去,当数据库服务器容量


不足时,人们会使用容量更大的新服务器取而代之。随着服务器容量的增加,其成本也日
益攀升。

对于使用 Oracle RAC 的数据库而言,还有其他增加容量的方法。原先运行于大型 SMP 服务


器上的应用程序可迁移到集群中的小型服务器池上。或者,您也可以选择保留对现有硬件
的投资,在服务器池中添加新的服务器(或新建一个服务器池)来增加容量,无需停机。

虽然集群中的所有服务器必须使用同一操作系统和相同版本的 Oralce 软件,但其容量不需


要一样。如今,根据自己的需要选择服务器池的 Oracle RAC 用户常常会选用略具不同特点
的服务器。

通过将增强的服务器池使用和定义特性与 Oracle Database 12c 结合在一起使用,不同容量的


服务器可以主动托管具有不同重要性的负载,从而确保在需求波动期间也能满足关键服务
级别协议 (SLA) 的要求。这样一来,不需要用户干预,Oracle RAC 架构即可自动应对快速变
化的业务需求和由此带来的负载变化。

为了动态分配应用程序负载,应用程序用户或中间层应用服务器客户端应通过动态数据库服
务连接到 Oracle 数据库。动态数据库服务将代表用户负载的服务分配给一个或多个数据库实
例,通过此方法来支持 Oracle 软件自动在一个服务器池中的多个服务器间平衡用户负载。

这为数据库管理员 (DBA) 提供了灵活性,他们可以选择是将特定应用程序负载分配给集群


中运行的所有数据库实例还是分配给部分数据库实例。而且随着应用程序需求的增长,管
理员还可以轻松地增加处理容量。

Oracle RAC 数据库中集成的 Oracle 缓存融合技术可立即自动地使用新节点的 CPU 和内存资


源,无需手动对数据进行重新分区。

6
Oracle Database 12c Real Application Clusters (RAC)

经济高效的负载管理

Oracle RAC 采用创新技术来管理集群中的负载,可在确保应用程序可配置和高可用的前提


下提供最佳的应用程序吞吐量。因此,Oracle RAC 是目前市场上唯一能提供高性能、高可
用性的数据库解决方案。

性能和可用性方面除了包括高可用性和高性能管理之外,还包括在响应时间或整体质量无
明显变化的情况下,确保数据库服务可供应用程序使用的能力。

Oracle RAC 体系中集成的各式各样的组件有助于 Oracle 数据库实现高性能和高可用性。与


市场上其他解决方案不同,这些组件和功能是体系的一部分,无需额外费用即可使用。

服务器池介绍

Oracle Grid Infrastructure 11g 第 2 版引进了服务器池方法,从逻辑上将集群分成服务器组,


以提供数据库或应用程序服务。通过服务器池的属性来控制这些数据库和应用程序的可伸
缩性和可用性。可对每个服务器池进行最小大小和最大大小配置,以便控制可伸缩性。各
服务器池中托管的资源的分配和可用性可通过配置重要性值来进行管理。

当某个集群的重新配置生效时,Oracle Clusterware 会为用户定义的池分配服务器。Oracle


Clusterware 将根据重要性分配服务器。为数据库维护的实例数量由服务器池的基数确定。

(动态数据库)服务介绍

负载管理依赖于所使用的服务,这是 Oracle 数据库的一项特性。服务通过提供一个系统镜


像来管理负载,隐藏了 Oracle RAC 数据库的复杂性。

为了管理负载或一组应用程序,可定义动态数据库服务并分配给特定应用程序或部分应用
程序操作。这允许您根据服务级别和优先级等业务需求,将应用程序负载细分为更易于管
理的部分。例如,在线用户可使用一个服务,而批处理可使用另外的服务,报告可使用再
另外的服务,但都连接到同一个数据库。

一项服务可以跨越一个 Oracle 数据库的一个或多个实例,而一个实例可以支持多项服务。


提供服务的实例数量可由 DBA 动态管理,也可通过策略管理的数据库自动管理,与应用程
序无关。如果发生故障,服务将自动在正常运行的实例中恢复运行。

服务与 Oracle 数据库的许多特性集成。例如,可以根据某项服务,自动将应用程序用户分配


至 Resource Manager 的某个用户组,以便限制用户对 CPU 等资源的使用。此外,还可以根据
服务将批处理作业分配给特定的作业类别。在使用 Oracle Streams Advanced Queuing 时,利用
服务能够实现队列的位置透明性,而将节点间并行查询限制在托管服务的实例上。

7
Oracle Database 12c Real Application Clusters (RAC)

例如为让使用某服务的负载能够更频繁地访问 CPU 资源,可通过 Oracle Database Quality of


Service Management 将该服务推荐/推广给 Oracle 数据库 Resource Manager 规划中其他的用
户组。

SCAN 介绍

单一客户端访问名称 (SCAN) 用作数据库在集群中的别名,Oracle Grid Infrastructure 11g 第 2


版中引入了该特性。其好处是,如果在集群中添加或删除节点,不需要改变客户端的连接
信息。通过单一名称来访问集群,应用程序使用与 EZConnect 兼容的客户端和一个 JDBC
精简 URL 即可访问集群中运行的任何数据库,与数据库正同时运行在集群中的哪个服务器
无关。

连接负载平衡

Oracle Services 为 Oracle Net 级的数据库连接提供连接负载平衡。客户端负载平衡将在集群


内的全部 SCAN 监听器中平衡连接请求,方法是在客户端连接字符串的地址列表上使用
SCAN。SQL*NET 将随机选择其中一个 SCAN IP 地址。如果选定的服务器不可用,则尝试
使用列表中的下一个服务器。

服务器端负载平衡通过 SCAN 监听器实现。每个 SCAN 监听器都能感知集群中提供各项服


务的所有实例。基于为服务定义的目标,监听器会选择最符合目标的实例,然后通过本地
监听器连接到该实例。

快速应用程序通知

快速应用程序通知 (FAN) 提供了 Oracle RAC 数据库与应用程序之间的集成。利用此特性,


应用程序能够在任何给定时刻识别出服务器池的当前配置,从而仅连接至可响应当前应用
程序请求的实例。

当集群内发生状态更改时,Oracle RAC 特性高可用性框架将立即发布一个 FAN 事件。集成


的客户端将接收这些事件,并立即做出响应。对于故障事件,通过清除与故障实例的连
接,您可以将发生应用程序中断的风险降至最低。运行中的事务中断后,将向应用程序返
回一条出错提示。

在发生使数据库会话失效的可恢复错误后,新的应用程序连续性特性使用 FAN 来支持不间


断、快速地重放针对数据库的请求。请求中可以包含对数据库的事务性和非事务性调用。
成功重放后,应用程序可从数据库会话中断的位置继续运行。

8
Oracle Database 12c Real Application Clusters (RAC)

对于启用实例事件,系统将创建新连接,以允许应用程序立即使用新增的资源。Oracle
JDBC、Oracle Universal Connection Pool、ODP.NET 和 OCI 客户端与 FAN 集成。通过使用
Oracle Database 11g 第 2 版 JDBC 驱动程序中提供的 Oracle RAC FAN API 或 Oracle Call
Interface 的回调功能,自己拥有连接池的应用程序可以利用 FAN。通常,Oracle 建议将
Oracle Universal Connection Pool 用作连接 Oracle 数据库的标准池。

Load Balancing Advisory

负载平衡功能将工作分发给所有可用的 Oracle RAC 数据库实例。Oracle 建议应用程序使用


包含持久连接的连接池,这些持久连接跨越提供特定服务的实例。使用持久连接时,将不
会频繁地创建连接,而且这些连接会在很长一段时间内存在。工作频繁进入系统,将借用
这些连接,并存在相对较短时间。

Load Balancing Advisory 为您提供建议,指导如何将传入的工作转给能够为该工作提供最佳服


务质量的实例。这将最大限度地减少以后重新分配工作的需要。

通过使用 Load Balancing Advisory 和运行时连接负载平衡目标,反馈机制也将构建到系统


中。路由工作以提供全局最快的服务速度,并路由对变化的系统条件做出的稳妥响应。通
过跨所有 Oracle RAC 实例分发工作来提高吞吐量,系统以稳步态势实现平衡。

Load Balancing Advisory 与主要 Oracle 客户端一起部署,如监听器、Universal Connection


Pool、Oracle WebLogic Server Active GridLink for Oracle RAC 以及 ODP.NET 连接池。通过使
用 JDBC 和 Oracle RAC FAN API 或使用 Oracle Call Interface (OCI) 的回调功能,第三方应用
程序也可以订阅 Load Balancing Advisory 事件。

Oracle Database 12c 中的新特性

通过 Oracle Grid Infrastructure 12c 对 SCAN 进行了增强,以便 1) 支持基于 IPv6 的 IP 地址,2)


支持集群中的多个子网以及 3) 限制服务注册。3

从 Oracle Grid Infrastructure 12c 开始,可对集群节点进行配置,针对公共网络中的虚拟 IP


(VIP) 使用基于 IPv4 或 IPv6 的 IP 地址,同时可为集群定义多个公共网络。数据库客户端和

3有关 SCAN 的详细信息,请参阅 www.oracle.com/technetwork/products/clustering/overview/scan-


129069.pdf

9
Oracle Database 12c Real Application Clusters (RAC)

应用程序可以连接到 IPv4 或 IPv6 VIP 地址。SCAN 监听器根据客户端要求的 IP 协议,自


动将客户端连接重定向到给定子网内合适的数据库监听器,同时可为集群中的每个子网定
义 SCAN 监听器。

可对 Oracle Grid Infrastructure 管理的监听器进行配置,限制客户端使用各种条件(如这些客


户端连接的子网)访问注册到监听器的某个数据库。在动态实例注册过程中,此同一特性
还可用于限制数据库实例注册到特定 (SCAN) 监听器,以防止数据库实例意外注册到共享环
境中的监听器。

Oracle Database Quality of Service (QoS) Management 特性随 Oracle Database 12c 一起生
效,它是标准 Oracle RAC 许可的一部分,可用于对支持服务器池的所有 Oracle 数据库进行
基于策略的管理(需要 Oracle Grid Infrastructure 和 Oracle Database 11g 第 2 版或更高版本)。

Oracle Database Quality of Service Management 是一种自动化的基于策略的特性,它监视整个


系统的负载需求、管理跨应用程序共享的资源,并调整系统配置,以保持应用程序运行在
所需的性能级别。它可从容应对系统配置和需求的更改,从而避免应用程序性能级别的额
外波动。 4

图 2:Oracle Quality of Service (QoS) Management 概览

4有关 Quality of Service (QoS) Management 的详细信息,请参阅:


http://www.oracle.com/technetwork/products/clustering/overview/qosmanageent-508184.html

10
Oracle Database 12c Real Application Clusters (RAC)

标准化的部署和系统管理

有效管理集群中的负载是 Oracle RAC 的主要管理优势,它利用 Oracle Grid Infrastructure 作


为管理框架,该框架为其提供计划、意外以及运行时和按需容量管理的方法。

Oracle RAC 使用 Oracle Grid Infrastructure 来支持两种管理类型:

1. 由管理员管理 Oracle RAC 数据库是传统上支持的管理 Oracle RAC 数据库的方式,


使用此方式时,将实例分配给集群中的服务器。该方式通常在专用数据库系统中
使用。

2. 由策略管理的 Oracle RAC 数据库通过将固定资源分配抽象化(即规定实例只在集群


中特定服务器上运行),可提供更灵活的管理。

由策略管理的数据库使用服务器池(集群的一种逻辑分区)和动态数据库服务来灵活地分
配和自动管理集群中一个或多个数据库中的负载。策略管理基于预定义的用户输入自动调
整关键负载的资源分配。如果发生计划或意外中断或者需求变化,这些策略将驱动资源分
配和容量调整,从而不再需要通过编程来对集群进行重新配置。

Oracle Database Quality of Service (QoS) Management 使用服务器池来在集群中创建服务器的逻


辑池,以便提供负载隔离功能。Oracle Database QoS Management 会根据评估和预测的需
求,推荐您将服务器从一个服务器池迁移到另一个服务器池,或亲自执行该操作,以便恢
复或维护现行的性能目标。

图 3:由策略管理的 Oracle RAC 数据库可实现更高的灵活性和更高的可用性

11
Oracle Database 12c Real Application Clusters (RAC)

Oracle Real Application Clusters 的新特性


Oracle RAC 支持 Oracle Multitenant

Oracle Multitenant 是 Oracle Database 12c 企业版的一个新选件,它通过简化整合、供应和升级


等过程来帮助客户降低 IT 成本。它基于一个全新的架构,该架构允许多租户容器数据库容
纳多个可插拔数据库 (PDB)。
其理念是,无需在应用程序层进行改动,即可将现有数据库用作可插拔数据库。在此架构
中,Oracle RAC 提供将各种业务关键型应用程序整合到一个系统上时所需的本地高可用性。

图 4:Oracle RAC 支持 PDB — 概览

在将 PDB 与 Oracle RAC 结合使用时,多租户容器数据库 (CDB) 构建在 Oracle RAC 基础之


上。每个可插拔数据库都可供 RAC CDB 的每个实例或部分实例使用。任何情况下,都可使
用动态数据库服务来调控对 PDB 的访问和管理,应用程序也可以通过动态数据库服务连接
到相应 PDB — 和它们在一个单实例 Oracle 数据库中使用 Oracle Net Services 建立连接一样。

12
Oracle Database 12c Real Application Clusters (RAC)

应用程序连续性和事务防护

应用程序连续性 (AC) 是一项新的技术,通过在集群中的其他数据库实例上重放受故障影响


的“运行中”事务来保护应用程序免受实例和会话故障的影响。

在发生使数据库会话失效的可恢复错误后,应用程序连续性能够以不间断、快速方式重放
针对数据库的请求。请求中可以包含对数据库的事务性和非事务性调用。成功重放后,应
用程序可从数据库会话中断的位置继续运行。

这会让用户、开发人员和管理员同时受益。用户不会怀疑他们的资金转账、航班预订或其
他事务是否已成功完成,而管理员也无需重新启动中间层计算机来从登录风暴中恢复。

事务防护是一个可靠的协议和工具,在发生使数据库会话失效的故障后,它返回上一个运
行中事务的结果。如果没有事务防护,发生故障后,应用程序和用户会重试操作,可能会
提交重复的事务或乱序事务,而这会导致逻辑损坏。

事务防护可防止出现不明错误,而这样的错误会导致用户受到困扰,需要致电客户支持,
而且可能导致机会流失。相对于自行开发的、只追求众所周知的结果和一次性执行的解决
方案而言,事务防护更加安全,并且性能更好,开销更低。

数据库会话的丢失会对用户产生多方面的影响。例如:
 混乱 — 用户不知道他们的应用程序请求(如资金转账、订购、支付、预订等等)
出现了什么情况。

 可用性 — 用户可能丢失未提交的数据,需要重新登录,然后重新输入或重新提交
其数据。

 中断 — 出现故障后,管理员可能需要重新启动中间层计算机来处理负载平衡和传
入的登录风暴,从而会给用户带来另一种故障体验。

工作原理 — 概述

应用程序连续性能够起作用、应用程序无需保留各自错误处理功能的基本前提是,所遇到
的故障是“可恢复的错误”。可恢复错误定义如下:
 可恢复错误 是因外部系统故障而引起的错误,与执行的应用程序会话逻辑无关。
在计划或意外的前台进程、网络组件、服务器、存储组件或数据库实例故障之后,
可能会出现可恢复错误。出现可恢复错误后,应用程序通常会收到一个错误代码,
但应用程序不知道上次提交操作的状态如何。这种情况下,将调用 AC,从而使应
用程序无需分别在自己的代码中维护错误编号就可应对各自的故障。

13
Oracle Database 12c Real Application Clusters (RAC)

鉴于上述的基本前提,所以应用程序必须应一直包含针对以下情况的错误处理功能:

1. 不可恢复的错误,如无效的输入数据。

2. 当重放遇到一个记录的限制时出现的可恢复错误。

总结 — 应用程序连续性和事务防护

如果数据库会话因可恢复错误而失效,应用程序连续性将尝试重新构建此会话,任何打开
的事务将恢复至正常状态。如果事务已成功完成,不需要重新执行,那么将向应用程序返
回一个成功状态。

如果重放成功,将安全地继续执行该请求,而不会重复该请求。

如果重放不成功,则数据库拒绝该重放并且应用程序会收到原始错误。为能成功重放,重
放返回给客户端的数据必须与之前客户端在请求中收到的数据完全相同,而且这些数据必
须是应用程序潜在用来作为制定决策依据的数据。5

图 5:应用程序连续性的 用户体验

5有关应用程序连续性的更多信息,请参阅:
http://www.oracle.com/technetwork/products/clustering/ac-overview-1967264.html

14
Oracle Database 12c Real Application Clusters (RAC)

Oracle Flex ASM


Oracle Flex ASM 是一个全新的 Oracle 自动存储管理 (ASM) 部署模型,通过它可提高数据库
实例的可用性并降低 Oracle ASM 相关资源的占用。Oracle Flex ASM 简化了基于集群的数据
库整合,当特定服务器上的 Oracle Flex ASM 实例出现故障时,能够确保运行在该服务器上的
Oracle Database 12c 实例继续运行。

图 6:Oracle Database 12c 之前的 Oracle ASM

在 Oracle Database 12c 之前,要求集群中的每个节点上都要运行 Oracle ASM 实例。数据库实


例将使用基于 OS 的身份验证与同一服务器上的 Oracle ASM 实例建立本地连接。本地 Oracle
ASM 实例的故障将导致运行在该服务器上的所有数据库实例出现故障。

全新的 Oracle RAC 12c 战略允许根据需要启用新的特性,升级到 Oracle ASM 12c 无需执行任


何更改,可以按照图 6 所示配置使用 Oracle ASM,与之前版本的使用方式相同。

为了充分发挥新 Oracle ASM 功能的优势,需要启用 Oracle Flex ASM。可以在初始安装


Oracle Grid Infrastructure 12c 的过程中启用 Oracle Flex ASM,也可以在安装后启用。需要为
整个集群启用 Oracle Flex ASM。

启用 Oracle Flex ASM 后,最明显的效果是集群中 Oracle ASM 实例与服务器的一对一映射


将被删除,并且包含 3 个或更多个服务器的集群将只托管 3 个 Oracle Flex ASM 实例,这
些实例(作为集群资源)以浮动方式存在于该集群中。两个服务器集群之间将保留一对一
映射。

15
Oracle Database 12c Real Application Clusters (RAC)

图 7:启用 Oracle Flex ASM — 删除了集群中实例与节点的一对一映射

通过启用 Oracle Flex ASM 还会启用节点间 Oracle ASM 实例故障切换,该功能随 Oracle


Database 12c 和更高版本的数据库一起提供,这样一来即使本地节点无 Oracle ASM 实例,也
能确保数据库操作继续运行。

Oracle Flex ASM 可保护特定服务器上的数据库实例免受故障(意外停机)和计划停机的影响


— 计划内的维护会导致计划停机,如应用 OS 或滚动数据库补丁。特别是在一个服务器上运
行多个数据库实例的整合环境中,使数据库实例独立于本地 Oracle ASM 实例将能明显提高
数据库可用性。

工作原理 — 概述

如果特定节点上的 Oracle Flex ASM 实例出现故障,Oracle Flex ASM 实例将故障切换到集群


中的其他节点,而 Oracle Database 12c 实例或更高版本的数据库实例将使用集群中的非本地
Flex ASM 实例继续运行。

图 8:在本地 ASM 实例出现故障后,Oracle 数据库实例继续运行

16
Oracle Database 12c Real Application Clusters (RAC)

假设命令评估

在管理复杂而动态的环境时,在发生诸如服务器中断或联机资源重定位等事件之前,事先
了解资源的布置情况非常重要。假设命令评估 (What-If Command Evaluation) 特性可促进对当
前动态基础架构环境的管理。

图 9:假设命令评估

顾名思义,假设命令评估特性旨在执行命令前先对该命令的执行将对集群产生的影响进行评
估。提供以下两种级别的假设命令评估:1) 针对集群管理员的视图 2) 针对数据库管理员的
视图。除了分别通过 CRSCTL(由集群管理员掌控)或 SRVCTL(由数据库管理员掌控)提
供之外,两者的其他区别还在于它们提供的详细信息不同。

集群管理员需要管理整个集群,监管集群中托管的所有应用程序,而数据库管理员最想知
道的是命令对其负责的数据库有何影响。此外,对于每组管理员而言,执行日常或临时管
理任务所需的命令互不相同,因此要求同一个功能对于每个命令来说都应是可用的。
CRSCTL 命令工具还提供一个设置,可影响结果输出中详细信息的详细程度。

可针对 SRVCTL 和 CRSCTL 工具的不同选项应用假设命令评估,从而可对几乎所有的管理


情况进行评估,然后再实际执行。可使用特殊命令(如 SRVCTL 预测)或命令选项(如
CRSCTL 命令选项 — fail)来预测组件故障的影响。

假设命令评估不提供事务安全性。这意味着,在启动评估的同时,就针对集群的给定状态
执行评估。评估结果将会与该状态有关。假设在启动评估和实际执行命令之间的时间间隔
内,集群状态未发生变化,则命令执行结果将会和预期的一样。如果集群状态发生变化,
实际执行结果可能与预期的不同。

17
Oracle Database 12c Real Application Clusters (RAC)

策略管理的数据库和集群管理

管理动态环境中的高可用性(数据库)系统时,策略管理的数据库和集群管理是一个非常
有用的管理方式。策略管理的环境允许根据需求变化自动、动态地对系统进行调整。这种
环境还能确保连续出现多个故障时,系统上的服务仍然可用。由于大多数应用程序无法区
分集群中的变化是因偶然因素导致,还是计划维护操作的结果,因此可使用基于策略的管
理来改进计划和意外操作。

通过 Oracle Grid Infrastructure 12c 实现增强的服务器池使用和定义

Oracle Grid Infrastructure 12c 增强了对服务器池的使用,引进了按每个服务器存储的服务器


属性以及基于服务器类别的服务器池定义。Oracle Grid Infrastructure 12c 按每个服务器来存
储预先定义的和用户定义的服务器属性,它通过这些服务器属性了解并有效地使用集群中
异构服务器的概念。

在特定服务器上启动 Oracle Clusterware 体系时,由系统内部自动确定服务器属性,并且持久


保存,直到该体系在服务器上重启为止。默认的服务器属性集(可添加用户定义的属性)
包括但不限于“SERVER NAME”、“MEMORY_SIZE”和“CPU_COUNT”。

然后服务器类别可使用服务器属性来定义服务器池。服务器类别根据属性而不是作为池中
一部分的服务器的唯一编号或名称来定义服务器池。服务器类别使用正则表达式定义特定
服务器池中可以使用什么类型的服务器。这允许为服务器定义准入要求以加入到服务器池
中,从而确保服务器池中的所有服务器至少能够提供最低容量来运行通过动态数据库服务
为该服务器池分配的负载。

需要注意的是,一直以来,Oracle RAC 体系始终允许在同一个集群中包含不同大小(即功


能)的服务器。不过,基本的集群管理则假设集群中的服务器在功能上类似。它需要让用
户将负载相应地映射到具有不同计算功能或其他特定属性的服务器。这种类型的人工资源
管理不仅给管理员造成负担,而且在出现故障需要考虑容量需求时本身就容易出现错误。
而由根据物理或用户定义的服务器属性确定的服务器类别定义的服务器池则提供了一种高
效、自动化的方法,可以用来管理具有多变负载需求、包含不同容量服务器的环境。

通过策略管理的环境实现可伸缩性和敏捷性

策略管理的数据库的一个主要用例是,自动调整数据库环境以应对需求变化。另一个用
例,特别是使用 Oracle Grid Infrastructure 12c,包括使用策略集的非数据库应用程序(策略
管理的集群管理)。

18
Oracle Database 12c Real Application Clusters (RAC)

集群中托管的一个或多个应用程序的预期或意外需求增长都会触发一个需求变化 6。但是,
需求变化也可能是计划维护操作(服务器需要停机以进行维护)和集群反复调整导致的 —
调整集群是为了应对跨不同地理区域和时区的全天候操作,或者是为了满足月底或年底的
需求变化。策略管理的环境提供的基础架构可自动处理上述所有情况。

使用策略管理的环境实现更好的高可用性

策略管理的环境是最便捷的方法,足以用来自动应对集群中的多种故障情况。而管理员管
理的系统 — 在该系统中,静态地将数据库实例和动态数据库服务等资源分配给集群中的服
务器 — 通过手动定义静态“首选”和“可用”布置首选项来处理故障。

在管理员管理的环境中,可将资源定义为首选在某个实例(将动态数据库服务分配给数据
库实例)或服务器(对于数据库实例的情况)上运行,只有在该特定实例或服务器不可用
时,该资源(如数据库服务)才会托管到集群中的备选实例或服务器上。无策略决策时,
所有服务器都是平等的,而且需要人工将负载静态分配给服务器。

策略管理的环境则免除了这一负担,无需此类静态定义。通过使用策略和策略集,管理员
可轻松地定义具有不同重要性的服务器池,并将关键负载映射到预先确定了重要性的特定
服务器池。基于集群中可用的计算资源,并且通过扩展分配给服务器池的业务关键型负
载,策略可保证具有更高重要性的服务器池能够获得必要的计算资源,以满足性能或可用
性服务级别协议的要求。

服务器类别确保分配给服务器池的服务器满足最低要求。如果出现服务器故障,将使用服务
器池的重要性定义来判断负载的重要性,并使用可预测策略相应地在集群中重新分配资源。
如果其余集群大小不足以托管所需的负载,将使用同样的策略潜在地将低重要性服务器池的
计算资源迁移到高重要性的服务器池中,以便满足业务关键型负载对计算资源的需求。

6需要通过使用 Oracle Enterprise Manager 12c 或 Oracle Quality of Service (QoS) Management 的应用
程序监视功能来自动响应由应用程序需求触发的需求变化。

19
Oracle Database 12c Real Application Clusters (RAC)

总结

业务连续性、高可用性、可伸缩性、灵活性和敏捷性与自动管理相结合,是成功 IT 基础架
构和云部署的支柱。十多年来,已有数千 Oracle 客户选择包含 Real Application Clusters (RAC)
选件的 Oracle 数据库作为其业务关键型数据库系统的解决方案。

Oracle Real Application Cluster 12c 延续了过去的成功,在各个领域提供了大量对您的业务成


功至关重要的增强功能。应用程序连续性和 Oracle Flex ASM 等新特性,以及策略管理的数
据库和集群管理方面的显著增强,还有全面的数据库整合和 Oracle Multitenant 支持,这些都
使 Oracle RAC 成为针对 IT 基础架构的数据库虚拟化解决方案的理想之选。

图 10:标准化 Oracle RAC 以实现更好的可伸缩性和高可用性

20
甲骨文(中国)软件系统有限公司
北京远洋光华中心办公室 广州国际金融广场办公室

地址:北京市朝阳区景华南街5号远洋光华中心C座21层 地址:广州市天河区珠江新城华夏路8号合景国际金融广场18楼
邮编:100020 邮编:510623
电话:(86.10) 6535-6688 电话:(86.20) 8513-2000
传真:(86.10) 6515-1015 传真:(86.20) 8513-2380

北京汉威办公室 成都中海国际中心办公室

地址:北京市朝阳区光华路7号汉威大厦10层1003-1005单元 地址:成都市高新区交子大道177号中海国际中心7楼B座02-06单元
邮编:100004 邮编:610041
电话:(86.10) 6535-6688 电话:(86.28) 8530-8600
传真:(86.10) 6561-3235 传真:(86.28) 8530-8699

北京甲骨文大厦 深圳飞亚达科技大厦办公室

地址:北京市海淀区中关村软件园24号楼甲骨文大厦 地址:深圳市南山区高新南一道飞亚达科技大厦16层
邮编:100193 邮编:518057
电话:(86.10) 6106-6000 电话:(86.755) 8396-5000
传真:(86.10) 6106-5000 传真:(86.591) 8601-3837

北京国际软件大厦办公室 深圳德赛科技大厦办公室

地址:北京市海淀区中关村软件园9号楼国际软件大厦二区308单元 地址:深圳市南山区高新南一道德赛科技大厦8层0801-0803单元
邮编:100193 邮编:518057
电话:(86.10) 8279-8400 电话:(86.755) 8660-7100
传真:(86.10) 8279-8686 传真:(86.755) 2167-1299

北京孵化器办公室 大连办公室

地址:北京市海淀区中关村软件园孵化器2号楼A座一层 地址:大连软件园东路23号大连软件园15号楼502
邮编:100193 邮编:116023
电话:(86.10) 8278-6000 电话:(86.411) 8465-6000
传真:(86.10) 8282-6401 传真:(86.755) 8465-6499

上海名人商业大厦办公室 苏州办公室

地址:上海市黄浦区天津路155号名人商业大厦12层 地址:苏州工业园区星湖街328号苏州国际科技园5期11幢1001室
邮编:200001 邮编:215123
电话:(86.21) 2302-3000 电话:(86.512) 8666-5000
传真:(86.21) 6340-6055 传真:(86.512) 8187-7838

上海腾飞浦汇大厦办公室 沈阳办公室

地址:上海市黄浦区福州路318号腾飞浦汇大厦508-509室 地址:沈阳市和平区青年大街390号皇朝万鑫国际大厦A座39层3901&3911室
邮编:200001 邮编:110003
电话:(86.21) 2302-3000 电话:(86.24) 8393-8700
传真:(86.21) 6391-2366 传真:(86.24) 2353-0585

上海创智天地10号楼办公室 济南办公室

地址:上海市杨浦区凇沪路290号创智天地10号楼512-516单元 地址:济南市泺源大街150号中信广场11层1113单元
邮编:200433 邮编:250011
电话:(86.21) 6095-2500 电话:(86.531) 6861-1900
传真:(86.21) 6107-5108 传真:(86.531) 8518-1133

上海创智天地11号楼办公室 南京办公室

地址:上海市杨浦区淞沪路303号创智天地科教广场3期11号楼7楼 地址:南京市玄武区洪武北路55号置地广场19层1911室
邮编:200433 邮编:210018
电话:(86.21) 6072-6200 电话:(86.25) 8579-7500
传真:(86.21) 6082-1960 传真:(86.25) 8476-5226

上海新思大厦办公室 西安办公室

地址:上海市漕河泾开发区宜山路926号新思大厦11层 地址:西安市高新区科技二路72号西安软件园零壹广场主楼1401室
邮编:200233 邮编:710075
电话:(86.21) 6057-9100 电话:(86.29) 8834-3400
传真:(86.21) 6083-5350 传真:(86.25) 8833-9829
重庆办公室 武汉办公室

地址:重庆市渝中区邹容路68号大都会商厦1611室 地址:武汉市江岸区中山大道1628号
邮编:400010 武汉天地企业中心5号大厦23层2301单元
电话:(86.23) 6037-5600 邮编:430010
传真:(86.23) 6370-8700 电话:(86.27) 8221-2168
传真:(86.27) 8221-2168
杭州办公室
长沙办公室
地址:杭州市西湖区杭大路15号嘉华国际商务中心810&811室
邮编:310007 地址:长沙市芙蓉区韶山北路159号通程国际大酒店1311-1313室
电话:(86.571) 8168-3600 邮编:410011
传真:(86.571) 8717-5299 电话:(86.731) 8977-4100
传真:(86.731) 8425-9601
福州办公室
石家庄办公室
地址:福州市五四路158号环球广场1601室
邮编:350003 地址:石家庄市中山东路303号石家庄世贸广场酒店14层1402室
电话:(86.591) 8621-5050 邮编:050011
传真:(86.591) 8801-0330 电话:(86.311) 6670-8080
传真:(86.311) 8667-0618
南昌办公室
昆明办公室
地址:江西省南昌市西湖区沿江中大道258号
皇冠商务广场10楼1009室 地址:昆明市三市街六号柏联广场写字楼11层1103A室
邮编:330025 邮编:650021
电话:(86.791) 8612-1000 电话:(86.871) 6402-4600
传真:(86.791) 8657-7693 传真:(86.871) 6361-4946

呼和浩特办公室 合肥办公室

地址:内蒙古自治区呼和浩特市新城区迎宾北路7号 地址:安徽省合肥市蜀山区政务新区怀宁路1639号平安大厦18层1801室
大唐金座19层北侧1902-1904室 邮编:230022
邮编:010051 电话:(86.551) 6595-8200
电话:(86.471) 3941-600 传真:(86.551) 6371-3182
传真:(86.471) 5100-535
广西办公室
郑州办公室
地址:广西省南宁市青秀区民族大道136-2号华润大厦B座2302室
地址:河南省郑州市中原区中原中路220号 邮编:530028
裕达国际贸易中心A座2015室 电话:(86.771) 391-8400
邮编:450007 传真:(86.771) 577-5500
电话:(86.371) 6755-9500
传真:(86.371) 6797-2085
Oracle Real Application Clusters (RAC)
2013 年 6 月
作者:Markus Michalewicz
参与编著:Burt Clouse, John McHugh

公司网址:http://www.oracle.com(英文)
中文网址:http://www.oracle.com/cn(简体中文)
销售中心:800-810-0161
售后服务热线:800-810-0366
培训服务热线:800-810-9931

欢迎访问:
http://www.oracle.com(英文)
http://www.oracle.com/cn(简体中文)

版权© 2014 归 Oracle 公司所有。未经允许,不得以任何


形式和手段复制和使用。

本文的宗旨只是提供相关信息,其内容如有变动,恕不另
行通知。Oracle 公司对本文内容的准确性不提供任何保证,
也不做任何口头或法律形式的其他保证或条件,包括关于
适销性或符合特定用途的所有默示保证和条件。本公司特
别声明对本文档不承担任何义务,而且本文档也不能构成
任何直接或间接的合同责任。未经 Oracle 公司事先书面许
可,严禁将此文档为了任何目的,以任何形式或手段(无论
是电子的还是机械的)进行复制或传播。

Oracle 是 Oracle 公司和/或其分公司的注册商标。其他名


字均可能是各相应公司的商标。

You might also like