简短的过程说明
在对创建 Oracle9 i RAC 系统进行详细说明之前,我认为对创建环境所涉及的步骤进行简短的过程说明会很有益。(参见图 1 。)
我们的实施方案描述了一个双节点集群(每个节点具有单处理器),每台服务器都运行 Red Hat Linux Fedora Core 1 。注意,本文档中的大部分任务都需要在两台服务器上执行。我将在每个部分的开始处提示是否在两个节点上都要执行该任务。
1. 安装 Red Hat Linux / Fedora Core 1 (在两个节点上执行)
对于本示例配置,您将要在构成 RAC 集群的两个节点上都安装 Red Hat Linux (Fedora Core 1) 。
2. 配置网络设置(在两个节点上执行)
在两个节点上安装 Red Hat Linux 软件后,您需要在两个节点上配置网络。这包括配置公共网络以及配置集群的互联。您还应该为互联调整默认的和最大发送缓冲区大小设置,以便当您在实例间使用高速缓存合并缓冲区传输时获得更好的性能。这些设置将会写入到您的 /etc/sysctl.conf 文件中。
3. 获取和安装适当的 Linux 内核(在两个节点上执行)
在本部分中,我们将下载和安装一个新的 Linux 内核 — 它支持对 Fire Wire 存储设备的多次登录。该内核可以从 Oracle 的 Linux 项目开发组 — http://oss.oracle.com 处下载。在安装新内核以后,有几个配置步骤用于加载 FireWire 堆栈。
4. 创建 UNIX oracle 用户帐号( dba 组)(在两个节点上执行)
然后我们将在 RAC 集群的所有节点上创建一个 Oracle UNIX 用户 id 。本部分还提供一个示例登录脚本 ( .bash_profile ) ,可用于设置 oracle 用户需要的所有环境变量。
5. 在共享的 FireWire 存储设备上创建分区(只需从单个节点运行一次)
在本步骤中,我们使用逻辑卷管理器 (LVM) 创建物理卷和逻辑卷。我将说明如何从 FireWire 驱动器上删除所有分区并使用 LVM 创建所有逻辑分区。
6. 创建 RAW 绑定(在两个节点上执行)
在创建逻辑分区后,我们需要配置 FireWire 共享存储器上的原始设备,以便将其用于所有的物理 Oracle 数据库文件。
7. 创建来自 RAW 卷的符号链接(在两个节点上执行)
将来自 RAW 卷的符号链接创建为易读的名称是很有益的,以便更易于识别文件。虽然此步骤是可选项,但强烈建议执行该步骤。
8. 配置 Linux 服务器(在两个节点上执行)
本部分将详细介绍配置两台 Linux 机器所涉及的步骤,将它们准备好,以便安装 Oracle9 i RAC 。
9. 配置 hangcheck-timer 内核模块(在两个节点上执行)
Oracle9 i RAC 使用一个称为 hangcheck-timer 的模块来监视集群的运行情况,并在出现故障时重新启动 RAC 模式。本部分说明了配置 hangcheck-timer 内核模块所需的步骤。虽然 hangcheck-timer 模块不是 Oracle Cluster Manager 操作所必须的模块,但 Oracle 强烈建议使用此模块。
10. 为远程访问配置 RAC 节点(在两个节点上执行)
在安装 Oracle9 i RAC 时, Oracle Installer 将使用 rsh 命令,把 Oracle 软件复制到 RAC 集群中的所有其他节点。本部分所包括的说明用于配置您的 RAC 集群中的所有节点,以便在一个 RAC 节点上不需要口令而根据其他 RAC 节点来运行 r* 命令,如 rsh 、 rcp 和 rlogin 。
11. 配置机器启动脚本(在两个节点上执行)
到此为止,我们已经非常详细地讨论了在我们的 Oracle9 i RAC 配置的两个节点上需要配置的参数和资源。本部分将暂作休整并扼要重述那些参数和命令(在本文前面的章节中),它们在机器循环运行时需要在每个节点上执行。虽然有好几种方法可以完成此工作,但我只是提供了一个可以放在启动脚本(即 /etc/rc.local )中的命令清单,在每次机器启动时,这些命令建立所有所需的资源(磁盘、内存等)。本部分还包含其他的启动脚本,以便检查当集群中每台机器启动时,您是否已经更新了所有所需的脚本。
12. 更新 Red Hat Linux 系统(在两个节点上执行)
在准备 Oracle 安装时,需要将几个 RPM 应用到 RAC 集群中的所有节点。所有的 RPM 都包含在 Fedora Core 1 的 CD 中,此外我还在本文中提供了与这些文件的链接。在应用了所有的 RPM 之后,您还需要应用 Oracle/Linux 补丁 3006854 。在应用了所有所需补丁之后,您应该重新启动 RAC 集群中的所有节点。
13. 下载 / 解开 Oracle9 i 安装文件(从单个节点执行)
本部分包括了下载和解开 Oracle9 i 软件发布版本的步骤。该软件可以从 http://otn.oracle.com/global/cn/ 下载。
14. 安装 Oracle9 i Cluster Manager (从单个节点执行)
安装 Oracle9 i RAC 的过程分为两步: (1) 安装 Oracle9 i Cluster Manager 以及 (2) 安装 Oracle9 i RDBMS 软件。在本部分中,我们将逐步说明安装、配置和启动 Oracle Cluster Manager 软件的步骤。
切记, Oracle Cluster Manager 的安装只需在某一个节点上执行(安装过程将利用 rsh 命令将文件复制到集群中所包含的所有其他节点),但 Cluster Manager 的配置和启动需要在两个节点上执行。
15. 安装 Oracle9 i RAC (只需从单个节点执行)
在安装 Oracle Cluster Manager 之后,就该安装 RAC 软件了。本部分提供了安装该软件所涉及的很多任务,并提供了在创建 Oracle 集群数据库之前应该执行的很多安装后续任务。
16. 创建 Oracle 数据库(从单个节点执行)
在安装了所有软件后,我们现在将要使用 Oracle 数据库配置助手 (DBCA) 在共享存储器 (FireWire) 设备上创建我们的集群数据库。
17. 创建 TNS 联网文件(在两个节点上执行)
本部分仅仅提供了我的 listener.ora 和 tnsnames.ora 文件的示例清单。需要为 RAC 集群中的每个节点配置这些文件。 Oracle Installer 和 Oracle 数据库配置助手在保持这些文件的更新方面做得很好。但是,我确实喜欢对 tnsnames.ora 文件做一些修改。
18. 验证 RAC 集群 / 数据库配置(在两个节点上执行)
在 Oracle 数据库配置助手完成了集群数据库的创建之后,您应该拥有了正在运行的全功能 Oracle9 i RAC 集群。本部分提供了一些命令 SQL 查询,可用于验证您的 Oracle9 i RAC 配置。
19. 启动和停止集群(从单个节点执行)
本部分将提供如何启动和停止集群的示例。这包括如何完整地启动或停止整个集群,以及如何启动和关闭集群中单个实例的示例。
20. 透明应用程序故障切换 (TAF) (在一个或两个节点上执行)
既然我们已经启动并运行了集群,本部分提供了一个如何测试 Oracle9 i RAC 的透明应用程序故障切换特性的示例。我将演示会话故障如何发生作用以及如何设置您的 TNS 配置,以便利用 TAF 。
安装 Red Hat Linux (Fedora Core 1)
在获得所需的硬件之后,就可以开始配置过程了。过程的第一步是在两台服务器上都安装 Red Hat Linux Fedora Core 1 软件。
注意: 本文没有提供关于安装 Red Hat Linux Fedora Core 1 的详细说明。根据本文的目的,我选择执行自定义安装,当提示安装哪些产品时,选择 “Install Everything” 。安装 Red Hat Linux 的文档可见于 http://www.redhat.com/docs/manuals/ 。
配置网络设置
配置公共网络和专用网络
让我们通过确认正确的网络配置,开始配置我们的 Oracle RAC Linux 。在我们的两节点示例中,我们需要在两个节点上配置网络。
在 RedHat Linux 中配置网络设置的最简单方法是通过网络配置程序。此应用程序可以从命令行利用 “root” 用户 id 启动,如下所示:
# su - # /usr/bin/redhat-config-network &
注意: 不要使用 DHCP 命名,因为互联需要固定 IP 地址!
使用网络配置应用程序,您需要配置两个 NIC 设备以及 /etc/hosts 文件。可以使用网络配置 GUI 完成这两个任务。注意,两个节点的 /etc/hosts 设置相同。
我们的示例配置将使用以下的设置:
|
服务器 1 (linux1)
|
|
设备
|
IP 地址
|
子网
|
用途
|
|
eth0
|
192.168.1.100
|
255.255.255.0
|
连接 linux1 与公共网络
|
|
eth1
|
192.168.2.100
|
255.255.255.0
|
连接 linux1 (互联)与 linux2 (int-linux2)
|
|
/etc/hosts
|
|
127.0.0.1 localhost loopback
192.168.1.100 linux1
192.168.2.100 int-linux1
192.168.1.101 linux2
192.168.2.101 int-linux2
|
|
服务器 2 (linux2)
|
|
设备
|
IP 地址
|
子网
|
用途
|
|
eth0
|
192.168.1.101
|
255.255.255.0
|
连接 linux2 与公共网络
|
|
eth1
|
192.168.2.101
|
255.255.255.0
|
连接 linux2 (互联)与 linux1 (int-linux1)
|
|
/etc/hosts
|
|
127.0.0.1 localhost loopback
192.168.1.100 linux1
192.168.2.100 int-linux1
192.168.1.101 linux2
192.168.2.101 int-linux2
|
在以下的屏幕照片中,只显示了节点 1 (linux1) 。请确保对两个节点进行了所有适当的网络设置。

图 1:网络配置屏幕,节点 1 (linux1)

图 2:以太网设备屏幕,eth0 (linux1)

图 3:以太网设备屏幕,eth1 (linux1)

图 4:Network Configuration 屏幕,/etc/hosts (linux1)
调整网络设置
在 Oracle 9.2.0 .1 以及更高的版本中, Oracle 在 Linux 上使用 UDP 作为默认协议进行过程间通信 (IPC) ,如在 RAC 集群中的实例间进行 高速缓存合并 缓冲区传输。
Oracle 强烈建议将默认的和最大的发送缓冲区大小( SO_SNDBUF 套接字选项)调整为 256KB ,并将默认的和最大的接收缓冲区大小( SO_RCVBUF 套接字选项)调整为 256KB 。
接收缓冲区由 TCP 和 UDP 用于保留所接收的数据,直到应用程序读出这些数据为止。接收缓冲区不能溢出,因为不允许对等端发送超过缓冲区大小窗口的数据。这意味着如果数据包不适合于套接字接收缓冲区,它们将会被废弃。这种情况可能导致发送方发送量远远超过接收方的接收能力。
注意: 可以不必重新启动而在 /proc 文件系统中更改默认的和最大的窗口大小:
su - root
# Default setting in bytes of the socket receive buffer
sysctl -w net.core.rmem_default=262144
# Default setting in bytes of the socket send buffer
sysctl -w net.core.wmem_default=262144
# Maximum socket receive buffer size which may be set by using
# the SO_RCVBUF socket option
sysctl -w net.core.rmem_max=262144
# Maximum socket send buffer size which may be set by using
# the SO_SNDBUF socket option
sysctl -w net.core.wmem_max=262144
您应该通过将以下各行添加到 RAC 集群中每个节点的 /etc/sysctl.conf 文件中,使以上的更改永久有效:
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144