18、Oracle 基础教程 - Oracle RAC

1. Oracle RAC介绍

1.1 基本概念

Oracle RAC(Oracle Real Application Server Cluster)是一种分布式数据库解决方案,它允许多个Oracle数据库实例在多台服务器上共享同一个数据库存储空间,并通过集群来保证高可用性和容错性。简单来说,RAC就是将多个数据库实例连接起来,形成一个“集群”,可以在任何节点上访问到完整的数据库内容。

 

Oracle RAC由多个数据库实例组成,其中每个实例都运行在不同的服务器节点上。节点之间通过网络通信,每个实例都可以访问数据文件、控制文件、归档日志和参数文件等共享资源。在RAC架构中,数据库和应用程序是分离的,应用程序只需要连接到任何一个数据库实例即可,当有节点故障时,连接会自动定向到其他节点上。

1.2 Oracle RAC应用场景

Oracle RAC被广泛用于大型、高性能的企业级应用系统中,如在线交易处理、数据仓库和业务智能分析等。

(1)交易处理

在交易处理系统中,Oracle RAC可以提供高可用性、负载均衡和性能优化的支持。采用Oracle RAC可以避免因单点故障而导致的系统不可用或性能下降,保障了在线交易系统的连续性和稳定性。

(2)数据仓库

在数据仓库系统中,Oracle RAC可以提供强大的查询优化功能,以满足业务对数据挖掘和商业智能分析的需求。同时,Oracle RAC还支持在线报表生成和实时数据分析,可以大大提升业务决策的速度和准确性。

(3)业务智能分析

Oracle RAC还广泛应用于业务智能分析系统中,以满足大规模数据量、复杂查询和多维分析等业务需求。通过引入Oracle RAC,可以有效提高系统的响应速度和并行处理能力,以满足业务对实时性和可靠性的需求。

1.3 Oracle RAC的优缺点

(1)优点

高可用性:Oracle RAC 具有高可用性,因为它可以在多个节点上运行数据库实例。如果一个节点出现故障,其他节点可以自动接管其职责,从而避免了单点故障。

高容错性:Oracle RAC提供故障检测和自动恢复技术,在节点故障、网络故障以及存储设备故障等情况下,自动地协调数据库实例之间的交互。Oracle RAC 具有故障转移功能,因为它可以自动将客户端请求路由到可用的节点上。这可以确保系统的连续性和可用性,从而避免了业务中断的风险。

可扩展性:Oracle RAC 具有可扩展性,因为它可以通过增加节点来扩展性能,以满足不断增长的业务需求。Oracle RAC提供在线扩展的功能,可在不中断服务的情况下添加或删除节点。

负载均衡:Oracle RAC 具有负载均衡功能,因为它可以将客户端请求路由到可用的节点上。这可以确保每个节点都能充分利用其资源,从而提高性能和可靠性。

数据共享:Oracle RAC 具有数据共享功能,因为它可以让多个节点共享同一个物理存储。这可以确保数据的一致性和完整性,从而避免了数据冲突和数据丢失的问题。

(2)局限性

成本高昂:Oracle RAC需要购买专门的硬件和软件支持,以及专业人员的维护和管理。这使得采用Oracle RAC的成本较高,对于中小型企业而言可能不划算。

复杂性:Oracle RAC的构建和配置比单机数据库复杂得多,需要考虑多个节点之间的数据同步、连接管理、资源管理以及故障恢复等问题。这可能需要更为复杂的系统架构、详细的设计和测试过程。

可扩展性有限:尽管Oracle RAC可以通过添加和删除节点来实现线性扩展,但这种可扩展性也有一定的局限性。如果要进一步提高性能,可能需要采用更为复杂的方案,如分布式数据库或云计算架构。

资源占用:由于Oracle RAC需要在每个节点上运行多个实例,因此它需要更多的计算资源和内存容量。这可能会影响整个系统的性能和稳定性。

2. Oracle RAC架构

Oracle RAC的架构包括两个主要组件:共享存储实例集群

共享存储指多个节点可以访问的单个存储池,其中包括共享的磁盘或SAN设备等。所有节点都可以访问共享的存储空间,包括数据文件、控制文件、归档日志和参数文件等。这些存储资源通常由一个专门的存储阵列设备提供支持,以确保容错性和高可用性。

实例集群指运行在集群中各个节点上的多个Oracle实例,每个实例都运行在不同的服务器节点上,它们可以协同工作,共享相同的数据库存储空间。

Oracle RAC 的体系结构包括多个关键组件,它们共同协作来实现多节点并行处理、故障检测和自动恢复等功能。

(1)Oracle Database 软件
Oracle Database 软件是 Oracle RAC 的核心组成部分,它必须在每个节点上进行安装和配置,并且需要连接到共享存储设备,以确保节点之间可以相互访问数据库存储。

(2)共享存储
共享存储对于 Oracle RAC 来说是至关重要的。它由一个或多个存储设备提供支持,以确保各个节点之间可以相互访问数据库存储资源。共享存储通常采用 SAN 存储设备或 NAS 设备来实现。

(3)Oracle Clusterware
Oracle Clusterware 是 Oracle RAC 中的关键组件之一,它可以跨节点协调各个实例之间的交互,并且提供自动故障转移和恢复功能,以确保数据库始终可用。此外,Clusterware 还提供了动态资源管理功能,确保每个节点上的进程可以均衡利用系统资源。

(4)共享缓存
Oracle RAC 采用了共享内存架构的方式来实现多个实例之间的数据共享。即各个节点的实例都可以在内存中共享部分数据块(Synchronized Global Cache)。这些数据块可以被多个实例同时访问和修改,不同实例之间进行数据同步和数据冲突检测,保证数据的一致性。通过共享内存架构,Oracle RAC 可以避免访问磁盘的等待时间,从而提高系统的性能。

(5)连接管理器
连接管理器负责将客户端请求路由到可用的节点,以实现负载均衡。此外,连接管理器还提供了一些额外的功能,例如自动重试和会话故障检测等,以提高应用程序的可用性和可靠性。

(6)集群文件系统
集群文件系统用于支持 Oracle RAC 的共享存储。它可以允许多个节点同时访问同一个文件系统,同时确保文件系统的安全性和一致性。Oracle RAC 支持多种集群文件系统,包括 ASM(Automatic Storage Management)和 OCFS2(Oracle Cluster File System)等。

(7)全局资源管理器
全局资源管理器(Globally Enqueue Service)是 Oracle RAC 中实现并发控制的重要组件之一。它负责在多个节点之间协调并发事务的操作,包括锁定、解锁和排队等。同时,全局资源管理器还提供故障检测和自动恢复技术,可以动态地重新分配资源,以适应系统的变化。

3. Oracle RAC 的安装

Oracle RAC 的安装过程通常可以分为以下几个步骤:准备环境、安装 Oracle 软件、创建数据库、配置 RAC 组件、进行测试等。

(1)准备环境

主要包括以下方面:

硬件和操作系统要求:确保所有节点都满足 Oracle 的硬件和软件要求。

共享存储:准备好共享存储设备,并确保所有节点都可以访问该设备。

软件下载:从 Oracle 官方网站下载最新版本的 Oracle Database 软件和 Patchset。

网络配置:为每个节点配置网络接口,并确认所有节点之间的网络连接是正常的。

(2)安装 Oracle 软件

安装步骤如下:

  • 解压下载的 Oracle Database 软件包,并将其复制到所有节点上。
    运行runInstaller 脚本,启动 Oracle Database 安装程序。
  • “选择安装选项”页面上,选择“Install Database software only”选项,然后单击“Next”按钮。
  • “选择系统类别”页面上,选择“Cluster database”选项,然后单击“Next”按钮。
  • “选择集群配置”页面上,选择“Advanced installation”选项,然后单击“Next”按钮。
  • “选择集群节点”页面上,选择要安装 Oracle RAC 的所有节点,并设置每个节点的 Oracle 安装目录和共享存储位置。然后单击“Next”按钮。
  • “选择 Grid Infrastructure 基本目录”页面上,设置 Grid Infrastructure 软件的基本目录和组别。然后单击“Next”按钮。
  • “选择兼容性模式”页面上,选择需要的兼容性模式(Oracle Database 18c 或 Oracle Database 19c)。
  • “指定管理密码”页面上,设置 Grid Infrastructure 和数据库的管理员密码。然后单击“Next”按钮。
  • “审查所选配置”页面上,确认所选配置。然后单击“Install”按钮,开始安装 Oracle RAC。

(3)创建数据库

创建步骤如下:

  • 在每个节点上运行 dbca 命令,启动 Oracle Database Configuration Assistant 工具。
  • “选择操作”页面上,选择“Create Database”选项,然后单击“Next”按钮。
  • “选择模板”页面上,选择“General Purpose or Transaction Processing”选项,然后单击“Next”按钮。
  • “定义数据库标识符”页面上,设置数据库名称、实例名称和 SID 等参数。然后单击“Next”按钮。
  • “配置数据库选项”页面上,设置数据库字符集、语言等选项。然后单击“Next”按钮。
  • “指定数据库文件位置”页面上,设置数据库的数据文件、控制文件和归档日志文件等位置。通常情况下,这些文件应该存储在共享存储中。然后单击“Next”按钮。
  • “指定数据库管理选项”页面上,设置管理员密码、监听器端口等选项。然后单击“Next”按钮。
  • “选择配置选项”页面上,选择需要的配置选项,例如是否启用 ASM 等。然后单击“Next”按钮。
  • “审查所选配置”页面上,确认所选配置。然后单击“Finish”按钮,开始创建数据库。

(4)配置 RAC 组件

在创建数据库后,需要配置 Oracle RAC 的各个组件,包括监听器、OCR(Oracle Cluster Registry)和 ASM(Automatic Storage Management)等。配置步骤如下:

  • 配置监听器:在每个节点上运行 netca 命令,启动网络配置助手,然后创建一个新的监听器。
  • 配置 OCR:使用 crsctl 命令管理 OCR,可以将 OCR 备份到共享存储中,以实现故障恢复和高可用性。
  • 配置 ASM:在每个节点上运行 asmca 命令,启动 ASM 配置助手,然后创建 ASM 实例,并将数据库文件存储在 ASM 中。

(5)进行测试

在完成Oracle RAC 的配置后,需要进行一些测试来验证系统是否正常运行。可以通过以下方式进行测试:

  • 使用 SRVCTL 命令管理集群组件,例如启动、停止数据库实例和 ASM 实例等。
  • 使用 SQLPLUS 工具连接到数据库,并执行一些 SQL 查询语句,以验证数据库是否正常工作