在Linux 和FireWire上创建自己的RAC 集群
了解如何安装和配置低于 1500 美元的 Oracle 真正应用集群(只用于开发和测试)
概述
熟悉 Oracle 真正应用集群 (RAC) 技术的最高效方法之一是进入实际的 Oracle RAC 集群。在学习这种新技术时,您会很快开始了解到 Oracle RAC 一定能提供的利益,如容错、新的安全级别、负载均衡以及升级功能的便利性。但是,挑战在于典型的产品级 RAC 配置所需硬件的价格。例如,小型的两节点集群可能成本从 $10,000 美元到超过 20,000 美元不等。该成本甚至不包括共享存储器 — 这是产品级 RAC 环境的核心。
对于那些只是希望熟悉 Oracle RAC 的人来说,本文提供了一种低成本的变通方法,使用商品级的现成组件和可下载的软件来配置 Oracle9 i RAC 系统。这种配置的估计成本可能是 1000 美元到 1500 美元。系统包含一个双节点集群,两个节点利用基于 IEEE1394 ( FireWire ) 驱动器技术的共享磁盘阵列,运行 Linux (在本示例中为 Red Hat Linux Fedora Core 1 )。
请注意,这并不是创建低成本 Oracle9 i RAC 系统的唯一方法。我曾见过其他的解决方案,这些解决方案利用了基于 SCSI 的实施而不是基于共享存储器的 FireWire 。在大多数情况下, SCSI 比我们的 FireWire 解决方案的成本高,因为典型 SCSI 卡的价格在 70 美元左右,而 80GB 的外部 SCSI 驱动器将需要 700 到 1000 美元。切记有些主板可能已经包含了内建的 SCSI 控制器。
注意,这种配置 决不 能在生产环境中运行,这很重要。在生产环境中,应选择光纤通道技术,因为它是高速串行传输接口,能够在点到点或交换式拓扑结构中连接系统与存储设备。 FireWire is able to offer a low-cost alternative to fiber channel for testing and development, but it is not ready for production.
注意 :在撰写本文时,我尚未验证这些说明是否适用于 Oracle 数据库 10 g 。在以后的几个月时间内,我将撰写另外一篇文章,说明如何使用 10 g 执行类似的安装。
Oracle9 i 真正应用集群 (RAC) 简介
Oracle 真正应用集群 (RAC) 是 Oracle 并行服务器 (OPS) 的后继版本。 RAC 允许多个实例同时访问同一数据库(存储器)。 RAC 通过允许系统进行扩展,提供了容错、负载均衡和性能效益,同时,由于所有节点访问同一数据库,一个实例的故障不会导致无法访问数据库。
Oracle RAC 的核心部分是共享磁盘子系统。集群中的所有节点必须能够访问集群中所有节点的所有数据、重做日志文件、控制文件和参数文件。数据磁盘必须在全局范围内可用,以便允许所有节点访问数据库。每个节点都有自己的重做日志和控制文件,但其他节点必须能够访问这些文件,以便在系统故障时恢复该节点。
并非所有集群解决方案都使用共享存储。有些厂商使用一种称为联合集群的方法,在这种方法中,数据在数台机器中分布,而不是由所有机器共享。但是,在使用 Oracle RAC 时,多个节点使用相同的磁盘集合来存储数据。使用 Oracle RAC 时,数据、重做日志、控制和归档日志文件均存在于原始磁盘设备或集群文件系统上的共享存储器上。 Oracle 的集群方法利用集群中的所有节点的整体处理能力,同时可提供故障切换安全。
虽然这不是绝对必要的,但 Oracle 建议您安装 Oracle 集群文件系统 (OCFS) 。 OCFS 通过在所有节点上创建相同的文件系统,使您的磁盘管理工作变得容易得多。 x 这并非是必需的,但是如果没有 OCFS ,您必须手动完成所有的分区。 ( 注意: 本文没有详细介绍安装和使用 OCFS 的情况,而是使用所有手动方法来创建分区并将 原始设备 绑定到这些分区。)
我不使用针对 Red Hat Linuxe 的 Oracle 集群文件系统的主要原因之一是 OCFS 是 RPM 形式的。所有的 RPM 模块以及预编译模块都绑定到 Red Hat Enterprise Linux AS ( 1200 美元)内核命名标准,并且不会加载到所提供的 2.4.20 链接内核中。
Oracle RAC 与 OPS 之间的最大区别在于增加了高速缓存合并。使用 OPS 时,从一个节点到另一个节点的数据请求需要首先将数据写到磁盘,然后请求节点才能读取该数据。使用高速缓存合并时,数据与锁一起被传递。
Dell 、 IBM 和 HP 等厂商提供了预先配置的 Oracle9 i RAC 解决方案,用于生产环境。但是,本文集中讨论将您自己的 Oracle9 i RAC 环境组合在一起用于开发和测试,其方法是使用 Linux 服务器和一种低成本的共享磁盘解决方案: FireWire 。
RAC 需要什么软件?它有没有需要定购的单独安装 CD ?
RAC 包含在 Oracle9 i 数据库企业版中。( Oracle 最近宣布在 Oracle 数据库 10 g 标准版中也提供 RAC 。)如果您在一个集群中安装 Oracle9 i 企业版,并且 Oracle Universal Installer (OUI) 识别该集群,则为您提供安装 RAC 的选项。大部分 UNIX 平台需要为必要的集群件安装 OSD 。对于 Intel 平台( Linux 和 Windows ), Oracle 在 Oracle9 i 企业版中提供 OSD 软件。
共享存储器概述
现在,光纤通道是最流行的共享存储器解决方案之一。前面曾提到,光纤通道是一种高速串行传输接口,用于在点到点或交换式拓扑结构中连接系统与存储设备。光纤通道所支持的协议包括 SCSI 和 IP 。光纤通道配置可以支持多达 127 个节点,其每秒的吞吐量可以高达 2.12 千兆位。但是,光纤通道的价格很昂贵。单是光纤通道交换机就可能需要 1000 美元。这还不包括光纤通道存储阵列和高端驱动器,一个 36GB 驱动器的价格可高达约 300 美元。典型的光纤通道安装包括用于服务器的光纤通道卡,基本安装大约要 5000 美元,这并不包括构成集群的服务器的成本。
光纤通道的一种较为便宜的替代方法是 SCSI 。 SCSI 技术为共享存储器提供了可以接受的性能,但对于那些习惯了基于 GPL 的 Linux 价格的管理员和开发人员来说,即使是 SCSI 也可能超出预算,一个双节点集群的价格在 1000 美元到 2000 美元左右。
另一种流行的解决方案是 Sun NFS (网络文件系统)。只有在您使用网络设备或类似的设备时,它才可以用于共享存储器。需要特别指出的是,您需要能够保证通过 NFS 进行直接 I/O 的服务器。
FireWire 技术
FireWire 是由 Apple Computer 和 Texas Instruments 所开发的,它是一种高速串行数据总线的跨平台实施方案。利用其高带宽、长距离(长度多达 100 米 )和高能量的总线, FireWire 现在用于数字视频 (DV) 、专业音响、硬盘驱动器、高端数字照相机和家庭娱乐设备等应用中。现在, FireWire 以高达每秒 800 兆位的传输速率工作,而下一代的 FireWire 要求理论上的位速率达到 1600 Mbps ,然后达到令人吃惊的 3200 Mbps 。那是每秒 3.2 千兆位。这种速度将使 FireWire 成为传输大量数据文件甚至要求最苛刻的视频应用所必不可少的技术,如处理未压缩的高清晰 (HD) 视频或者多个标准清晰度 (SD) 的视频流。
以下图表显示了多种类型磁盘接口的速度对比。对于每种接口,我提供了每秒千位 (kb) 、千字节 (KB) 、兆位 (Mb) 和兆字节 (MB) 的最大传输速率。您可以看到, IEEE1394 的功能显然超过其他可用的磁盘接口技术。
磁盘接口
速度
串行
115 kb/s - (.115 Mb/s)
并行(标准)
115 KB/s - (.115 MB/s)
USB 1.1
12 Mb/s - (1.5 MB/s)
并行 (ECP/EPP)
3.0 MB/s
IDE
3.3 - 16.7 MB/s
ATA
3.3 - 66.6 MB/sec
SCSI-1
5 MB/s
SCSI-2 (快速 SCSI / 快速窄带 SCSI )
10 MB/s
快速宽带 SCSI (宽带 SCSI )
20 MB/s
Ultra SCSI ( SCSI-3 / Fast-20 / Ultra 窄带)
20 MB/s
Ultra IDE
33 MB/s
宽带 Ultra SCSI (快速宽带 20 )
40 MB/s
Ultra2 SCSI
40 MB/s
IEEE1394(b)
100 - 400Mb/s - (12.5 - 50 MB/s)
USB 2.x
480 Mb/s - (60 MB/s)
宽带 Ultra2 SCSI
80 MB/s
Ultra3 SCSI
80 MB/s
宽带 Ultra3 SCSI
160 MB/s
FC-AL 光纤通道
100 - 400 MB/s
硬件及成本
用于创建我们的示例 Oracle9 i RAC 环境的硬件包括两个 Linux 服务器以及在任何本地计算机商店或通过互联网都可以购买的组件。
服务器 1 (linux1)
Dell Dimension XPS D266 计算机
—266MHz Pentium II
—384MB RAM
—60GB 内置硬盘
—CDROM 和软盘驱动器
$400
2— 以太网 LAN 卡
— Linksys 10/100 Mpbs — (连接公共网络)
— Linksys 10/100 Mpbs — (用于与 linux2 互联)
$20
$20
1—FireWire 卡
— SIIG, Inc. 3 端口 1394 I/O 卡
注意:已知那些具有由 VIA 或 TI 所制造芯片集的接口卡可以有效工作。
$30
服务器 2 (linux2)
Pentium IV 计算机
—1.8GHz Pentium IV
—300W 电源
—512MB RAM
—40GB 内置硬盘
—32MB AGP 视频显示卡
—CDROM 和软盘驱动器
$600
2— 以太网 LAN 卡
— Linksys 10/100 Mpbs — (连接公共网络)
— Linksys 10/100 Mpbs — (用于与 linux1 互联)
$20
$20
1—FireWire 卡
— Belkin FireWire 3 端口 1394 PCI 卡
注意:已知那些具有由 VIA 或 TI 所制造芯片集的接口卡可以有效工作。
$40
其他组件
FireWire 硬盘驱动器
— Maxtor One Touch 200GB USB 2.0 / Firewire 外部硬盘驱动器
请确保您购买的 FireWire 驱动器支持多次登录。如果驱动器的芯片集不允许对超过一个服务器进行并发访问,则每次只有一台服务器能够看到该磁盘及其分区。已知具有 Oxford 911 芯片集的磁盘可以有效工作。以下是我为本测试所购买的磁盘的详细信息:
供应商: Maxtor
型号: OneTouch
Mfg. 部件号或 KIT 号: A 01A 200 或 A 01A 250
容量: 200GB 或 250GB
高速缓存缓冲区: 8MB
转速: 7200 RPM
“ 组合 ” 接口:符合 IEEE 1394 和 SPB-2 标准( 100 到 400 Mbits/sec )并兼容 USB 2.0 和 USB 1.1
$270
1 — 额外的 FireWire 电缆
— Belkin 6 针到 6 针的 1394 电缆
$15
1 — 以太网集线器或交换机
— Linksys EtherFast 10/100 5 端口以太网交换机 (用于与 int-linux1 / int-linux2 互联)
$40
4— 网络电缆
— 5e 类连接线 — (连接 linux1 与公共网络)
— 5e 类连接线 — (连接 linux2 与公共网络)
— 5e 类连接线 — (连接 linux1 与互联以太网交换机)
— 5e 类连接线 — (连接 linux2 与互联以太网交换机)
$5
$5
$5
$5
合计
$1,495
简短的过程说明
在对创建 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.xmfv.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)
" /proc/scsi/scsi
使用 Fedora Core 1 时,应该可以自动检测到磁盘。
• 检查 SCSI 设备
重新启动机器后,内核应该自动将磁盘检测为 SCSI 设备 ( /dev/sdXX ) 。本部分提供了几个命令,这些命令应该在集群的两个节点上运行,以确保成功地检测到 FireWire 驱动器。
在这个配置中,我同时在两个节点上执行以上的过程。在过程完成后,我关闭两台机器,首先启动 linux1 ,然后启动 linux2 。以下的命令和结果来自于我的 linux2 机器。同样,请确认您在两个节点上都运行了以下的命令,以确保两台机器都能登录到共享驱动器。
"AnotherFilesystem"/tmp
# chown root.root /"AnotherFilesystem"/tmp
# chmod 1777 /"AnotherFilesystem"/tmp
# export TEMP=/"AnotherFilesystem"/tmp # used by Oracle
# export TMPDIR=/"AnotherFilesystem"/tmp # used by Linux programs
# like the linker "ld"
当 Oracle 的安装完成时,您可以使用以下命令删除该临时目录:
# su -
# rmdir /"AnotherFilesystem"/tmp
# unset TEMP
# unset TMPDIR
在两个节点上都创建了 “ oracle ”UNIX 用户 id 后,通过使用以下的 .bash_profile ,确保正确地建立了环境:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
alias ls="ls -FA"
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/ 9.2.0
# Each RAC node must have a unique ORACLE_SID.(i.e. orcl1, orcl2,...)
export ORACLE_SID=orcl1
export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin
export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export LD_ASSUME_KERNEL= 2.4.1
在共享的 FireWire 存储设备上创建分区(在一个节点上执行)
概述
现在应该创建由逻辑卷管理器 (LVM) 所使用的物理卷和逻辑卷了。(有关管理 LVM 的更详细观点,请参见我的文章 管理物理卷和逻辑卷 。) 下表列出了逻辑分区到表空间的映射,我们将在本文的这一部分中完成这些映射:
逻辑卷
RAW 卷
符号链接
表空间 / 文件名
表空间 / 文件大小
分区大小
/dev/pv1/lvol1
/dev/raw/raw1
/u01/app/oracle/oradata/orcl/CMQuorumFile
Cluster Manager Quorum File
-
5MB
/dev/pv1/lvol2
/dev/raw/raw2
/u01/app/oracle/oradata/orcl/SharedSrvctlConfigFile
Shared Configuration File
-
100MB
/dev/pv1/lvol3
/dev/raw/raw3
/u01/app/oracle/oradata/orcl/spfileorcl.ora
Server Parameter File
-
10MB
/dev/pv1/lvol4
/dev/raw/raw4
/u01/app/oracle/oradata/orcl/control01.ctl
Control File 1
-
200MB
/dev/pv1/lvol5
/dev/raw/raw5
/u01/app/oracle/oradata/orcl/control02.ctl
Control File 2
-
200MB
/dev/pv1/lvol6
/dev/raw/raw6
/u01/app/oracle/oradata/orcl/control03.ctl
Control File 3
-
200MB
/dev/pv1/lvol7
/dev/raw/raw7
/u01/app/oracle/oradata/orcl/cwmlite01.dbf
CWMLITE
50MB
55MB
/dev/pv1/lvol8
/dev/raw/raw8
/u01/app/oracle/oradata/orcl/drsys01.dbf
DRSYS
20MB
25MB
/dev/pv1/lvol9
/dev/raw/raw9
/u01/app/oracle/oradata/orcl/example01.dbf
EXAMPLE
250MB
255MB
/dev/pv1/lvol10
/dev/raw/raw10
/u01/app/oracle/oradata/orcl/indx01.dbf
INDX
100MB
105MB
/dev/pv1/lvol11
/dev/raw/raw11
/u01/app/oracle/oradata/orcl/odm01.dbf
ODM
50MB
55MB
/dev/pv1/lvol12
/dev/raw/raw12
/u01/app/oracle/oradata/orcl/system01.dbf
SYSTEM
800MB
805MB
/dev/pv1/lvol13
/dev/raw/raw13
/u01/app/oracle/oradata/orcl/temp01.dbf
TEMP
250MB
255MB
/dev/pv1/lvol14
/dev/raw/raw14
/u01/app/oracle/oradata/orcl/tools01.dbf
TOOLS
100MB
105MB
/dev/pv1/lvol15
/dev/raw/raw15
/u01/app/oracle/oradata/orcl/undotbs01.dbf
UNDOTBS1
400MB
405MB
/dev/pv1/lvol16
/dev/raw/raw16
/u01/app/oracle/oradata/orcl/undotbs02.dbf
UNDOTBS2
400MB
405MB
/dev/pv1/lvol17
/dev/raw/raw17
/u01/app/oracle/oradata/orcl/users01.dbf
USERS
100MB
105MB
/dev/pv1/lvol18
/dev/raw/raw18
/u01/app/oracle/oradata/orcl/xdb01.dbf
XDB
150MB
155MB
/dev/pv1/lvol19
/dev/raw/raw19
/u01/app/oracle/oradata/orcl/perfstat01.dbf
PERFSTAT
100MB
105MB
/dev/pv1/lvol20
/dev/raw/raw20
/u01/app/oracle/oradata/orcl/redo01.log
REDO G1 / M1
100MB
105MB
/dev/pv1/lvol21
/dev/raw/raw21
/u01/app/oracle/oradata/orcl/redo02.log
REDO G2 / M1
100MB
105MB
/dev/pv1/lvol22
/dev/raw/raw22
/u01/app/oracle/oradata/orcl/redo03.log
REDO G3 / M1
100MB
105MB
/dev/pv1/lvol23
/dev/raw/raw23
/u01/app/oracle/oradata/orcl/orcl_redo2_2.log
REDO G4 / M1
100MB
105MB
删除 FireWire 共享存储器上的所有分区
在本示例中,我将使用整个 FireWire 磁盘(没有分区)。在这种情况下,我将使用 /dev/sda 来创建逻辑卷 / 物理卷。这并不是完成创建 LVM 环境任务的唯一方法。我们还可以在磁盘上创建 Linux LVM 分区(其类型为 8e )。让我们假设该 LVM 分区是在磁盘上创建的第一个分区。这样我们需要利用 /dev/sda1 来工作。同样,在本示例中,我将使用整个 FireWire 驱动器(没有分区) , 因此要访问 /dev/sda 。在创建物理卷和逻辑卷之前,通过使用 fdisk 命令删除 FireWire 驱动器上的任何现有分区,这是很重要的(因为我们要使用整个磁盘):
# fdisk /dev/sda
Command (m for help):p
Disk /dev/sda:203.9 GB, 203927060480 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 24791 199133676 c Win95 FAT32 (LBA)
Command (m for help):d
Selected partition 1
Command (m for help):p
Disk /dev/sda:203.9 GB, 203927060480 bytes
255 heads, 63 sectors/track, 24792 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
创建逻辑卷
以下的一组命令执行创建逻辑卷所需的步骤:
• 运行 vgscan 命令( 在集群中所有的 RAC 节点上运行 ),以创建 /etc/lvmtab 文件。
• 使用 pvcreate 创建由逻辑卷管理器 (LVM) 所使用的物理卷。
• 使用 vgcreate ,为驱动器或者为您希望用于 RAW 设备的分区创建一个卷组。在这里我们为整个驱动器创建卷。在我们的示例中(如下所示),该命令将允许创建 256 个逻辑分区和 256 个物理分区,范围大小为 128K 。
• 使用 lvcreate 在卷组中创建逻辑卷。
注意: 上文讲到,我需要在所有节点上运行 vgscan 命令,以便该命令能够创建 /etc/lvmtab 文件。应该在运行下列命令之前执行该命令。
将以下命令放在一个 schell 脚本中,更改执行权限,然后以 “root”UNIX 用户 id 来运行该脚本:
vgscan
pvcreate -d /dev/sda
vgcreate -l 256 -p 256 -s 128k /dev/pv1 /dev/sda
lvcreate -L 5m /dev/pv1
lvcreate -L 100m /dev/pv1
lvcreate -L 10m /dev/pv1
lvcreate -L 200m /dev/pv1
lvcreate -L 200m /dev/pv1
lvcreate -L 200m /dev/pv1
lvcreate -L 55m /dev/pv1
lvcreate -L 25m /dev/pv1
lvcreate -L 255m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 55m /dev/pv1
lvcreate -L 805m /dev/pv1
lvcreate -L 255m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 405m /dev/pv1
lvcreate -L 405m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 155m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 105m /dev/pv1
lvcreate -L 105m /dev/pv1
使用该脚本(如上所示)将会创建 /dev/pv1/lvol1 - /dev/pv1/lvol23 。
我通常使用 lvscan 命令来检查逻辑卷的状态:
[root@linux2 root]# lvscan
lvscan -- ACTIVE "/dev/pv1/lvol1" [5 MB]
lvscan -- ACTIVE "/dev/pv1/lvol2" [100 MB]
lvscan -- ACTIVE "/dev/pv1/lvol3" [10 MB]
lvscan -- ACTIVE "/dev/pv1/lvol4" [200 MB]
lvscan -- ACTIVE "/dev/pv1/lvol5" [200 MB]
lvscan -- ACTIVE "/dev/pv1/lvol6" [200 MB]
lvscan -- ACTIVE "/dev/pv1/lvol7" [55 MB]
lvscan -- ACTIVE "/dev/pv1/lvol8" [25 MB]
lvscan -- ACTIVE "/dev/pv1/lvol9" [255 MB]
lvscan -- ACTIVE "/dev/pv1/lvol10" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol11" [55 MB]
lvscan -- ACTIVE "/dev/pv1/lvol12" [805 MB]
lvscan -- ACTIVE "/dev/pv1/lvol13" [255 MB]
lvscan -- ACTIVE "/dev/pv1/lvol14" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol15" [405 MB]
lvscan -- ACTIVE "/dev/pv1/lvol16" [405 MB]
lvscan -- ACTIVE "/dev/pv1/lvol17" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol18" [155 MB]
lvscan -- ACTIVE "/dev/pv1/lvol19" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol20" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol21" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol22" [105 MB]
lvscan -- ACTIVE "/dev/pv1/lvol23" [105 MB]
lvscan -- 23 logical volumes with 3.88 GB total in 1 volume group
lvscan -- 23 active logical volumes
重新启动 RAC 集群中的所有节点
在完成分区的创建之后,建议您重新启动所有 RAC 节点上的内核,以确保所有的新分区被所有 RAC 节点上的内核所识别:
# su -
# reboot
重要声明: 切记,您需要在您的一个启动脚本中添加语句,先调用 vgscan ,然后调用 vgchange -a y ,以便您的 RAC 集群中的每台机器在启动时运行它们。这两个命令在激活所有的卷组之前为您提供一个实际的卷管理器数据库。本文将提供所有应该加入到您的 /etc/rc.local 脚本中的设置,以便对 Oracle9 i RAC 集群中的每个节点进行设定。
创建 RAW 绑定(在两个节点上执行)
注意: 在每次启动机器时 , 需要在集群中的每个节点上执行本部分中的一些命令。这些命令的详细信息以及关于将其加入启动脚本的说明都包含在 用于每个 RAC 节点的所有启动命令 一节中。
在本部分中,我将说明如何在 FireWire 共享存储器上配置原始设备,这些设备将用于所有的物理 Oracle 数据库文件,包括 srvctl 的 Cluster Manager Quorum File 和 Shared Configuration File 。
现在,我们已经在 FireWire 共享存储器上创建了所需的分区。我们现在需要使用 raw 命令将所有卷绑定到原始设备:
usr/bin/raw /dev/raw/raw1 /dev/pv1/lvol1
/usr/bin/raw /dev/raw/raw2 /dev/pv1/lvol2
/usr/bin/raw /dev/raw/raw3 /dev/pv1/lvol3
/usr/bin/raw /dev/raw/raw4 /dev/pv1/lvol4
/usr/bin/raw /dev/raw/raw5 /dev/pv1/lvol5
/usr/bin/raw /dev/raw/raw6 /dev/pv1/lvol6
/usr/bin/raw /dev/raw/raw7 /dev/pv1/lvol7
/usr/bin/raw /dev/raw/raw8 /dev/pv1/lvol8
/usr/bin/raw /dev/raw/raw9 /dev/pv1/lvol9
/usr/bin/raw /dev/raw/raw10 /dev/pv1/lvol10
/usr/bin/raw /dev/raw/raw11 /dev/pv1/lvol11
/usr/bin/raw /dev/raw/raw12 /dev/pv1/lvol12
/usr/bin/raw /dev/raw/raw13 /dev/pv1/lvol13
/usr/bin/raw /dev/raw/raw14 /dev/pv1/lvol14
/usr/bin/raw /dev/raw/raw15 /dev/pv1/lvol15
/usr/bin/raw /dev/raw/raw16 /dev/pv1/lvol16
/usr/bin/raw /dev/raw/raw17 /dev/pv1/lvol17
/usr/bin/raw /dev/raw/raw18 /dev/pv1/lvol18
/usr/bin/raw /dev/raw/raw19 /dev/pv1/lvol19
/usr/bin/raw /dev/raw/raw20 /dev/pv1/lvol20
/usr/bin/raw /dev/raw/raw21 /dev/pv1/lvol21
/usr/bin/raw /dev/raw/raw22 /dev/pv1/lvol22
/usr/bin/raw /dev/raw/raw23 /dev/pv1/lvol23
/bin/chmod 600 /dev/raw/raw1
/bin/chmod 600 /dev/raw/raw2
/bin/chmod 600 /dev/raw/raw3
/bin/chmod 600 /dev/raw/raw4
/bin/chmod 600 /dev/raw/raw5
/bin/chmod 600 /dev/raw/raw6
/bin/chmod 600 /dev/raw/raw7
/bin/chmod 600 /dev/raw/raw8
/bin/chmod 600 /dev/raw/raw9
/bin/chmod 600 /dev/raw/raw10
/bin/chmod 600 /dev/raw/raw11
/bin/chmod 600 /dev/raw/raw12
/bin/chmod 600 /dev/raw/raw13
/bin/chmod 600 /dev/raw/raw14
/bin/chmod 600 /dev/raw/raw15
/bin/chmod 600 /dev/raw/raw16
/bin/chmod 600 /dev/raw/raw17
/bin/chmod 600 /dev/raw/raw18
/bin/chmod 600 /dev/raw/raw19
/bin/chmod 600 /dev/raw/raw20
/bin/chmod 600 /dev/raw/raw21
/bin/chmod 600 /dev/raw/raw22
/bin/chmod 600 /dev/raw/raw23
/bin/chown oracle:dba /dev/raw/raw1
/bin/chown oracle:dba /dev/raw/raw2
/bin/chown oracle:dba /dev/raw/raw3
/bin/chown oracle:dba /dev/raw/raw4
/bin/chown oracle:dba /dev/raw/raw5
/bin/chown oracle:dba /dev/raw/raw6
/bin/chown oracle:dba /dev/raw/raw7
/bin/chown oracle:dba /dev/raw/raw8
/bin/chown oracle:dba /dev/raw/raw9
/bin/chown oracle:dba /dev/raw/raw10
/bin/chown oracle:dba /dev/raw/raw11
/bin/chown oracle:dba /dev/raw/raw12
/bin/chown oracle:dba /dev/raw/raw13
/bin/chown oracle:dba /dev/raw/raw14
/bin/chown oracle:dba /dev/raw/raw15
/bin/chown oracle:dba /dev/raw/raw16
/bin/chown oracle:dba /dev/raw/raw17
/bin/chown oracle:dba /dev/raw/raw18
/bin/chown oracle:dba /dev/raw/raw19
/bin/chown oracle:dba /dev/raw/raw20
/bin/chown oracle:dba /dev/raw/raw21
/bin/chown oracle:dba /dev/raw/raw22
/bin/chown oracle:dba /dev/raw/raw23
注意: 切记,需要在每次启动时为 RAC 集群中的每个节点执行以上的 绑定 步骤。它应该放在类似 /etc/rc.local 的启动脚本中。
您可以使用 raw 命令来验证原始绑定:
# raw -qa
/dev/raw/raw1:bound to major 58, minor 0
/dev/raw/raw2:bound to major 58, minor 1
/dev/raw/raw3:bound to major 58, minor 2
/dev/raw/raw4:bound to major 58, minor 3
/dev/raw/raw5:bound to major 58, minor 4
/dev/raw/raw6:bound to major 58, minor 5
/dev/raw/raw7:bound to major 58, minor 6
/dev/raw/raw8:bound to major 58, minor 7
/dev/raw/raw9:bound to major 58, minor 8
/dev/raw/raw10:bound to major 58, minor 9
/dev/raw/raw11:bound to major 58, minor 10
/dev/raw/raw12:bound to major 58, minor 11
/dev/raw/raw13:bound to major 58, minor 12
/dev/raw/raw14:bound to major 58, minor 13
/dev/raw/raw15:bound to major 58, minor 14
/dev/raw/raw16:bound to major 58, minor 15
/dev/raw/raw17:bound to major 58, minor 16
/dev/raw/raw18:bound to major 58, minor 17
/dev/raw/raw19:bound to major 58, minor 18
/dev/raw/raw20:bound to major 58, minor 19
/dev/raw/raw21:bound to major 58, minor 20
/dev/raw/raw22:bound to major 58, minor 21
/dev/raw/raw23:bound to major 58, minor 22
"echo "2147483648" " /proc/sys/kernel/shmmax
- 您还可以使用 sysctl 命令来更改 SHMMAX 的值:
# sysctl -w kernel.shmmax=2147483648
- 最后,通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,您可以使这种更改永久有效:
# echo "kernel.shmmax=2147483648" "" /etc/sysctl.con
设置 SHMMNI
我们现在来看 SHMMNI 参数。这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。这一数值已经足够,通常不需要更改。
您可以通过执行以下命令来确定 SHMMNI 的值:
# cat /proc/sys/kernel/shmmni
4096
设置 SHMALL
最后,我们来看 SHMALL 共享内存内核参数。该参数控制着系统一次可以使用的共享内存总量(以页为单位)。简言之,该参数的值始终应该至少为:
ceil(SHMMAX/PAGE_SIZE)
SHMALL 的默认大小为 2097152 ,可以使用以下命令进行查询:
# cat /proc/sys/kernel/shmall
2097152
SHMALL 的默认设置对于我们的 Oracle9 i RAC 安装来说应该足够使用。
注意: 在 i386 平台上 Red Hat Linux 的 页面大小 为 4096 字节。但是,您可以使用 bigpages ,它支持配置更大的内存页面尺寸。
设置信号
既然我们已经配置了共享内存设置,现在就该考虑配置我们的 信号 了。对信号的最佳描述是,它是用于在共享资源(如共享内存)的进程(或进程中的线程)之间提供同步的计数器。在系统 V 中支持信号集,其中每一项都是信号计数。当应用程序请求信号时,它使用 “ 集合 ” 来完成此工作。
要确定所有的信号限制,可使用以下命令:
# ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
您还可以使用以下命令:
# cat /proc/sys/kernel/sem
250 32000 32 128
设置 SEMMSL
SEMMSL 内核参数用于控制每个信号集的最大信号数量。
Oracle 建议将 SEMMSL 设置为 init.ora 文件(用于 Linux 系统中的所有数据库)中的最大 PROCESS 实例参数的设置值再加上 10 。此外, Oracle 建议将 SEMMSL 的值设置为不少于 100 。
设置 SEMMNI
SEMMNI 内核参数用于控制整个 Linux 系统中信号集的最大数量。
Oracle 建议将 SEMMNI 的值设置为不少于 100 。
设置 SEMMNS
SEMMNS" 内核参数用于控制整个 Linux 系统中信号(而不是信号集)的最大数。
Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。
使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:
SEMMNS — 或 — (SEMMSL * SEMMNI)
设置 SEMOPM
SEMOPM 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。
semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的 SEMMSL 信号,因此建议设置 SEMOPM 等于 SEMMSL 。
Oracle 建议将 SEMOPM 的值设置为不少于 100 。
" /proc/sys/kernel/sem
- 您还可以使用 sysctl 命令来更改所有信号设置的值:
# sysctl -w kernel.sem="250 32000 100 128"
- 最后,您可以通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,使这种更改永久有效:
# echo "kernel.sem=250 32000 100 128" "" /etc/sysctl.conf
设置文件句柄
在配置我们的 Red Hat Linux 服务器时,确保文件句柄的最大数量足够大是非常关键的。文件句柄设置表示您在 Linux 系统中可以打开的文件数量。
使用以下命令来确定整个系统中文件句柄的最大数量:
# cat /proc/sys/fs/file-max
32768
Oracle 建议将整个系统的文件句柄值至少设置为 65536 。
- 通过直接更改 /proc 文件系统,您可以不必重新启动机器而改变文件句柄最大数量的默认设置。我使用的方法是将以下命令置于 /etc/rc.local 启动文件中:
# echo "65536" " /proc/sys/fs/file-max
- 您还可以使用 sysctl 命令来更改 SHMMAX 的值:
# sysctl -w fs.file-max=65536
- 最后,您可以通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,使这种更改永久有效:
# echo "fs.file-max=65536" "" /etc/sysctl.conf
注意: 您可以使用以下命令来查询文件句柄的当前使用情况:
# cat /proc/sys/fs/file-nr
613 95 32768
file-nr 文件显示了三个参数:
- 分配的文件句柄总数 当前使用的文件句柄数 可以分配的最大文件句柄数
注意: 如果您需要增加 /proc/sys/fs/file-max 中的值,则要确保正确地设置 ulimit 。对于 2.4.20 ,通常将其设置为 unlimited 。使用 ulimit 命令来验证 ulimit 设置:
# ulimit
unlimited
配置 hangcheck-timer 内核模块
Oracle 9.0.1 和 9.2.0.1 使用一个称为 watchdogd 的用户空间监视后台程序来监视集群的状态情况,并在发生故障时重新启动 RAC 模式。但是,从 Oracle 9.2.0.2 开始,一个称为 hangcheck-timer 的 Linux 模块取代了此后台程序,该模块更好地解决了可用性和可靠性的问题。 hangcheck-timer 被加载到内核中并检查系统是否挂起。它将设置一个定时器,并在特定的时间量之后检查该定时器。有一个用于检查挂起情况的可配置阈值,如果超过该值机器将重新启动。虽然 Oracle Cluster Manager 的操作不需要 hangcheck-timer 模块,但 Oracle 高度建议使用它。
hangcheck-timer.o 模块
hangcheck-timer 模块使用了一个基于内核的定时器,该定时器周期性地检查系统任务调度程序,以捕获延迟,从而确定系统的健康情况。如果系统挂起或暂停,则定时器重启该节点。 hangcheck-timer 模块使用了时间标记计数器 (TSC) CPU 寄存器,这是一个在每次时钟信号时递增的计数器。 TCS 提供了更为精确的时间量度,因为该寄存器是由硬件自动更新的。
有关 hangcheck-timer 项目的详细信息,请单击 此处 。
安装 hangcheck-timer.o 模块
hangcheck-timer 通常与 Oracle 一同提供,但是,现在从内核版本 2.4.9 -e.12 起,该模块与 Red Hat Linux AS 包含在一起。如果您按照 “ 获取和安装合适的 Linux 内核 ” 中的步骤执行,则已经包含了 hangcheck-timer 。使用以下命令来确认您已经包含了该模块:
# find /lib/modules -name "hangcheck-timer.o"
/lib/modules/ 2.4.21 -9.0.1.ELorafw1/kernel/drivers/char/hangcheck-timer.o
配置和加载 hangcheck-timer 模块
对于 hangcheck-timer 模块有两个关键的参数。
- hangcheck-tick :此参数定义了检查系统健康情况的间隔时段。其默认值为 60 秒。 Oracle 建议将其设置为 30 秒。 hangcheck-margin :此参数定义了 hangcheck-timer 在重启 RAC 节点前所容许的最大挂起延迟。它定义了以秒为单位的错误余量。其默认值为 180 秒。 Oracle 建议将其设置为 180 秒。
这两个参数需要与 Cluster Manager 的 $ORACLE_HOME/oracm/admin/cmcfg.ora 文件中的 MissCount 参数协同使用。
注意: 这两个 hangcheck-timer 模块参数说明在该模块重启系统前 RAC 节点必须挂起多长时间。当以下条件为真时将会重启节点:
系统挂起时间 " (hangcheck_tick + hangcheck_margin)
现在让我们来讨论如何加载该模块。您可以通过使用以下命令,利用正确的参数设置来手动地加载该模块:
# su -
# /sbin/insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
# grep Hangcheck /var/log/messages*
/var/log/messages.1:Apr 30 20:51:47 linux2 kernel:Hangcheck:
starting hangcheck timer 0.8.0 (tick is 30 seconds, margin is 180 seconds).
/var/log/messages.1:Apr 30 20:51:47 linux2 kernel:Hangcheck:Using TSC.
将以上的 “ insmod ” 命令放在您的 /etc/rc.local 文件中!
虽然手动加载模块的方法(如上所示)可以有效工作,但我们需要一种在每次重新启动节点时利用正确参数来加载该模块的方法。我们通过在 /etc/modules.conf 文件中创建项目来完成此任务。将以下的行添加到 /etc/modules.conf 文件中:
# su -
# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" "" /etc/modules.conf
现在,为测试模块,可使用 modprobe 命令。您可以运行 modprobe 命令,利用在 /etc/modules.conf 文件中定义的、经过配置的参数来手动加载 hangcheck-timer 模块:
# su -
# modprobe hangcheck-timer
# grep Hangcheck /var/log/messages*
/var/log/messages.1:Apr 30 20:51:47 linux2 kernel:
Hangcheck:starting hangcheck timer 0.8.0 (tick is 30 seconds, margin is 180 seconds).
/var/log/messages.1:Apr 30 20:51:47 linux2 kernel:
Hangcheck:Using TSC.
注意: 您不必在每次重新启动后都运行 modprobe 。 hangcheck-timer 模块将会在需要时由内核加载(自动进行)。
为远程访问配置 RAC 节点
当在一个 RAC 节点上运行 Oracle Installer 时,它将使用 rsh 命令把 Oracle 软件复制到 RAC 集群中的所有其他节点。在运行 Oracle Installer 的节点上的 oracle UNIX 帐号 ( runIntaller ) 必须为您 RAC 集群中的所有其他节点所信任。这意味着您应该能够在此 RAC 节点上不需要口令而根据其他 RAC 节点来运行 r* 命令,如 rsh 、 rcp 和 rlogin 等。 rsh 后台程序使用在用户 (oracle) 的主目录中所找到的 /etc/hosts.equiv 文件和 .rhosts 文件来验证用户。不幸的是,它不支持 SSH 。
首先,让我们确认已经在 RAC 集群中的每个节点上安装了 rsh RPM :
# rpm -q rsh rsh-server
rsh-0.17-19
rsh-server-0.17-19
根据以上情况,我们可以了解到已经安装了 rsh 和 rsh-server 。
注意: 如果没有安装 rsh ,则运行以下命令:
# su -
# rpm -ivh rsh-0.17-5.i386.rpm rsh-server-0.17-5.i386.rpm
要启动 “rsh” 服务,必须将 /etc/xinetd.d/rsh 文件中的 “disable” 属性设置为 “ no ” ,并且必须刷新 xinetd 。通过运行以下命令可以完成此工作:
# su -
# chkconfig rsh on
# chkconfig rlogin on
# service xinetd reload
Reloading configuration:[ OK ]
要使得 “oracle”UNIX 用户帐号在 RAC 节点中获得信任,需要创建 /etc/hosts.equiv 文件:
# su -
# touch /etc/hosts.equiv
# chmod 600 /etc/hosts.equiv
# chown root.root /etc/hosts.equiv
现在将所有 RAC 节点添加到类似于以下示例的 /etc/hosts.equiv 文件中:
# cat /etc/hosts.equiv
+linux1 oracle
+linux2 oracle
+int-linux1 oracle
+int-linux2 oracle
请确保您的 RAC 集群中的所有节点上都存在 /etc/hosts.equiv 文件!
注意: 在以上示例中,第二个字段只允许 oracle 用户帐号在所指定的节点上运行 rsh 命令。由于安全原因, /etc/hosts.equiv 文件应该由 root 所拥有,并应该将权限设置为 600 。实际上,某些系统只有在该文件的所有者为 root 并且权限被设置为 600 时才接受此文件的内容。
注意: 在尝试测试您的 rsh 命令之前,请确保您正在使用正确版本的 rsh 。在默认情况下, Red Hat Linux 将 /usr/kerberos/sbin 放在 $PATH 变量的前面。这会导致执行 rsh 的 Kerberos 版本。
我通常会重命名 rsh 的 Kerberos 版本,以便使用正常的 rsh 命令。使用以下命令:
# su -
# which rsh
/usr/kerberos/bin/rsh
# cd /usr/kerberos/bin
# mv rsh rsh.original
# which
| 对本文中的事件或人物打分: | |
| 当前平均分:-0.85 (20次打分) | |
| 对本篇资讯内容的质量打分: | |
| 当前平均分:-1.17 (23次打分) | |
- [感动最多的] A little test for index
- [路过最多的] 康盛创想新社区产品曝光 代号为UltraX
- [高兴最多的] 律师看互联网形势:限制功能和管理内容辨析
- [难过最多的] 黔江小伙龚节毅:一人办全国顶级音乐网
- [搞笑最多的] 为什么ODBC不是Linux的一个标准特征?
- [愤怒最多的] Godaddy今日正式支持支付宝付款
- [无聊最多的] 网页设计中如何让CSS控制网页背景?
- [同情最多的] 高性能的 Linux 集群介绍
网络资源
最新报道
- 12-30在Linux 和FireWire上创建自
- 12-30高性能的 Linux 集群介绍
- 12-30Linux集群的安装与并行计算
- 12-30Linux集群认证介绍
- 12-30Linux集群软件LifeKeeper简
- 12-30Linux集群应用的新挑战
- 12-30安装大型Linux 集群: 简介和
- 12-30安装大型Linux 集群: 配置服
- 12-30架设基于Linux(2.6.14内核)
- 12-30解决方案 VMware5安装集群LV
相关资讯
- 12-30Linux操作系统下的集群工作原理及实战经历
- 12-30高性价比开源软件集群(2)
- 12-30利用集群技术实现Web服务器负载均衡
- 12-30教程:三万元搭建LINUX服务器集群
- 12-30Linux操作系统关于集群的安装与并行计算
- 12-30“懒惰”Linux:“懒惰”集群管理员的 11 个秘诀
- 12-30如何增加虚拟机ubuntu的硬盘
- 12-30linux 划分文件系统
- 12-30linux中fdisk的用法
