Oel5.8+Openfiler2.99安装Oracle11.2.0.4双节点 RAC

 

操作系统版本:ORACLE linux 5.8.19.6 (x86_x64)

ORACLE版本: ORACLE 11.2.0.4

GRID 版本:11.2.0.4

Openfiler版本:OPENFILER 2.99.2

以下是本系统的架构图

1:体系结构

以下是本系统(Oracle RAC 节点和网络存储服务器)的网络配置:

节点

 

节点名称

实例名称

数据库名称

RAM

操作系统

Mytest01

racdb1

racdb

1GB

OEL 5.8 - (x86_64)

Mytest02

racdb2

1GB

OEL 5.8 - (x86_64)

openfiler

 openfiler

 

512M

Openfiler 2.9 - (x86_64)

 

网络配置

节点名称

公共 IP 地址

专用 IP 地址

虚拟 IP 地址

SCAN 名称

SCAN IP 地址

Mytest01

192.168.136.130

192.168.2.130

192.168.0.130

rac-cluster-scan

192.168.0.150

Mytest02

192.168.136.140

192.168.2.140

192.168.0.1140

openfiler1

192.168.0.30

192.168.2.30

 

Oracle 软件组件

软件组件

操作系统用户

主组

辅助组

主目录

Oracle 基目录/Oracle 主目录

Grid Infrastructure

grid

oinstall

asmadminasmdbaasmoper

/home/grid

/u01/app/grid

/u01/app/11.2.0/grid

Oracle RAC

oracle

oinstall

dbaoperasmdba

/home/oracle

/u01/app/oracle

/u01/app/11.2.0./oracle/product/11.2.0/db_1

存储组件

存储组件

文件系统

卷大小

ASM 卷组名

ASM 冗余

Openfiler 卷名

OCR/表决磁盘

ASM

4GB

+CRS

External

racdb-crs1

数据库文件

ASM

5GB

+RAC_DATA

External

racdb-data1

本文仅作为绝对不可替代的文档。此处唯一的例外是供应商硬件的选择(即,计算机、网络设备和内置/外置硬盘驱动器)。确保您从供应商处购买的硬件在 Oracle Linux 5 Openfiler 2.9(最终版本)上受支持。

1. 安装 Linux 操作系统

在集群中的两个 Oracle RAC 节点上执行以下安装步骤。

本节总结了用于安装 Linux 操作系统的各个屏幕。本指南与适用于 x86_64 Oracle Enterprise Linux 5 Update 4 配合使用,并且遵循 Oracle 的如下建议:执行默认 RPM”安装类型以确保拥有成功进行 Oracle RDBMS 安装所需的 Linux 操作系统程序包。

在两个 Oracle RAC 节点上安装 Oracle Enterprise Linux 之前,应已安装好两个 NIC 接口卡,这两个接口卡将分别用于公共网络和专用网络。

根据您的硬件体系结构,下载适用于  x86_64 Oracle Enterprise Linux 5 Update 8 的以下 ISO 映像。

1.1 64 (x86_64) 安装  

下载 Oracle Enterprise Linux 操作系统之后,解压缩每个文件。您将获得以下 ISO 映像,需要将其刻录到 CD 上:

如果 Linux RAC 节点安装了 DVD,您可能会发现使用如下的单个 DVD 映像更为方便:

解压缩该单个 DVD 映像文件后将其刻录到一张 DVD 中:

如果您将以上 ISO 文件下载到 MS Windows 计算机,可以使用多种方法将这些映像(ISO 文件)刻录到一张 CD/DVD 上。您可能很熟悉这个过程,并且已经拥有合适的软件,可以将映像刻录到 CD/DVD。如果您不熟悉这个过程,并且没有将映像刻录到 CD/DVD 所需的软件,这里提供了两个软件程序包(实际上有许多个)供您使用:

 

下载 Oracle Enterprise Linux 映像(ISO 文件)并将其刻录到 CD/DVD 后,将 OEL 1 号盘插入第一个服务器(在本示例中是 ilearndb1),打开电源,然后按照以下说明回应安装屏幕的提示。在第一个节点上安装完 Linux 后,在第二个节点上执行相同的 Linux 安装,但将节点名 ilearndb1 替换为 ilearndb2 并设定另一个合适的 IP 地址。

1.1.1引导屏幕

第一个屏幕是 Oracle Enterprise Linux 引导屏幕。在 boot:提示符处按 [Enter] 键启动安装过程。

1.1.2介质测试

当要求测试 CD 介质时,用 Tab 键切换到 [Skip] 并按 [Enter] 键。如果有错误,介质刻录软件应该已经向我们发出警告。在几秒钟后,安装程序将会检测视频卡、显示器和鼠标。然后安装程序进入 GUI 模式。

1.1.3欢迎使用 Oracle Enterprise Linux

在欢迎屏幕上,单击 [Next] 继续。

1.1.4语言/键盘选项

接下来的两个屏幕提示您进行语言和键盘设置。请为您的配置作出合适的选择。

1.1.5检测以前的安装

注意,如果安装程序检测到以前版本的 Oracle Enterprise Linux,它将询问您是“Install Enterprise Linux”还是“Upgrade an existing Installation”。始终选择“Install Enterprise Linux”

1.1.6磁盘分区设置

选中 [Remove all partitions on selected drives and create default layout],选中 [Review and modify partitioning layout] 选项。单击 [Next] 继续。

此时会显示一个对话窗口,询问您是否真的要删除所有 Linux 分区。单击 [Yes] 回复这一警告。

1.1.7分区

随后安装程序将允许您查看(如果需要还可以修改)它自动选择的磁盘分区。对于大多数自动布局,安装程序将为 /boot 分配 100MB 空间,为交换分区分配 RAM 的双倍数量(系统 RAM <= 2,048MB 时)或 RAM 的同等数量(系统 RAM > 2,048MB 时),而将剩余空间分配给根 (/) 分区。从 RHEL 4 开始,安装程序将创建与刚才提到的相同的磁盘配置,但将使用逻辑卷管理器 (LVM) 创建它们。例如,它将第一个硬盘驱动器(我的配置使用 /dev/sda)划分为两个分区 一个用于 /boot 分区 (/dev/sda1),而磁盘的剩余部分专用于 LVM 指定的 VolGroup00 (/dev/sda2)。然后,将 LVM 卷组 (VolGroup00) 划分为两个 LVM 分区 一个用于根文件系统 (/),另一个用于交换分区。

在分区阶段,主要是要确保为 Oracle 分配了足够的交换空间(可用 RAM 的倍数)。下面是 Oracle 的最小交换空间要求:

 

可用 RAM

所需交换空间

介于 1,024MB 2,048MB 之间

RAM 大小的 1.5

介于 2,049MB 8,192MB 之间

RAM 大小相同

超过 8,192MB

RAM 大小的 0.75

 

 

就本安装而言,我将接受所有自动选用的大小。(包括 5,952MB 的交换空间,因为我安装了 4GB RAM。)

如果出于任何原因,自动布局无法配置足够数量的交换空间,您可以通过此屏幕轻松地进行更改。要增加交换分区的大小,单击 [Edit] 编辑卷组 VolGroup00。这将显示“Edit LVM Volume Group:VolGroup00”对话框。首先,单击 [Edit] 进行编辑,减少根文件系统 (/) 的大小(减少的数量是您要添加到交换分区的数量)。例如,要为交换分区添加 512MB 的空间,您需要将根文件系统的大小减少 512MB(即,36,032MB - 512MB = 35,520MB)。现在,将您从根文件系统减少的空间 (512MB) 添加到交换分区。完成后,单击“Edit LVM Volume Group:VolGroup00”对话框中的 [OK]

如果您对磁盘布局满意,单击 [Next] 继续。

1.1.8引导加载程序配置

安装程序默认情况下将使用 GRUB 引导加载程序。要使用 GRUB 引导加载程序,接受所有默认值并单击 [Next] 继续。

1.1.9网络配置

在开始安装操作系统之前,我已确认在每个 Linux 计算机上安装了两个 NIC 接口(卡)。本屏幕应该已经成功地检测到每个网络设备。由于我们要在该计算机上安装 Oracle 数据库,因此需要对网络配置进行一些更改。当然,您在此处的设置取决于您的网络配置。关键的一点是永远不要使用 DHCP 配置该计算机,因为该机算机将用作驻留 Oracle 数据库服务器的主机。您需要使用静态 IP 地址配置该计算机。您还需要使用实际主机名配置服务器。

首先,确保将每个网络设备设置为 [Active on boot]。默认情况下,安装程序可能选择不激活 eth1

接下来,单击 [Edit],按照以下方法对 eth0 eth1 进行编辑。验证已选中“Enable IPv4 support”选项。单击选中“Manual configuration”单选按钮可取消选中“Dynamic IP configuration (DHCP)”选项,然后为您的环境配置一个静态 IP 地址和网络掩码。单击取消选中“Enable IPv6 support”选项。您可能要为本指南中的 eth0 eth1 使用不同的 IP 地址,这没有问题。可以将 eth1(互连)置于不同于 eth0(公共网络)的子网中:

eth0

- 选中 [Enable IPv4 support] 选项

- 取消选中 [Dynamic IP configuration (DHCP)] 选项 (选择人工配置)

   IPv4 地址:192.168.0.18

   前缀(网络掩码):255.255.255.0

- 取消选中 [Enable IPv6 support] 选项

eth1

- 选中 [Enable IPv4 support] 选项

- 取消选中 [Dynamic IP configuration (DHCP)] 选项 (选择人工配置)

   IPv4 地址:192.168.2.18

   前缀(网络掩码):255.255.255.0

- 取消选中 [Enable IPv6 support] 选项

接着,手动设置主机名。我对第一个节点使用ilearndb1,对第二个节点使用ilearndb2。然后提供您的网关和 DNS 服务器,最后关闭该对话框。

1.1.10时区选择

为您的环境选择适当的时区,然后单击 [Next] 继续。

1.1.11设置根口令

选择一个根口令,然后单击 [Next] 继续。

1.1.12程序包安装默认值

默认情况下,Oracle Enterprise Linux 将安装一台典型服务器所需的大部分软件。但成功安装 Oracle 软件还需要若干其他程序包 (RPM)。运行安装程序时,您可以选择“Customize software”添加 RPM 分组,如“Development Libraries”“Legacy Library Support”。添加这样的 RPM 分组不成问题。然而,取消选择任何默认的 RPM”分组或单个的 RPM 可能会导致 Oracle Grid Infrastructure Oracle RAC 安装尝试失败。

对于本文,选中 [Customize now] 单选按钮,然后单击 [Next] 继续。

您可以在这里选择要安装的程序包。Oracle 软件需要的大部分程序包都集中在程序包组中(即 Application -> Editors)。由于这些节点上将驻留 Oracle Grid Infrastructure Oracle RAC 软件,请验证至少选择安装以下程序包组。注意,对于许多 Linux 程序包组,并不是所有与该组关联的程序包都被选择进行安装。(选择一个程序包组之后,请注意“Optional packages”按钮。)因此,尽管选择了安装该程序包组,但 Oracle 需要的某些程序包还是没有安装。实际上,Oracle 需要的某些程序包不属于任何 可用的程序包组(例如 libaio-devel)。不要担心。下一节将提供适用于 Oracle Enterprise Linux 5 Oracle Grid Infrastructure 11g 2 版和 Oracle RAC 11g 2 版所需程序包的完整列表。安装操作系统之后,需要从 Oracle Enterprise Linux CD 手动安装这些程序包。现在,安装以下程序包组:

  • Desktop Environments
    • GNOME Desktop Environment
  • Applications
    • Editors
    • Graphical Internet
    • Text-based Internet
  • Development
    • Development Libraries
    • Development Tools
    • Legacy Software Development
  • Servers
    • Server Configuration Tools
  • Base System
    • Administration Tools
    • Base
    • Java
    • Legacy Software Support
    • System Tools
    • X Window System

除了上述程序包外,还可选择您希望为此节点安装的任何其他程序包,请记住,不要取消选择任何默认 RPM 程序包。选择要安装的程序包之后,单击 [Next] 继续。

1.1.13准备安装

该屏幕本质上是一个确认屏幕。单击 [Next] 开始安装。如果您使用 CD 安装 Oracle Enterprise Linux,在安装过程中,系统会根据您选择安装的程序包来要求您更换 CD

1.1.14恭喜

大功告成。您已经在第一个节点 (ilearndb1) 上成功安装了 Oracle Enterprise Linux。安装程序将从 CD-ROM 驱动器中弹出 CD/DVD。取出 CD/DVD,单击 [Reboot] 重新引导系统。

1.1.15安装后向导欢迎屏幕

当系统第一次引导进入 Oracle Enterprise Linux 时,将为您显示另一个 Welcome 屏幕,进入“Post Installation Wizard”。安装后向导允许您进行最终的 O/S 配置设置。在“Welcome”屏幕上,单击 [Forward] 继续。

1.1.16许可协议

阅读许可协议。选择“Yes, I agree to the License Agreement”,然后单击 [Forward] 继续。

1.1.16防火墙

在该屏幕上,确保选中 [Disabled] 选项,然后单击 [Forward] 继续。

系统将显示一个警告对话框,提示您未设置防火墙。显示该对话框之后,单击 [Yes] 继续。

1.1.17SELinux

SELinux 屏幕上,选中 [Disabled] 选项,然后单击 [Forward] 继续。

系统将显示一个警告对话框,提示您更改 SELinux 设置需要重新引导系统以便重新标记整个文件系统。显示该对话框之后,单击 [Yes] 确认在第一次引导(安装后向导)完成后将重新引导系统。

1.1.18Kdump

接受 Kdump 屏幕上的默认设置(禁用),然后单击 [Forward] 继续。

1.1.19日期和时间设置

如果需要,调整日期和时间设置,然后单击 [Forward] 继续。

1.1.20创建用户

如果需要,创建其他(非 oracle)操作系统用户帐户,然后单击 [Forward] 继续。对于本文,我不会创建任何其他操作系统帐户。在本指南稍后我将创建“grid”“oracle”用户帐户。

如果您选择不定义任何其他操作系统用户帐户,单击 [Continue] 确认警告对话框。

1.1.21声卡

只有当向导检测到声卡时,才会出现该屏幕。在声卡屏幕上,单击 [Forward] 继续。

1.1.22其他 CD

“Additional CDs”屏幕上,单击 [Finish] 继续。

1.1.23重新引导系统

由于我们更改了 SELinux 选项(更改为 disabled),系统将提示重新引导系统。单击 [OK] 重新引导系统以便正常使用。

1.1.24登录屏幕

重新引导计算机之后,将为您显示登录屏幕。使用“root”用户帐户和在安装期间提供的口令登录。

在第二个节点上进行相同的安装

在第一个节点上安装完 Linux 后,在第二个节点 (ilearndb2) 上重复上述步骤。确保计算机名和网络进行了正确配置。在我的安装中, ilearndb2 的配置如下:

首先,确保将每个网络设备设置为 [Active on boot]。安装程序可能选择不激活 eth1

接下来,单击 [Edit],按照以下方法对 eth0 eth1 进行编辑。验证已选中“Enable IPv4 support”选项。单击选中“Manual configuration”单选按钮可取消选中“Dynamic IP configuration (DHCP)”选项,然后为您的环境配置一个静态 IP 地址和网络掩码。单击取消选中“Enable IPv6 support”选项。您可能要为本指南中的 eth0 eth1 使用不同的 IP 地址,这没有问题。可以将 eth1(互连)置于不同于 eth0(公共网络)的子网中:

eth0

- 选中 [Enable IPv4 support] 选项

- 取消选中 [Dynamic IP configuration (DHCP)] 选项 (选择人工配置)

   IPv4 地址:192.168.0.19

   前缀(网络掩码):255.255.255.0

- 取消选中 [Enable IPv6 support] 选项

eth1

- 选中 [Enable IPv4 support] 选项

- 取消选中 [Dynamic IP configuration (DHCP)] 选项 (选择人工配置)

   IPv4 地址:192.168.2.19

   前缀(网络掩码):255.255.255.0

- 取消选中 [Enable IPv6 support] 选项

接着,手动设置您的主机名。我对第二个节点使用“ilearndb2”。然后提供您的网关和 DNS 服务器,最后关闭该对话框。

 

2. 安装 Oracle RAC 所需的 Linux 程序包

在集群中的两个 Oracle RAC 节点上安装以下必需的 Linux 程序包。

安装 Enterprise Linux 之后,下一步是验证并安装 Oracle Clusterware Oracle RAC 所需的所有程序包 (RPM)Oracle Universal Installer (OUI) 将在安装期间在计算机上执行检查,以检验是否满足相应的操作系统程序包要求。要确保这些检查成功完成,请在开始安装 Oracle 之前查看本节中说明的软件要求。

尽管许多 Oracle 必需的程序包已经在 Enterprise Linux 安装期间安装,但还缺少一些程序包,因为它们在程序包组中被视为可选,或者根本不存在于任何程序包组中!

本节中列出的程序包(或更高版本)是 Oracle Enterprise Linux 5 平台上运行的 Oracle Grid Infrastructure 11g 2 版和 Oracle RAC 11g 2 版所必需的。 

64 (x86_64) 安装

  • binutils-2.17.50.0.6
  • compat-libstdc++-33-3.2.3
  • compat-libstdc++-33-3.2.332 位)
  • elfutils-libelf-0.125
  • elfutils-libelf-devel-0.125
  • elfutils-libelf-devel-static-0.125
  • gcc-4.1.2
  • gcc-c++-4.1.2
  • glibc-2.5-24
  • glibc-2.5-2432 位)
  • glibc-common-2.5
  • glibc-devel-2.5
  • glibc-devel-2.532 位)
  • glibc-headers-2.5
  • ksh-20060214
  • libaio-0.3.106
  • libaio-0.3.10632 位)
  • libaio-devel-0.3.106
  • libaio-devel-0.3.10632 位)
  • libgcc-4.1.2
  • libgcc-4.1.232 位)
  • libstdc++-4.1.2
  • libstdc++-4.1.232 位)
  • libstdc++-devel 4.1.2
  • make-3.81
  • sysstat-7.0.2
  • unixODBC-2.2.11
  • unixODBC-2.2.1132 位)
  • unixODBC-devel-2.2.11
  • unixODBC-devel-2.2.1132 位)

上面列出的每个程序包都可以在 Oracle Enterprise Linux 5 - (x86_64) CD 1 CD2 CD3 CD 4 CD 中找到。尽管可以查询每个单独的程序包以确定缺少并需要安装哪个程序包,但更简单的方法是针对这四个 CD 运行 rpm -Uvh PackageName 命令,如下所示。对于已经存在并且是最新版本的程序包,RPM 命令将忽略安装,并在控制台上打印警告消息,表明该程序包已经安装。

 # From Enterprise Linux 5.4 (x86_64)- [CD #1]

mkdir -p /media/cdrom

mount -r /dev/cdrom /media/cdrom

cd /media/cdrom/Server

rpm -Uvh binutils-2.*

rpm -Uvh elfutils-libelf-0.*

rpm -Uvh glibc-2.*

rpm -Uvh glibc-common-2.*

rpm -Uvh ksh-2*

rpm -Uvh libaio-0.*

rpm -Uvh libgcc-4.*

rpm -Uvh libstdc++-4.*

rpm -Uvh make-3.*

cd /

eject

 

# From Enterprise Linux 5.4 (x86_64) - [CD #2]

mount -r /dev/cdrom /media/cdrom

cd /media/cdrom/Server

rpm -Uvh elfutils-libelf-devel-*

rpm -Uvh gcc-4.*

rpm -Uvh gcc-c++-4.*

rpm -Uvh glibc-devel-2.*

rpm -Uvh glibc-headers-2.*

rpm -Uvh libstdc++-devel-4.*

rpm -Uvh unixODBC-2.*

cd /

eject

 

# From Enterprise Linux 5.4 (x86_64) - [CD #3]

mount -r /dev/cdrom /media/cdrom

cd /media/cdrom/Server

rpm -Uvh compat-libstdc++-33*

rpm -Uvh libaio-devel-0.*

rpm -Uvh unixODBC-devel-2.*

cd /

eject

 

# From Enterprise Linux 5.4 (x86_64) - [CD #4]

mount -r /dev/cdrom /media/cdrom

cd /media/cdrom/Server

rpm -Uvh sysstat-7.*

cd /

eject

 

3. 网络配置

在集群中的两个 Oracle RAC 节点上执行下列网络配置。

尽管我们在 Linux 安装期间进行了一些网络配置,但不要跳过此节,这很重要,因为此节包含了重要的检查步骤,可以检查您是否拥有集群安装的 Oracle Grid Infrastructure 所需的网络硬件和互联网协议 (IP) 地址。

网络硬件要求

以下为该网络配置的硬件要求列表:

  • 每个 Oracle RAC 节点至少必须有两个网络适配器(即网络接口卡 (NIC)):一个用于公共网络接口,另一个用于专用网络接口(互连)。要对公共网络或专用网络使用多个 NICOracle 建议采用 NIC 绑定。对公共网络和专用网络使用不同的绑定(即,对公共网络使用 bond0,对专用网络使用 bond1),这是因为在安装过程中,每个接口要么定义为公共接口,要么定义为专用接口。本文不讨论 NIC 绑定。
  • 每个网络中网络适配器的相关公共接口名称在所有节点上都应相同,网络适配器的相关专用接口名称在所有节点上都应相同。  

例如,对于我们的两节点集群,不能这样配置网络适配器:在 ilearndb1 配置 eth0 作为公共接口,而在 ilearndb2 上却配置 eth1 作为公共接口。公共接口名称必须相同,因此,必须在两个节点上均配置 eth0 作为公共接口。同样,应在相同的网络适配器上配置专用接口。如果 eth1 ilearndb1 的专用接口,则 eth1 必须是 ilearndb2 的专用接口。

  • 对于公共网络,每个网络适配器必须支持 TCP/IP
  • 对于专用网络,互连必须支持用户数据报协议 (UDP),使用支持 TCP/IP(最小要求为 1 Gb 以太网)的高速网络适配器和交换机。

 

UDP Oracle RAC 的默认互连协议,TCP Oracle Clusterware 的互连协议。对于此互连,必须使用一个交换机。Oracle 建议您使用一个专用交换机。  

对于互连,Oracle 不支持令牌环和交叉电缆。

  • 对于专用网络,所有指定互连接口的端点在网络上必须完全可达。每个节点均应连接到所有的专用网络接口。可以使用 ping 命令测试一个互连接口是否可达。
  • Oracle Grid Infrastructure 的安装过程中,系统都会要求您标识 OUI 在您的集群节点上检测到的每个网络接口计划使用方式。必须将每个接口标识为 public interfaceprivate interface not used,并且必须对 Oracle Clusterware Oracle RAC 使用相同的专用接口。  

可将若干独立的接口绑定为一个公共接口,这样可在某个 NIC 出现故障时提供冗余性。但是,Oracle 建议您不要为 Oracle Clusterware Oracle RAC 创建不同的接口。如果您对专用互连使用多个 NICOracle 建议您使用 NIC 绑定。请注意,多个专用接口提供负载平衡,但不提供故障切换功能,只有将它们绑定在一起时才提供故障切换功能。

Oracle Clusterware 11g 2 版开始,无需再为互连提供专用名称或 IP 地址。标识为专用的子网上的 IP 地址将被分配作为集群成员节点的专用 IP 地址。无需在 hosts 目录中手动配置这些地址。如果需要针对互连进行名称解析,可在 hosts 文件或 DNS 上配置专用 IP 名称。而 Oracle Clusterware 会为安装期间定义为专用接口的那个接口(如 eth1 分配互连地址,并将该地址分配给用作专用子网的那个子网。实际上,在本指南中,我会继续在每个节点包括一个专用名称和 IP 地址以用于 RAC 互连。这在专用网络上提供了自我文档编制的方法和一组端点,可供故障排除之用:

192.168.2.18   ilearndb1-priv

192.168.2.19   ilearndb2-priv

  • 在使用 iSCSI 进行网络存储的生产环境中,我们强烈建议使用 TCP/IP 卸载引擎 (TOE) 卡配置第三个网络接口(如 eth2)作为冗余接口来处理这种存储流量。为简单起见,本文中的配置是让 RAC 专用互连接口 (eth1) 所属的网络同时承载 iSCSI 网络存储流量。在同一网络接口上同时处理 Oracle RAC iSCSI 存储流量和缓存融合流量使我们的测试系统成本低廉,但永远不要考虑在生产环境中使用该方法。

TOE 的基本用意是将 TCP/IP 协议的处理工作从主机处理器卸载到适配器上的硬件或系统中。TOE 通常内嵌在网络接口卡 (NIC) 或主机总线适配器 (HBA) 中,用于减少 CPU 和服务器 I/O 子系统上的 TCP/IP 处理工作量以提高总体性能。

3.1分配 IP 地址

记得我们说过,每个节点至少需要配置两个网络接口,一个使用专用 IP 地址,另一个使用公共 IP 地址。在 Oracle Clusterware 11g 2 版之前,网络管理员需要手动分配所有的 IP 地址,要使用静态 IP 地址 绝不使用 DHCP。这会包括节点的公共 IP 地址、RAC 互连地址、虚拟 IP 地址 (VIP),以及 11g 2 版中新增的单客户端访问名称 (SCAN) IP 地址。实际上,在我以前的所有文章中,我都会强调绝不要使用 DHCP 来分配任何这些 IP 地址。在 11g 2 版中,您现在可以选择通过以下两种方法为每个 Oracle RAC 节点分配 IP 地址 使用 DHCP 网格命名服务 (GNS),或者使用 DNS 手动分配静态 IP 地址的传统方法。

3.2网格命名服务 (GNS)

Oracle Clusterware 11g 2 版开始,引入了另一种分配 IP 地址的方法,即网格命名服务 (GNS)。该方法允许使用 DHCP 分配所有专用互连地址以及大多数 VIP 地址。GNS DHCP Oracle 的新的网格即插即用 (GPnP) 特性的关键要素,如 Oracle 所述,该特性使我们无需配置每个节点的数据,也不必具体地添加和删除节点。通过实现对集群网络需求的自我管理,GNS 实现了动态 网格基础架构。与手动定义静态 IP 地址相比,使用 GNS 配置 IP 地址确实有其优势并且更为灵活,但代价是增加了复杂性,该方法所需的一些组件未在这个构建经济型 Oracle RAC 的指南中定义。例如,为了在集群中启用 GNS,需要在公共网络上有一个 DHCP 服务器,我认为这个 DHCP 服务器超出了本文的讨论范围。

3.3手动分配静态 IP 地址 DNS 方法)

如果选择不使用 GNS,在 Oracle Clusterware 11g 2 版中仍可手动定义静态 IP 地址,本文将使用此方法分配所有需要的 Oracle Clusterware 联网组件(节点的公共 IP 地址、RAC 互连地址、虚拟 IP 地址以及 SCAN IP 地址)。

您会注意到本节的标题包含了“DNS 方法这样的字眼。Oracle 建议在开始安装 Oracle Grid Infrastructure之前,在域名服务器 (DNS) 中手动配置静态 IP 地址。然而,在构个经济型 Oracle RAC 时,您并非总是可以访问 DNS 服务器。在 11g 2 版之前,这不是一个很大的障碍,因为可以在所有节点的 host 文件 (/etc/hosts) 中定义每个 IP 地址而不必使用 DNS。这包括节点的公共 IP 地址、RAC 互连地址和虚拟 IP 地址 (VIP)

然而,事情在 Oracle Grid Infrastructure 11g 2 版中有了些许变化。

让我们从 RAC 专用互连开始。在 Oracle Grid Infrastructure 的安装过程中无需再为互连提供 IP 地址或专用名称(即 ilearndb1-priv ilearndb2-priv)。现在,Oracle Clusterware 为安装期间定义为专用接口的接口(如 eth1)分配互连地址,并将该地址分配给用作专用子网的那个子网(本文中为 192.168.2.0)。如果需要针对互连进行名称解析,可在 hosts 文件或 DNS 上配置专用 IP 名称。实际上,在本指南中,我会继续在每个节点包括一个专用名称和 IP 地址以用于 RAC 互连。这在专用网络上提供了自我文档编制的方法和一组端点,可供故障排除之用:

192.168.2.18   ilearndb1-priv

192.168.2.19   ilearndb2-priv

 

11g 2 版中,节点的公共 IP 地址和虚拟 IP 地址 (VIP) 保持不变。Oracle 建议定义每个节点的名称和 IP 地址(将来要通过 DNS 进行解析)并将该定义包括每个节点的 hosts 文件中。对于 Oracle Grid Infrastructure 的当前版本和以前版本,Oracle Clusterware 毫无疑问可以仅用一个 hosts 文件来解析节点的公共 IP 地址和 VIP

192.168.0.18   ilearndb1

192.168.0.118   ilearndb1-vip

192.168.0.19   ilearndb2

192.168.0.119   ilearndb2-vip

单客户端访问名称 (SCAN) 虚拟 IP 11g 2 版的一个新特性,看起来该特性引发了很多讨论!必须在 GNS DNS 中配置 SCAN 以便循环解析为三个地址(建议的数量)或至少一个地址。如果您选择不使用 GNSOracle 会告诉您,SCAN 必须通过 DNS 来解析而不是通过 hosts 文件来解析。如果不能通过 DNS(或 GNS)解析 SCANOracle Grid Infrastructure 安装过程中的集群验证实用程序检查将失败。如果您不能访问 DNS,我在配置 SCAN 而不使用 DNS 一节提供了一种简单的变通方法。该方法需要在安装 Oracle Grid Infrastructure 之前修改 nslookup 实用程序。

3.4集群的单客户端访问名称 (SCAN)

如果您曾经通过添加新节点来扩展 Oracle RAC 集群(或者通过删除节点来缩小 RAC 集群),您就会了解这种痛苦 遍历所有客户端,更新每个客户端的 SQL*Net JDBC 配置以反映这个新增或删除的节点!为解决此问题,Oracle 11g 2 版引入了一个新特性,即单客户端访问名称(简 称为 SCAN)。SCAN 这个新特性为客户端提供了单一的主机名,用于访问集群中运行的 Oracle 数据库。如果您在集群中添加或删除节点,使用 SCAN 的客户端无需更改自己的 TNS 配置。无论集群包含哪些节点,SCAN 资源及其关联的 IP 地址提供了一个稳定的名称供客户端进行连接使用。在 Oracle Grid Infrastructure 安装过程的询问阶段,系统会要求您提供主机名和最多三个 IP 地址以便用于 SCAN 资源。为了获得较高的可用性和可伸缩性,Oracle 建议您对 SCAN 名称进行配置,以便解析为三个 IP 地址。SCAN 必须至少解析为一个地址。

SCAN 虚拟 IP 名称类似于节点的虚拟 IP 地址所使用的名称,如 ilearndb1-vip。然而,与虚拟 IP 不同的是,SCAN 与整个集群相关联,而不是与一个节点相关联,它可与多个 IP 地址相关联,而不是只与一个地址相关联。注意,SCAN 地址、虚拟 IP 地址和公共 IP 地址必须属于同一子网。

应该将 SCAN 配置为可由集群中的网格命名服务 (GNS) 进行解析,或由域名服务 (DNS) 解析进行解析。

在本文中,我会将 SCAN 配置为使用 DNS 方法仅解析为一个手动配置的静态 IP 地址(但不在 DNS 中对其进行实际定义):

 192.168.0.120   ilearndb-cluster-scan

3.5配置公共网络和专用网络

在我们的双节点示例中,需要在两个节点上配置网络,以访问公共网络及其专用互连。

Enterprise Linux 中配置网络设置的最简单方法是使用“Network Configuration”程序。Network Configuration 是一个 GUI 应用程序,可以从命令行以“root”用户帐户进行启动,如下所示:

[root@ilearndb1 ~]# /usr/bin/system-config-network &                      

使用 Network Configuration 应用程序,您需要配置两个 NIC 设备以及 /etc/hosts 文件。您可以使用 Network Configuration GUI 完成这两个任务。注意,两个节点的 /etc/hosts 设置相同,而且我删除了与 IPv6 有关的所有项。例如:

::1             localhost6.localdomain6 localhost6                        

我们的示例 Oracle RAC 配置将使用以下网络设置:

Oracle RAC 节点 1 — (ilearndb1)

设备

IP 地址

子网

网关

用途

eth0

192.168.0.18

255.255.255.0

192.168.81.1

ilearndb1 连接到公共网络

eth1

192.168.0.118

255.255.255.0

 

ilearndb1(互连)连接到 ilearndb2 (ilearndb2-priv)

/etc/hosts

 # Do not remove the following line, or various programs # that require network functionality will fail. 

127.0.0.1        localhost.localdomain   localhost                                   

# Public Network - (eth0)

192.168.0.18    ilearndb1

192.168.0.19    ilearndb2 

 

# Private Interconnect - (eth1)

192.168.2.18    ilearndb1-priv

192.168.2.19    ilearndb2-priv 

 

# Public Virtual IP (VIP) addresses - (eth0:1)

192.168.0.118    ilearndb1-vip

192.168.0.119    ilearndb2-vip 

 

# Single Client Access Name (SCAN)

192.168.0.120    ilearndb-cluster-scan 

 

# Private Storage Network for Openfiler - (eth1)

192.168.0.30    openfiler1

192.168.2.30    openfiler1-priv                            

 

Oracle RAC 节点 2 — (ilearndb2)

设备

IP 地址

子网

网关

用途

eth0

192.168.0.19

255.255.255.0

192.168.81.1

ilearndb2 连接到公共网络

eth1

192.168.2.19

255.255.255.0

 

ilearndb2(互连)连接到 ilearndb1 (ilearndb1-priv)

/etc/hosts

 # Do not remove the following line, or various programs # that require network functionality will fail. 

127.0.0.1        localhost.localdomain   localhost                                   

# Public Network - (eth0)

192.168.0.18    ilearndb1

192.168.0.19    ilearndb2 

 

# Private Interconnect - (eth1)

192.168.2.18    ilearndb1-priv

192.168.2.19    ilearndb2-priv 

 

# Public Virtual IP (VIP) addresses - (eth0:1)

192.168.0.118    ilearndb1-vip

192.168.0.119    ilearndb2-vip 

 

# Single Client Access Name (SCAN)

192.168.0.120    ilearndb-cluster-scan 

 

# Private Storage Network for Openfiler - (eth1)

192.168.0.30    openfiler1

192.168.2.30    openfiler1-priv                        

以下屏幕截图只显示了 Oracle RAC 节点 1 (ilearndb1)。确保对两个 Oracle RAC 节点进行了所有适当的网络设置。

3.6确保 RAC 节点名没有出现在环回地址中

确保 /etc/hosts 文件的环回地址中不包含节点名(ilearndb1 ilearndb2)。如果计算机名出现在环回地址条目中,如下所示:

 127.0.0.1  ilearndb1 localhost.localdomain localhost

                       

需要将其删除,如下所示:

 127.0.0.1 localhost.localdomain localhost

如果 RAC 节点名出现在环回地址中,您在 RAC 安装期间将收到以下错误消息:

      ORA-00603: ORACLE server session terminated by fatal error                        

或者

      ORA-29702: error occurred in Cluster Group Service operation                        

3.7检查并关闭 UDP ICMP 拒绝

Linux 安装期间,我曾说过不配置防火墙选项。默认情况下,安装程序会选中配置防火墙的选项。这使我吃了好几次苦头,因此我要反复确认未配置防火墙选项,并确保 udp ICMP 过滤功能已关闭。

如果防火墙阻止或拒绝了 UDP ICMPOracle Clusterware 软件将在运行几分钟之后崩溃。如果 Oracle Clusterware 进程出现故障,您的 <计算机名>_evmocr.log 文件中将出现类似以下的内容:

08/29/2005 22:17:19

oac_init:2: Could not connect to server, clsc retcode = 9

08/29/2005 22:17:19

a_init:12!: Client init unsuccessful : [32]

ibctx:1:ERROR: INVALID FORMAT

proprinit:problem reading the bootblock or superbloc 22

                       

                     

如果遇到此类错误,解决方法是删除 UDP ICMP (iptables) 拒绝规则,或者只需关闭防火墙选项。之后,Oracle Clusterware 软件将开始正常工作而不会崩溃。以下命令应以 root 用户帐户的身份执行:

  1. 检查以确保关闭了防火墙选项。如果防火墙选项已停用(如下面的示例所示),则不必继续执行下面的步骤。

[root@ilearndb1 ~]# /etc/rc.d/init.d/iptables status

Firewall is stopped.

  1. 如果防火墙选项已启用,您首先需要手动禁用 UDP ICMP 拒绝:

 [root@ilearndb1 ~]# /etc/rc.d/init.d/iptables stop

Flushing firewall rules: [ OK ]

Setting chains to policy ACCEPT: filter [ OK ]

Unloading iptables modules: [ OK ]

  1. 然后,针对下一次服务器重新引导关闭 UDP ICMP 拒绝(应该始终被关闭):

 [root@ilearndb1 ~]# chkconfig iptables off          

               

4. 集群时间同步服务

在集群中的两个 Oracle RAC 节点上执行以下集群时间同步服务配置。

Oracle Clusterware 11g 2 版及更高版本要求在部署了 Oracle RAC 的集群的所有节点上实现时间同步。Oracle 提供了两种方法来实现时间同步:一种方法是配置了网络时间协议 (NTP) 的操作系统,另一种方法是新的 Oracle 集群时间同步服务 (CTSS)Oracle 集群时间同步服务 (ctssd) 旨在为那些 Oracle RAC 数据库无法访问 NTP 服务的组织提供服务。

NTP 的配置不在本文的讨论范围内,因此我们选择集群时间同步服务作为网络时间协议。

4.1配置集群时间同步服务 — (CTSS)

如果您想使用集群时间同步服务在集群中提供同步服务,需要卸载网络时间协议 (NTP) 及其配置。

要停用 NTP 服务,必须停止当前的 ntpd 服务,从初始化序列中禁用该服务,并删除 ntp.conf 文件。要在 Oracle Enterprise Linux 上完成这些步骤,以 root 用户身份在两个 Oracle RAC 节点上运行以下命令:

[root@ilearndb1 ~]# /sbin/service ntpd stop

[root@ilearndb1 ~]# chkconfig ntpd off

[root@ilearndb1 ~]# mv /etc/ntp.conf /etc/ntp.conf.original                      

还要删除以下文件:

 [root@ilearndb1 ~]# rm /var/run/ntpd.pid                      

此文件保存了 NTP 后台程序的 pid

当安装程序发现 NTP 协议处于非活动状态时,安装集群时间同步服务将以活动模式自动进行安装并通过所有节点的时间。如果发现配置了 NTP,则以观察者模式 启动集群时间同步服务,Oracle Clusterware 不会在集群中进行活动的时间同步。

在安装后,要确认 ctssd 处于活动状态,请作为网格安装所有者 (grid) 输入以下命令:

[grid@ilearndb1 ~]$ crsctl check ctss

CRS-4701: The Cluster Time Synchronization Service is in Active mode.

CRS-4702: Offset (in msec): 0

                     

4.2配置网络时间协议 (仅当不按如上所述使用 CTSS 时)

请注意,本指南将使用集群时间同步服务实现集群中的两个 Oracle RAC 节点的时间同步。提供此节仅出于说明目的,此节内容可供已设置为其域中使用 NTP 的组织使用。

如果您正在使用 NTP,并且愿意继续使用它而不是集群时间同步服务,那么您需要修改 NTP 初始化文件,在其中设置 -x 标志,这样可避免向后调整时间。完成此任务后,重启网络时间协议后台程序。

为了在 Oracle Enterprise LinuxRed Hat Linux Asianux 系统上完成此任务,编辑 /etc/sysconfig/ntpd 文件,添加 -x 标志,如下例所示:

 # Drop root to id 'ntp:ntp' by default.

OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid"

# Set to 'yes' to sync hw clock after successful ntpdate

SYNC_HWCLOCK=no

# Additional options for ntpdate

NTPDATE_OPTIONS=""

然后,重启 NTP 服务。

 # /sbin/service ntp restart                      

SUSE 系统上,修改配置文件 /etc/sysconfig/ntp,在其中进行以下设置:

 NTPD_OPTIONS="-x -u ntp"

用以下命令重启后台程序:

 # service ntp restart                      

5. 安装 Openfiler

在网络存储服务器 (openfiler1) 上执行以下安装。

在两个 Oracle RAC 节点上进行网络配置之后,下一步是将 Openfiler 软件安装到网络存储服务器 (openfiler1)。本文稍后会将网络存储服务器配置为 iSCSI 存储设备,以满足 Oracle Clusterware Oracle RAC 的所有共享存储需求。

Openfiler 构建于 rPath Linux 之上,它是一个基于浏览器的免费网络存储管理实用程序,可在一个框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN)。整个软件体系与许多开源应用程序(如 ApacheSambaLVM2ext3Linux NFS iSCSI Enterprise Target)相连接。Openfiler 将这些随处可见的技术组合到一个易于管理的小型管理解决方案中,该解决方案的前端是一个基于 Web 的功能强大的管理界面。

Openfiler 支持 CIFSNFSHTTP/DAV FTP,但是,我们将仅使用它的 iSCSI 功能为 Oracle RAC 11g 所需的共享存储组件实现低成本的 SAN。操作系统和 Openfiler 应用程序将安装在一个内置 SATA 磁盘上。另一个内置 73GB 15K SCSI 硬盘将被配置为一个卷组,用于满足所有共享磁盘存储需求。Openfiler 服务器将配置为使用该卷组进行基于 iSCSI 的存储,并且将在我们的 Oracle RAC 11g 配置中使用该卷组存储 Oracle Clusterware Oracle RAC 数据库所需的共享文件。

请注意,只要网络存储服务器 (Openfiler) 能够识别并具有足够的空间,任何类型的硬盘(内置或外置)都可用于数据库存储。例如,我已在 500GB 内置 SATA 磁盘上建立了一个额外的分区用于 iSCSI 目标,但决定在此例中使用速度更快的 SCSI 磁盘。

要了解有关 Openfiler 的更多信息,请访问其网站 http://www.openfiler.com/

5.1下载 Openfiler

根据您的硬件体系结构,使用以下链接下载适用于 x86 x86_64 Openfiler NAS/SAN Appliance 2.3 版(最终版)。本指南使用 x86_64。下载 Openfiler 之后,需要将 ISO 映像刻录到 CD

64 (x86_64) 安装

 

如果您将以上 ISO 文件下载到 MS Windows 计算机,可以使用多种方法将这些映像(ISO 文件)刻录到 CD。您可能很熟悉这个过程,甚至已经拥有合适的软件,可以将映像刻录到 CD。如果您不熟悉这个过程,并且没有将映像刻录到 CD 所需的软件,这里提供了两个软件程序包(实际上有许多个):

 

5.2安装 Openfiler

本节概述了用于安装 Openfiler 软件的各个屏幕。在本文中,我选择了使用所有默认选项安装 Openfiler。所需的唯一手动更改是为了配置本地网络设置。

安装完成之后,服务器将重新引导以确保启动并识别所需的所有组件、服务和驱动程序。重新引导之后,Openfiler 服务器将会发现所有外置硬盘驱动器(若已连接)。

有关更详细的安装说明,请访问 http://www.openfiler.com/learn/。但是,我建议使用下面提供的说明对该 Oracle RAC 11g 进行配置。

Openfiler 软件安装到网络存储服务器之前,应该先安装两个 NIC 接口(卡),连接并打开所有外置硬盘驱动器(如果您要使用外置硬盘驱动器)。

在下载并将 Openfiler ISO 映像(ISO 文件)刻录到 CD 之后,将该 CD 插入网络存储服务器(在本例中是 openfiler1),打开电源,并按照以下说明来回应安装屏幕的提示。

  1. 引导屏幕

第一个屏幕是 Openfiler 引导屏幕。在 boot:提示符处按 [Enter] 键启动安装过程。

  1. 介质测试

当要求测试 CD 介质时,用 Tab 键切换到 [Skip] 并按 [Enter] 键。如果有错误,介质刻录软件应该已经向我们发出警告。在几秒钟后,安装程序将会检测视频卡、显示器和鼠标。然后安装程序进入 GUI 模式。

  1. 欢迎使用 Openfiler NSA

在该欢迎屏幕上,单击 [Next] 继续。

  1. 键盘配置

下一个屏幕将提示您进行键盘设置。为您的配置作出合适的选择。

  1. 磁盘分区设置

下一个屏幕将询问是使用“Automatic Partitioning”还是“Manual Partitioning with Disk Druid”进行磁盘分区。虽然 Openfiler 官方文档建议使用手动分区,但我选择使用自动分区,因为我的示例配置较为简单。

选择 [Automatically partition] 并单击 [Next] 继续。

  1. 自动分区

如果以前在本机上安装了 Linux,则下一屏幕将询问您是要删除还是保留旧分区。选择 [Remove all partitions on this system] 选项。就我的示例配置而言,我选择了仅使用 500GB SATA 内置硬盘驱动器 [sda] 来进行操作系统和 Openfiler 应用程序的安装。我取消了对 73GB SCSI 内置硬盘驱动器的选择,因为在下一节中该磁盘将专门用于创建单个卷组,该卷组将用于 Oracle Clusterware Oracle RAC 的所有基于 iSCSI 的共享磁盘存储之需。

我还选中了 [Review (and modify if needed) the partitions created] 复选框。单击 [Next] 继续。

随后会显示一个对话窗口,询问您是否真的要删除所有分区。单击 [Yes] 回复这一警告。

  1. 分区

随后安装程序将允许您查看(如果需要还可以更改)它为您在上一屏中选择的硬盘自动选择的磁盘分区。在绝大多数情况下,安装程序将为 /boot 分配 100MB为交换分区分配足够量的空间,而将剩余空间分配给这个(这些)磁盘的根 (/) 分区。在本示例中,我对安装程序为 /dev/sda 建议的分区感到满意。

安装程序还将显示它所发现的任何其他内置硬盘。对于我的示例配置,安装程序发现了 73GB SCSI 内置硬盘作为 /dev/sdb。现在,我将删除此驱动器上的任何及所有分区(只有一个分区,/dev/sdb1)。在下一节,我将为该特定硬盘创建所需分区。

  1. 网络配置

在启动 Openfiler 安装之前,我已确认在网络存储服务器上安装了两个 NIC 接口(卡)。本屏幕应该已经成功地检测到每个网络设备。

首先,确保将每个网络设备设置为 [Active on boot]。默认情况下,安装程序可能选择不激活 eth1

接下来,单击 [Edit],按照以下方法对 eth0 eth1 进行编辑。您可能要为 eth0 eth1 使用不同的 IP 地址,没有问题。但是,您必须将 eth1(存储网络)配置为与 ilearndb1 ilearndb2 上的 eth1 位于同一子网中:

eth0

- 取消选中 [Configure using DHCP] 选项

- 选中 [Activate on boot]

- IP 地址:192.168.81.20

- 子网掩码:255.255.255.0

eth1

- 取消选中 [Configure using DHCP] 选项

- 选中 [Activate on boot]

- IP 地址:192.168.3.20

- 子网掩码:255.255.255.0

接着,手动设置您的主机名。我使用的主机名是openfiler1。然后提供您的网关和 DNS 服务器,最后关闭该对话框。

  1. 时区选择

下一个屏幕将允许您配置时区信息。为您的位置作出合适的选择。

  1. 设置根口令

选择一个根口令,然后单击 [Next] 继续。

  1. 准备安装

该屏幕本质上是一个确认屏幕。单击 [Next] 开始安装。

  1. 恭喜

大功告成。您已经成功地在网络存储服务器上安装了 Openfiler。安装程序将从 CD-ROM 驱动器中弹出 CD。取出 CD,单击 [Reboot] 重新引导系统。

如果在重新引导后一切都已成功,您现在应该看到文本登录屏幕和用于管理 Openfiler 服务器的 URL

  1. Openfiler 服务器上修改 /etc/hosts 文件

虽然并非必要,但我通常会将 /etc/hosts 文件的内容从一个 Oracle RAC 节点复制到新的 Openfiler 服务器。在测试集群网络时,这可以实现方便的名称解析。

6. 使用 Openfiler 配置 iSCSI

在网络存储服务器 (openfiler1) 上执行以下配置任务。

可以使用 Openfiler Storage Control Center(一个基于浏览器的工具,通过端口 446 上的 https 连接实现)执行 Openfiler 管理。例如:

 https://openfiler1.idevelopment.info:446/                     

Openfiler Storage Control Center 的主页,以管理员身份登录。Openfiler 的默认管理员登录凭证为:

 

  • Username openfiler
  • Password password

管理员看到的第一个页面是 [Status] / [System Information] 屏幕。

要将 Openfiler 用作 iSCSI 存储服务器,我们需要执行六个主要任务:设置 iSCSI 服务、配置网络访问、指定物理存储器并对其分区、创建新的卷组、创建所有逻辑卷,最后,为每个逻辑卷创建新的 iSCSI 目标。

6.1服务

要控制服务,我们使用 Openfiler Storage Control Center 并转到

[Services] /

[Manage Services]

 

 

6:启用 iSCSI Openfiler 服务

要启用 iSCSI 服务,单击“iSCSI target server”服务名称后面的“Enable”链接。之后,“iSCSI target server”状态应变为Enabled

ietd 程序将实现 iSCSI Enterprise Target 软件的用户级部分,以便在 Linux 上构建 iSCSI 存储系统。启用 iSCSI target 之后,我们应该能够通过 SSH 登录到 Openfiler 服务器,并且可看到 iscsi-target 服务正在运行:

[root@openfiler1 ~]# service iscsi-target status

ietd (pid 14243) is running...

6.2 网络访问配置

下一步是配置 Openfiler 中的网络访问,指定需要通过存储(专用)网络访问 iSCSI 卷的两个 Oracle RAC 节点(ilearndb1 ilearndb2)。注意,本节稍后将会创建 iSCSI 卷。另请注意,本步骤并不实际授予两个 Oracle RAC 节点访问 iSCSI 逻辑卷所需的相应权限。授予权限的操作将在本节稍后通过对每个新逻辑卷更新 ACL 来进行。

如同上一节,我们使用 Openfiler Storage Control Center 并转到

[System]

[Network Setup] 来完成网络访问配置。通过页面底部的

“Network Access Configuration”部分,管理员可以设置网络和/或主机以允许其访问 Openfiler appliance 导出的资源。就本文而言,我们希望单独添加两个 Oracle RAC 节点,而不是允许整个 192.168.2.0 网络访问 Openfiler 资源。

输入每个 Oracle RAC 节点时,请注意“Name”域只是一个逻辑名称,仅供参考。根据输入节点的惯例,我仅使用了为该 IP 地址定义的节点名称。接下来,在“Network/Host”域中输入实际节点时,始终使用其 IP 地址,即使其主机名已经在 /etc/hosts 文件或 DNS 中定义。最后,在我们的 C 类网络中输入实际主机时,使用子网掩码 255.255.255.255

记住,您要为集群中的每个 RAC 节点输入专用 网络 (eth1) IP 地址,这一点很重要。

下图显示了添加两个 Oracle RAC 节点后的结果:

Network Access Configuration

Delete

Name

Network/Host

Netmask

Type

ilearndb1-priv

192.168.2.18

255.255.255.255

Share

ilearndb2-priv

192.168.2.19

255.255.255.255

Share

窗体底端

 

 

7:为 Oracle RAC 节点配置 Openfiler 网络访问

6.3 物理存储

在本节中,我们将创建三个 iSCSI 卷,以供集群中的两个 Oracle RAC 节点用作共享存储。这将在连接到 Openfiler 服务器的内置 73GB 15K SCSI 硬盘驱动器上执行多个步骤。

存储设备(如内置 IDE/SATA/SCSI/SAS 磁盘、存储阵列、外置 USB 驱动器、外置 FireWire 驱动器或者任何其他存储设备)可以连接到 Openfiler 服务器,并供客户端使用。如果在操作系统级发现了这些设备,就可以使用 Openfiler Storage Control Center 设置和管理所有这些存储设备。

在本例中,我们有一个 73GB 的内置 SCSI 硬盘驱动器用于满足共享存储之需。在 Openfiler 服务器上,该驱动器显示为 /dev/sdb (MAXTOR ATLAS15K2_73SCA)。要看到该驱动器并启动 iSCSI 卷的创建过程,请从 Openfiler Storage Control Center 转到

[Volumes] /

[Block Devices]

Block Device Management

Edit Disk

Type

Description

Size

Label type

Partitions

/dev/sda

SCSI

ATA VBOX HARDDISK

8.00 GB

msdos

3 (view)

/dev/sdb

SCSI

ATA VBOX HARDDISK

8.00 GB

msdos

0 (view)

 

 

8Openfiler 物理存储 块设备管理

注意:Label type   msdos

6.3.1对物理磁盘进行分区

我们要执行的第一步是在 /dev/sdb 内置硬盘上创建一个主分区。单击 /dev/sdb 链接,我们会看到“Edit”“Create”选项,分别用于编辑和创建分区。由于我们将创建一个跨整个磁盘的主分区,因此可以将大多数选项保留为默认设置,唯一的修改是将Partition Type“Extended partition”更改为Physical volume。下面是我为了在 /dev/sdb 上创建主分区而指定的值:

6.3.2Create a partition in /dev/sdb

You can use ranges within the following extents: 

窗体顶端窗体底端

模式:Primary

分区类型:Physical volume

开始柱面:1

结束柱面:1044

现在,大小将显示 8 GB。要接受该设置,单击“Create”按钮。这将在我们的内置硬盘上生成一个新的分区 (/dev/sdb1)

Device

Type

Number

Start cyl

End cyl

Blocks

Size

Type

Delete

/dev/sdb1

Linux Physical Volume (0x8e)

1

1

1044

8385898

8.00 GB

Primary

Delete

sdb1 (100%)

 

 

9:对物理卷进行分区

6.4 卷组管理

下一步是创建卷组。我们将创建一个名为 ilearndbvg 的卷组,其中包含新创建的主分区。

Openfiler Storage Control Center 中转到

[Volumes] /

[Volume Groups]。我们将看到所有现有的卷组,或者什么也看不到(我们的情况就是这样)。在 Volume Group Management 屏幕中,输入新卷组的名称 (ilearndbvg),单击 /dev/sdb1 前面的复选框以选中该分区,最后单击Add volume group按钮。之后,我们会看到一个列表,其中显示出我们新创建的这个名为“ilearndbvg”的卷组:

10:创建了新卷组

6.5逻辑卷

现在,我们可以在新创建的卷组 (ilearndbvg) 中创建三个逻辑卷。

Openfiler Storage Control Center 中转到 [Volumes] / [Add Volume]。我们将看到新创建的卷组 (ilearndbvg) 及其块存储统计信息。该屏幕底部还提供了一个选项,用于在选定的卷组中创建一个新卷 (在“ilearndbvg”中创建一个卷)。使用该屏幕创建以下三个逻辑 (iSCSI) 卷。在创建每个逻辑卷之后,应用程序将转至“Manage Volumes”屏幕。然后,您需要单击后退到Add Volume”选项卡以创建下一个逻辑卷,直至三个 iSCSI 卷全部创建完毕:

iSCSI / 逻辑卷

卷名

卷描述

所需空间 (MB)

文件系统类型

ilearndb-crs1

ilearndb - ASM CRS Volume 1

2,208

iSCSI

ilearndb-data1

ilearndb - ASM Data Volume 1

33,888

iSCSI

ilearndb-fra1

ilearndb - ASM FRA Volume 1

33,888

iSCSI

实际上,我们已经创建了三个 iSCSI 磁盘,现在可以将它们呈现给网络上的 iSCSI 客户端(ilearndb1 ilearndb2)。“Manage Volumes”屏幕应如下所示:

 

11:新的 iSCSI 逻辑卷

6.6iSCSI 目标

现在,我们有了三个 iSCSI 逻辑卷。但是,为了使 iSCSI 客户端可以访问这些逻辑卷,首先需要为这三个卷中的每个卷创建一个 iSCSI 目标。每个 iSCSI 逻辑卷将映射 到一个特定的 iSCSI 目标,并将为两个 Oracle RAC 节点授予对该目标的相应网络访问权限。对于本文,在 iSCSI 逻辑卷和 iSCSI 目标之间将会有一一映射的关系。

创建和配置 iSCSI 目标的过程包括三步:创建一个唯一的目标 IQN(实质上是新的 iSCSI 目标的通用名称),将上一节中创建的一个 iSCSI 逻辑卷映射到新创建的 iSCSI 目标,最后,授予两个 Oracle RAC 节点访问该新 iSCSI 目标的权限。请注意,需要对上一节中创建的三个 iSCSI 逻辑卷中的每个卷都执行一次此过程

对于本文,下表列出了新的 iSCSI 目标名称(目标 IQN)及其将映射到的 iSCSI 逻辑卷:

iSCSI 目标/逻辑卷映射

目标 IQN

iSCSI 卷名

卷描述

iqn.2006-01.com.openfiler:ilearndb.crs1

ilearndb-crs1

ilearndb - ASM CRS Volume 1

iqn.2006-01.com.openfiler:ilearndb.data1

ilearndb-data1

ilearndb - ASM Data Volume 1

iqn.2006-01.com.openfiler:ilearndb.fra1

ilearndb-fra1

ilearndb - ASM FRA Volume 1

现在我们来创建三个新的 iSCSI 目标 为每个 iSCSI 逻辑卷创建一个。下面举例说明通过创建 Oracle Clusterware/ilearndb-crs1 目标 ( iqn.2006-01.com.openfiler:ilearndb.crs1) 来创建新的 iSCSI 目标时所需执行的三个步骤。这个三步过程需要对上表中列出的三个新 iSCSI 目标中的每一个都重复执行一遍。

6.7创建新目标 IQN

Openfiler Storage Control Center 中转到

[Volumes] /

[iSCSI Targets]。确保选择了灰色子选项卡Target Configuration。您可在此选项卡页中创建一个新的 iSCSI 目标。系统会自动生成一个默认值,作为新 iSCSI 目标的名称(常称为目标 IQN”)。

目标 IQN 的一个示例是iqn.2006-01.com.openfiler:tsn.ae4683b67fd3

 

12:创建新的 iSCSI 目标:默认目标 IQN

我喜欢用更具含义的字串来替换这个默认目标 IQN 最后一段。对于第一个 iSCSI 目标(Oracle Clusterware/ilearndb-crs1),我将这样来修改默认的目标 IQN:将字符串“tsn.ae4683b67fd3”替换为“ilearndb.crs1”,如下面的 13 所示:

 

13:创建新的 iSCSI 目标:替换默认目标 IQN

对新的目标 IQN 满意之后,单击“Add”按钮。这将会创建一个新的 iSCSI 目标,然后会出现一个页面,您可以在该页面中修改新 iSCSI 目标的一系列设置。对于本文,无需更改新 iSCSI 目标的任何设置。

6.8LUN 映射

创建新的 iSCSI 目标之后,下一步是将相应的 iSCSI 逻辑卷映射到该目标。在“Target Configuration”子选项卡下,验证在“Select iSCSI Target”部分中选择了正确的 iSCSI 目标。如果不是这样,使用下拉菜单选择正确的 iSCSI 目标,然后单击“Change”按钮。

接下来,单击名为“LUN Mapping”的灰色子选项卡(在“Target Configuration”子选项卡旁)。找到相应的 iSCSI 逻辑卷(本例中为 /dev/ilearndbvg/ilearndb-crs1),然后单击“Map”按钮。无需更改此页面中的任何设置。对卷 /dev/ilearndbvg/ilearndb-crs1 单击“Map”按钮后,您的屏幕应如 14 所示:

 

14:创建新的 iSCSI 目标:映射 LUN

6.9网络 ACL

需要先授予 iSCSI 客户端相应的权限,它才能访问新创建的 iSCSI 目标。在前面,我们已通过 Openfiler 对两个主机(Oracle RAC 节点)进行网络访问配置。这两个节点需要通过存储(专用)网络访问新的 iSCSI 目标。现在,我们需要授予这两个 Oracle RAC 节点访问新 iSCSI 目标的权限。

单击名为“Network ACL”的灰色子选项卡(在“LUN Mapping”子选项卡旁)。对当前的 iSCSI 目标,将两个主机的“Access”值由“Deny”更改为“Allow”,然后单击“Update”按钮。

7. Oracle RAC 节点上配置 iSCSI

在集群中的两个 Oracle RAC 节点上配置 iSCSI 启动器。而创建分区只应在 RAC 集群的一个节点上执行。

iSCSI 客户端可以是提供 iSCSI 支持(驱动程序)的任何系统(LinuxUnixMS WindowsApple Mac 等)。在我们的示例中,客户端是两个 Linux 服务器(ilearndb1 ilearndb2),它们运行的是 Oracle Enterprise Linux 5.4

在本节中,我们将在两个 Oracle RAC 节点上配置 iSCSI 软件启动器。Oracle Enterprise Linux 5.4 包括 Open-iSCSI iSCSI 软件启动器,该软件启动器位于 iscsi-initiator-utils RPM 中。这是对早期版本 Oracle Enterprise Linux (4.x) 的一个更改,这些早期版本中包含作为 Linux-iSCSI 项目的一部分而开发的 Linux iscsi-sfnet 软件驱动程序。所有 iSCSI 管理任务(如发现和登录)将使用 Open-iSCSI 中包含的命令行接口 iscsiadm

iSCSI 软件启动器将配置为自动登录网络存储服务器 (openfiler1),并发现 上一节中创建的 iSCSI 卷。之后,我们将逐步使用 udev 为发现的每个 iSCSI 目标名称创建永久性本地 SCSI 设备名称(即 /dev/iscsi/crs1)。拥有一致的本地 SCSI 设备名称及其映射到的 iSCSI 目标,有助于在配置 ASM 时能够区分三个卷。但是,在此之前,我们首先必须安装 iSCSI 启动器软件

本指南使用 ASMLib 2.0 它是 Oracle Database 的自动存储管理 (ASM) 特性的一个支持库。ASMLib 将用于对本指南中所使用的所有 iSCSI 卷进行标记。默认情况下,ASMLib 已为 ASM 使用的存储设备提供了永久性路径和权限。有了该特性后,无需用存储设备路径和权限更新 udev devlabel 文件。就本文来说,实际上我仍然选择使用 udev 为发现的每个 SCSI 目标名称创建永久性本地 SCSI 设备名称。这提供了一种自我文档编制的方法,有助于快速确定每个卷的名称和位置。

7.1 安装 iSCSI(启动器)服务

Oracle Enterprise Linux 5.4 来说,默认情况下不会安装 Open-iSCSI iSCSI 软件启动器。该软件包含在 1 CD 上的 iscsi-initiator-utils 程序包中。要确定该程序包是否已安装(大多数情况下没有安装),在两个 Oracle RAC 节点上执行以下命令:

[root@ilearndb1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep iscsi-initiator-utils  

iscsi-initiator-utils-6.2.0.871-0.10.el5 (x86_64)    

               

如果 iscsi-initiator-utils 程序包未安装,将 1 CD 加载到每个 Oracle RAC 节点中并执行以下命令:

[root@ilearndb1 ~]# mount -r /dev/cdrom   /media/cdrom

[root@ilearndb1 ~]# cd /media/cdrom/Server

[root@ilearndb1 ~]# rpm -Uvh iscsi-initiator-utils-*

[root@ilearndb1 ~]# cd /

[root@ilearndb1 ~]# eject                      

确认 iscsi-initiator-utils 程序包现在已安装:

 [root@ilearndb1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n"| grep iscsi-initiator-utils

 

iscsi-initiator-utils-6.2.0.871-0.10.el5 (x86_64)

                     

7.2配置 iSCSI(启动器)服务

验证 iscsi-initiator-utils 程序包已经安装到两个 Oracle RAC 节点之后,启动 iscsid 服务,并使其在系统引导时自动启动。我们还将配置 iscsi 服务在系统启动时自动启动,自动登录到所需的 iSCSI 目标。

[root@ilearndb1 ~]# service iscsid start

Turning off network shutdown. Starting iSCSI daemon: [ OK ]

                                                     [ OK ]

[root@ilearndb1 ~]# chkconfig iscsid on

[root@ilearndb1 ~]# chkconfig iscsi on                      

现在 iSCSI 服务已经启动,下面使用 iscsiadm 命令行接口发现网络存储服务器上的所有可用目标。这应该在两个 Oracle RAC 节点上执行,以检验配置是否正常工作:

[root@ilearndb1 ~]# iscsiadm -m discovery -t sendtargets -p openfiler1-priv

192.168.3.20:3260,1 iqn.2006-01.com.openfiler:ilearndb.crs1

192.168.3.20:3260,1 iqn.2006-01.com.openfiler:ilearndb.fra1

192.168.3.20:3260,1 iqn.2006-01.com.openfiler:ilearndb.data1

                     

7.3手动登录到 iSCSI 目标

此时,iSCSI 启动器服务已经启动,每个 Oracle RAC 节点都能够从网络存储服务器中发现可用目标。下一步是手动登录每个可用目标,这可以使用 iscsiadm 命令行接口完成。这需要在两个 Oracle RAC 节点上运行。注意,我必须指定网络存储服务器的 IP 地址而非其主机名 (openfiler1-priv) — 我认为必须这么做,因为上述发现使用 IP 地址显示目标。

[root@ilearndb1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:ilearndb.crs1 -p 192.168.3.20 -l

Logging in to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.crs1, portal: 192.168.3.20,3260]

Login to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.crs1, portal: 192.168.3.20,3260]: successful

[root@ilearndb1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:ilearndb.data1 -p 192.168.3.20 -l

Logging in to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.data1, portal: 192.168.3.20,3260]

Login to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.data1, portal: 192.168.3.20,3260]: successful

[root@ilearndb1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:ilearndb.fra1 -p 192.168.3.20 -l

Logging in to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.fra1, portal: 192.168.3.20,3260]

Login to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.fra1, portal: 192.168.3.20,3260]: successful                     

7.4配置自动登录

下一步是确保在计算机引导(或 iSCSI 启动器服务启动/重启)时,客户端将自动登录到上面列出的每个目标。如同上面描述的手动登录过程,在两个 Oracle RAC 节点上执行以下命令:

[root@ilearndb1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:ilearndb.crs1  -p 192.168.3.20 --op update -n node.startup -v automatic

[root@ilearndb1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:ilearndb.data1

-p 192.168.3.20 --op update -n node.startup -v automatic

[root@ilearndb1 ~]# iscsiadm -m node -T iqn.2006-01.com.openfiler:ilearndb.fra1

-p 192.168.3.20 --op update -n node.startup -v automatic                      

7.5创建永久性本地 SCSI 设备名称

在本节中,我们将逐步为每个 iSCSI 目标名称创建永久性本地 SCSI 设备名称。我们将使用 udev 来完成该任务。拥有一致的本地 SCSI 设备名称及其映射到的 iSCSI 目标,有助于在配置 ASM 时能够区分三个卷。尽管并未严格要求这么做(因为我们将对所有卷使用 ASMLib 2.0),这提供了一种自我文档编制的方法,有助于快速确定每个 iSCSI 卷的名称和位置。

如果任一 Oracle RAC 节点引导并且 iSCSI 启动器服务启动,它会以一种随机的方式自动登录到配置的每个目标,并将这些目标映射到下一个可用的本地 SCSI 设备名称。例如,目标iqn.2006-01.com.openfiler:ilearndb.crs1可能会映射到 /dev/sdb。实际上,我可以通过查看 /dev/disk/by-path 目录来确定所有目标的当前映射:

但是,每次重新引导 Oracle RAC 节点时,该映射都可能有所不同。例如,重新引导之后,可能会决定将 iSCSI 目标iqn.2006-01.com.openfiler:ilearndb.crs1映射到本地 SCSI 设备 /dev/sdc。由于您无法预测重新引导后的 iSCSI 目标映射,依赖于使用本地 SCSI 设备名称是不现实的。

我们需要的是可引用的一致的设备名称(即 /dev/iscsi/crs1),该设备名称在重新引导后将始终指向相应的 iSCSI 目标。这就是引入名为 udev 动态设备管理 工具的原因。 udev 提供了一个动态设备目录,使用一组可配置的规则通过符号链接指向实际设备。当 udev 收到设备事件(例如,客户端登录到 iSCSI 目标)时,就会根据 sysfs 中提供的可用设备属性匹配其配置好的规则以便识别设备。匹配规则可以提供其他设备信息或指定设备节点名和多个符号链接名,并指示 udev 运行其他程序。

第一步是创建一个新的规则文件。该文件将命名为 /etc/udev/rules.d/55-openiscsi.rules

在两个 Oracle RAC 节点上创建以下规则文件

查看/dev/sda的序列号

[root@ilearndb1 ~]# udevinfo -q env -n /dev/sda

ID_VENDOR=OPNFILER

ID_MODEL=VIRTUAL-DISK

ID_REVISION=0

ID_SERIAL=14f504e46494c45527562595863532d4e7067792d63504d38

ID_TYPE=disk

ID_BUS=scsi

ID_PATH=ip-192.168.3.20:3260-iscsi-iqn.2006-01.com.openfiler:ilearndb.crs1-lun-0

[root@ilearndb1 ~]# udevinfo -q env -n /dev/sdf

ID_VENDOR=OPNFILER   

ID_MODEL=VIRTUAL-DISK

ID_REVISION=0

ID_SERIAL= 14f504e46494c4552516c4631684b2d37314c4c2d7957536f

ID_TYPE=disk

ID_BUS=scsi

ID_PATH=ip-192.168.3.20:3260-iscsi-iqn.2006-01.com.openfiler:ilearndb.data1-lun-0

[root@ilearndb1 ~]# udevinfo -q env -n /dev/sdf

ID_VENDOR=OPNFILER

ID_MODEL=VIRTUAL-DISK

ID_REVISION=0

ID_SERIAL= 14f504e46494c4552396a654354492d545257302d44694367

ID_TYPE=disk

ID_BUS=scsi

ID_PATH=ip-192.168.3.20:3260-iscsi-iqn.2006-01.com.openfiler:ilearndb.fra1-lun-2

创建规则文件:

[root@ilearndb1 rules.d]# vi  /etc/udev/rules.d/55-openiscsi.rules

KERNEL=="sd*",ENV{ID_SERIAL}=="14f504e46494c45527562595863532d4e7067792d63504d38",MODE="0644",SYMLINK+="asm-ocr1"

KERNEL=="sd*",ENV{ID_SERIAL}=="14f504e46494c4552516c4631684b2d37314c4c2d7957536f ",MODE="0644",SYMLINK+="asm-data1"

KERNEL=="sd*",ENV{ID_SERIAL}=="14f504e46494c4552396a654354492d545257302d44694367",MODE="0644",SYMLINK+="asm-fra1"

注意:把该文件 复制到 节点2

执行以下命令,在/dev会自动生成 asm-ocr1 设备

[root@ilearndb1 ~]# start_udev

[root@ilearndb1 ~]# ls -al /dev/asm*

接下来就对asm设备进行分区

[root@ilearndb1 ~]# fdisk /dev/asm-ocr1

[root@ilearndb1 ~]# fdisk /dev/asm-data1

[root@ilearndb1 ~]# fdisk /dev/asm-fra1

既然已经配置了 udev,下面将在两个 Oracle RAC 节点上重新启动 iSCSI 服务:

[root@ilearndb1 ~]# service iscsi stop

Logging out of session [sid: 6, target: iqn.2006-01.com.openfiler:ilearndb.crs1, portal: 192.168.3.20,3260]

Logging out of session [sid: 7, target: iqn.2006-01.com.openfiler:ilearndb.fra1, portal: 192.168.3.20,3260]

Logging out of session [sid: 8, target: iqn.2006-01.com.openfiler:ilearndb.data1, portal: 192.168.3.20,3260]

Logout of [sid: 6, target: iqn.2006-01.com.openfiler:ilearndb.crs1, portal: 192.168.3.20,3260]: successful

Logout of [sid: 7, target: iqn.2006-01.com.openfiler:ilearndb.fra1, portal: 192.168.3.20,3260]: successful

Logout of [sid: 8, target: iqn.2006-01.com.openfiler:ilearndb.data1, portal: 192.168.3.20,3260]: successful

Stopping iSCSI daemon:                               [ OK ]

 

[root@ilearndb1 ~]# service iscsi start

iscsid dead but pid file exists

Turning off network shutdown. Starting iSCSI daemon: [ OK ]

                                                     [ OK ]

Setting up iSCSI targets: Logging in to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.crs1, portal: 192.168.3.20,3260]

Logging in to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.fra1, portal: 192.168.3.20,3260]

Logging in to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.data1, portal: 192.168.3.20,3260]

Login to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.crs1, portal: 192.168.3.20,3260]: successful

Login to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.fra1, portal: 192.168.3.20,3260]: successful

Login to [iface: default, target: iqn.2006-01.com.openfiler:ilearndb.data1, portal: 192.168.3.20,3260]: successful [ OK

6> iSCSI 卷上创建分区

现在,我们需要在每个 iSCSI 卷上创建一个占用整个卷大小的主分区。正如本文前面提到的,我将使用自动存储管理 (ASM) 存储 Oracle 集群件所需的共享文件、物理数据库文件(数据/索引文件、联机重做日志文件和控制文件),以及集群数据库的快速恢复区 (FRA)

Oracle Clusterware 共享文件(OCR 和表决磁盘)将存储在一个名为 +CRS 的使用外部冗余 配置的 ASM 磁盘组中。集群数据库的物理数据库文件将存储在一个名为 +ILEARNDB_DATA 的也使用外部冗余配置的 ASM 磁盘组中。最后,快速恢复区(RMAN 备份和存档重做日志文件)将存储于一个名为 +FRA 的使用外部冗余配置的第三个 ASM 磁盘组中。

下表列出了将要创建的三个 ASM 磁盘组及其将包含的 iSCSI 卷:

Oracle 共享驱动器配置

文件类型

ASM 磁盘组名称

iSCSI 目标(短)名称

ASM 冗余

大小

ASMLib 卷名

 

OCR 和表决磁盘

+CRS

crs1

External

10GB

ORCL:CRSVOL1

 

Oracle 数据库文件

+ILEARNDB_DATA

data1

External

30GB

ORCL:DATAVOL1

 

Oracle 快速恢复区

+FRA

fra1

External

30GB

ORCL:FRAVOL1

 

如上表所示,我们需要在每个 iSCSI 卷(共三个)上创建一个 Linux 主分区。 fdisk 命令在 Linux 中用于创建(和删除)分区。对于每个 iSCSI 卷(共三个),您都可以在创建主分区时使用默认值,因为默认操作是使用整个磁盘。您可以放心地忽略任何指示设备未包含有效 DOS 分区(或 SunSGI OSF 磁盘标签)的警告。

在本例中,我将在 ilearndb1 上运行 fdisk 命令,使用上一节中通过 udev 创建的本地设备名称在每个 iSCSI 目标上创建一个主分区:

 

要在每个 iSCSI 卷上创建单个分区,只能从 Oracle RAC 集群中的一个节点上进行!(如 ilearndb1

 # ---------------------------------------

 

[root@ilearndb1 ~]# fdisk /dev/asm-ocr1

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

                        

p

Partition number (1-4): 1

First cylinder (1-1012, default 1): 1

Last cylinder or +size or +sizeM or +sizeK (1-1012, default 1012): 1012

 

Command (m for help): p

 

Disk /dev/iscsi/crs1/part: 2315 MB, 2315255808 bytes

72 heads, 62 sectors/track, 1012 cylinders

Units = cylinders of 4464 * 512 = 2285568 bytes

 

               Device Boot      Start         End      Blocks   Id  System

/dev/iscsi/crs1/part1               1        1012     2258753   83  Linux

 

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.                   

7>验证新分区

ilearndb1 上创建所有需要的分区之后,现在应使用以下命令以“root”用户帐户从 Oracle RAC 集群的所有其余节点 (ilearndb2) 将分区更改通知给内核。注意,Openfiler 发现的 iSCSI 目标名称和本地 SCSI 设备名称的映射在两个 Oracle RAC 节点上将有所不同。不用担心,这不会导致任何问题,因为我们将使用 udev 上一节中创建的本地设备名称而不是其他的本地 SCSI 设备名称。

 

ilearndb2 上运行以下命令:

[root@ilearndb2 ~]# partprobe

 

[root@ilearndb2 ~]# fdisk -l

 

Disk /dev/sda: 160.0 GB, 160000000000 bytes

255 heads, 63 sectors/track, 19452 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14       19452   156143767+  8e  Linux LVM

 

Disk /dev/sdb: 35.5 GB, 35534143488 bytes

64 heads, 32 sectors/track, 33888 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1       33888    34701296   83  Linux

 

Disk /dev/sdc: 35.5 GB, 35534143488 bytes

64 heads, 32 sectors/track, 33888 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdc1               1       33888    34701296   83  Linux

 

Disk /dev/sdd: 2315 MB, 2315255808 bytes

72 heads, 62 sectors/track, 1012 cylinders

Units = cylinders of 4464 * 512 = 2285568 bytes

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdd1               1        1012     2258753   83  Linux

                     

                     

上面的清单显示, udev 确实为每个新分区创建了新的设备名称。在本指南稍后,当我们为 ASMlib 配置卷时,将使用这些新的设备名称。

8. 创建任务角色划分操作系统权限组、用户和目录

在集群的两个 Oracle RAC 节点上针对 grid oracle 用户执行以下用户、组和目录配置并设置 shell 限制的任务。

本节介绍如何使用 任务角色划分 配置来创建操作系统用户和组以安装所有 Oracle 软件。本节所使用的命令应在两个 Oracle RAC 节点上以 root 用户身份执行,从而创建组、用户和目录。请注意,组 ID 和用户 ID 在集群的两个 Oracle RAC 节点上应保持一致。检查以确保每个集群成员节点上都存在您要使用的组 ID 和用户 ID,确认每个网格基础架构的集群安装所有者的主组拥有相同的名称和组 ID,具体在本指南中为 oinstall (GID 1000)

Oracle 的任务角色划分权限配置是这样一种配置,将对 Oracle Grid Infrastructure 安装的管理访问权限赋予给一些操作系统组和用户,从而将这类权限从涉及其他 Oracle 安装(例如,Oracle Database 软件)的其他管理用户和组中划分出来。管理访问权限由各个操作系统组授予,而安装权限由每个 Oracle 安装的各个安装所有者授予。

我们会为每个 Oracle 软件产品创建一个操作系统用户作为该产品的所有者

—“grid”作为 Oracle Grid Infrastructure 的所有者,“oracle”作为 Oracle RAC 软件的所有者。在本文中,grid 的用户是我们创建作为 Oracle Grid Infrastructure 二进制文件所有者的用户。该用户将是 Oracle Clusterware Oracle 自动存储管理二进制文件的所有者。而 oracle 的用户是我们创建作为 Oracle 数据库二进制文件 (Oracle RAC) 所有者的用户。这两个 Oracle 软件所有者必须以 Oracle Inventory (oinstall) 作为其主组,这样每个 Oracle 软件安装所有者都有权写入中央清单 (oraInventory),以便正确设置 OCR Oracle Clusterware 资源的权限。Oracle RAC 软件所有者还必须以 OSDBA 组和可选的 OSOPER 组作为其辅助组。

类配置是可选的,但是对于需要通过划分各个管理用户的负责区域来限制用户对 Oracle 软件的访问的组织来说,Oracle 强烈建议采用这样的配置。例如,一个小型组织可能只分配操作系统用户权限,这样就可以只使用一个管理用户和一个组,该用户和组通过操作系统认证之后会具有 存储层和数据库层上的所有系统权限。就此类配置来说,您可以指定 oracle 用户为所有 Oracle 软件(Grid Infrastructure Oracle Database 软件)的唯一安装所有者,并指定 oinstall 为唯一组,授予其成员 Oracle Clusterware、自动存储管理及服务器上所有 Oracle 数据库的所有系统权限,及其作为安装所有者的所有权限。然而,其他组织有一些专门的系统角色来负责 Oracle 软件的安装,如系统管理员、网络管理员或存储管理员。这些不同的管理员用户可对系统进行配置以便为集群安装的 Oracle Grid Infrastructure 作准备,并完成所有需要操作系统 root 权限的配置任务。在成功完成 Grid Infrastructure 的安装与配置后,系统管理员应只需提供配置信息并授予数据库管理员在 Oracle RAC 安装期间以 root 用户身份运行脚本的权限。

我们将创建以下 O/S 组:

 

描述

OS 组名

分配给该组的 OS 用户

Oracle 权限

Oracle 组名

Oracle 清单和软件所有者

oinstall

gridoracle

 

 

Oracle 自动存储管理组

asmadmin

grid

SYSASM

OSASM

ASM 数据库管理员组

asmdba

gridoracle

ASM SYSDBA

OSDBA for ASM

ASM 操作员组

asmoper

grid

ASM SYSOPER

OSOPER for ASM

数据库管理员

dba

oracle

SYSDBA

OSDBA

数据库操作员

oper

oracle

SYSOPER

OSOPER

8.1 Grid Infrastructure 创建组和用户

在本节中,我们首先在两个 Oracle RAC 节点上为 Grid Infrastructure 创建推荐的操作系统组和用户:

[root@ilearndb1 ~]# groupadd -g 1000 oinstall

[root@ilearndb1 ~]# groupadd -g 1200 asmadmin

[root@ilearndb1 ~]# groupadd -g 1201 asmdba

[root@ilearndb1 ~]# groupadd -g 1202 asmoper

[root@ilearndb1 ~]# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash -c "Grid Infrastructure Owner" grid

[root@ilearndb1 ~]# id grid

uid=1100(grid) gid=1000(oinstall)

groups=1000(oinstall), 1200(asmadmin), 1201(asmdba),1202(asmoper)                              

8.2设置 grid 帐户的口令:

[root@ilearndb1 ~]# passwd grid 

Changing password for user grid. 

New UNIX password:xxxxxxxxxxx 

Retype new UNIX password:xxxxxxxxxxx 

passwd: all authentication tokens updated successfully.     

                        

8.3 grid 用户帐户创建登录脚本

grid 用户帐户分别登录到两个 Oracle RAC 节点并创建以下登录脚本 (.bash_profile)

在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:

  • ilearndb1ORACLE_SID=+ASM1
  • ilearndb2ORACLE_SID=+ASM2

[root@ilearndb1 ~]# su - grid

                             

 

# ---------------------------------------------------

# .bash_profile

# ---------------------------------------------------

# OS User:      grid

# Application:  Oracle Grid Infrastructure

# Version:      Oracle 11g release 2

# ---------------------------------------------------

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

      . ~/.bashrc

fi

 

alias ls="ls -FA"

 

# ---------------------------------------------------

# ORACLE_SID

# ---------------------------------------------------

# Specifies the Oracle system identifier (SID)

# for the Automatic Storage Management (ASM)instance

# running on this node.

# Each RAC node must have a unique ORACLE_SID.

# (i.e. +ASM1, +ASM2,...)

# ---------------------------------------------------

ORACLE_SID=+ASM1; export ORACLE_SID

 

# ---------------------------------------------------

# JAVA_HOME

# ---------------------------------------------------

# Specifies the directory of the Java SDK and Runtime

# Environment.

# ---------------------------------------------------

JAVA_HOME=/usr/local/java; export JAVA_HOME

 

# ---------------------------------------------------

# ORACLE_BASE

# ---------------------------------------------------

# Specifies the base of the Oracle directory structure

# for Optimal Flexible Architecture (OFA) compliant

# installations. The Oracle base directory for the

# grid installation owner is the location where

# diagnostic and administrative logs, and other logs

# associated with Oracle ASM and Oracle Clusterware

# are stored.

# ---------------------------------------------------

ORACLE_BASE=/u01/app/grid; export ORACLE_BASE

 

# ---------------------------------------------------

# ORACLE_HOME

# ---------------------------------------------------

# Specifies the directory containing the Oracle

# Grid Infrastructure software. For grid

# infrastructure for a cluster installations, the Grid

# home must not be placed under one of the Oracle base

# directories, or under Oracle home directories of

# Oracle Database installation owners, or in the home

# directory of an installation owner. During

# installation, ownership of the path to the Grid

# home is changed to root. This change causes

# permission errors for other installations.

# ---------------------------------------------------

ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME

 

# ---------------------------------------------------

# ORACLE_PATH

# ---------------------------------------------------

# Specifies the search path for files used by Oracle

# applications such as SQL*Plus. If the full path to

# the file is not specified, or if the file is not

# in the current directory, the Oracle application

# uses ORACLE_PATH to locate the file.

# This variable is used by SQL*Plus, Forms and Menu.

# ---------------------------------------------------

ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH

 

# ---------------------------------------------------

# SQLPATH

# ---------------------------------------------------

# Specifies the directory or list of directories that

# SQL*Plus searches for a login.sql file.

# ---------------------------------------------------

# SQLPATH=/u01/app/common/oracle/sql; export SQLPATH

 

# ---------------------------------------------------

# ORACLE_TERM

# ---------------------------------------------------

# Defines a terminal definition. If not set, it

# defaults to the value of your TERM environment

# variable. Used by all character mode products.

# ---------------------------------------------------

ORACLE_TERM=xterm; export ORACLE_TERM

 

# ---------------------------------------------------

# NLS_DATE_FORMAT

# ---------------------------------------------------

# Specifies the default date format to use with the

# TO_CHAR and TO_DATE functions. The default value of

# this parameter is determined by NLS_TERRITORY. The

# value of this parameter can be any valid date

# format mask, and the value must be surrounded by

# double quotation marks. For example:

# #         NLS_DATE_FORMAT = "MM/DD/YYYY"

# # ---------------------------------------------------

NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT

 

# ---------------------------------------------------

# TNS_ADMIN

# ---------------------------------------------------

# Specifies the directory containing the Oracle Net

# Services configuration files like listener.ora,

# tnsnames.ora, and sqlnet.ora.

# ---------------------------------------------------

TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN

 

# ---------------------------------------------------

# ORA_NLS11

# ---------------------------------------------------

# Specifies the directory where the language,

# territory, character set, and linguistic definition

# files are stored.

# ---------------------------------------------------

ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11

 

# ---------------------------------------------------

# PATH

# ---------------------------------------------------

# Used by the shell to locate executable programs;

# must include the $ORACLE_HOME/bin directory.

# ---------------------------------------------------

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin

PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

PATH=${PATH}:/u01/app/common/oracle/bin

export PATH

 

# ---------------------------------------------------

# LD_LIBRARY_PATH

# ---------------------------------------------------

# Specifies the list of directories that the shared

# library loader searches to locate shared object

# libraries at runtime.

# ---------------------------------------------------

LD_LIBRARY_PATH=$ORACLE_HOME/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export LD_LIBRARY_PATH

 

# ---------------------------------------------------

# CLASSPATH

# ---------------------------------------------------

# Specifies the directory or list of directories that

# contain compiled Java classes.

# ---------------------------------------------------

CLASSPATH=$ORACLE_HOME/JRE

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export CLASSPATH

 

# ---------------------------------------------------

# THREADS_FLAG

# ---------------------------------------------------

# All the tools in the JDK use green threads as a

# default. To specify that native threads should be

# used, set the THREADS_FLAG environment variable to

# "native". You can revert to the use of green

# threads by setting THREADS_FLAG to the value

# "green".

# ---------------------------------------------------

THREADS_FLAG=native; export THREADS_FLAG

 

# ---------------------------------------------------

# TEMP, TMP, and TMPDIR

# ---------------------------------------------------

# Specify the default directories for temporary

# files; if set, tools that create temporary files

# create them in one of these directories.

# ---------------------------------------------------

export TEMP=/tmp

export TMPDIR=/tmp

 

# ---------------------------------------------------

# UMASK

# ---------------------------------------------------

# Set the default file mode creation mask

# (umask) to 022 to ensure that the user performing

# the Oracle software installation creates files

# with 644 permissions.

# ---------------------------------------------------

umask 022

                                   

 

8.4 Oracle 数据库软件创建组和用户

接下来,我们在两个 Oracle RAC 节点上为 Oracle 数据库软件创建推荐的操作系统组和用户:

[root@ilearndb1 ~]# groupadd -g 1300 dba

[root@ilearndb1 ~]# groupadd -g 1301 oper

[root@ilearndb1 ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d

/home/oracle -s /bin/bash -c "Oracle Software Owner" oracle

 

[root@ilearndb1 ~]# id oracle

uid=1101(oracle)

gid=1000(oinstall)

groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)

                             

8.5设置 oracle 帐户的口令:

[root@ilearndb1 ~]# passwd oracle

Changing password for user oracle.

New UNIX password: 

xxxxxxxxxxx

Retype new UNIX password: 

xxxxxxxxxxx

passwd: all authentication tokens updated successfully.

                             

8.6 oracle 用户帐户创建登录脚本

oracle 用户帐户分别登录到两个 Oracle RAC 节点并创建以下登录脚本 (.bash_profile)

在为每个 Oracle RAC 节点设置 Oracle 环境变量时,确保为每个 RAC 节点指定唯一的 Oracle SID。对于此示例,我使用:

  • ilearndb1ORACLE_SID=ilearndb1
  • ilearndb2ORACLE_SID=ilearndb2

[root@ilearndb1 ~]# su - oracle

                             

 

# ---------------------------------------------------

# .bash_profile

# ---------------------------------------------------

# OS User:      oracle

# Application:  Oracle Database Software Owner

# Version:      Oracle 11g release 2

# ---------------------------------------------------

 

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

      . ~/.bashrc

fi

 

alias ls="ls -FA"

 

# ---------------------------------------------------

# ORACLE_SID

# ---------------------------------------------------

# Specifies the Oracle system identifier (SID) for

# the Oracle instance running on this node.

# Each RAC node must have a unique ORACLE_SID.

# (i.e. ilearndb1, ilearndb2,...)

# ---------------------------------------------------

ORACLE_SID=ilearndb1; export ORACLE_SID

 

# ---------------------------------------------------

# ORACLE_UNQNAME

# ---------------------------------------------------

# In previous releases of Oracle Database, you were

# required to set environment variables for

# ORACLE_HOME and ORACLE_SID to start, stop, and

# check the status of Enterprise Manager. With

# Oracle Database 11g release 2 (11.2) and later, you

# need to set the environment variables ORACLE_HOME

# and ORACLE_UNQNAME to use Enterprise Manager.

# Set ORACLE_UNQNAME equal to the database unique

# name.

# ---------------------------------------------------

ORACLE_UNQNAME=ilearndb; export ORACLE_UNQNAME

 

# ---------------------------------------------------

# JAVA_HOME

# ---------------------------------------------------

# Specifies the directory of the Java SDK and Runtime

# Environment.

# ---------------------------------------------------

JAVA_HOME=/usr/local/java; export JAVA_HOME

 

# ---------------------------------------------------

# ORACLE_BASE

# ---------------------------------------------------

# Specifies the base of the Oracle directory structure

# for Optimal Flexible Architecture (OFA) compliant

# database software installations.

# ---------------------------------------------------

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

 

# ---------------------------------------------------

# ORACLE_HOME

# ---------------------------------------------------

# Specifies the directory containing the Oracle

# Database software.

# ---------------------------------------------------

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME

 

# ---------------------------------------------------

# ORACLE_PATH

# ---------------------------------------------------

# Specifies the search path for files used by Oracle

# applications such as SQL*Plus. If the full path to

# the file is not specified, or if the file is not

# in the current directory, the Oracle application

# uses ORACLE_PATH to locate the file.

# This variable is used by SQL*Plus, Forms and Menu.

# ---------------------------------------------------

ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH

 

# ---------------------------------------------------

# SQLPATH

# ---------------------------------------------------

# Specifies the directory or list of directories that

# SQL*Plus searches for a login.sql file.

# ---------------------------------------------------

# SQLPATH=/u01/app/common/oracle/sql; export SQLPATH

 

# ---------------------------------------------------

# ORACLE_TERM

# ---------------------------------------------------

# Defines a terminal definition. If not set, it

# defaults to the value of your TERM environment

# variable. Used by all character mode products.

# ---------------------------------------------------

ORACLE_TERM=xterm; export ORACLE_TERM

 

# ---------------------------------------------------

# NLS_DATE_FORMAT

# ---------------------------------------------------

# Specifies the default date format to use with the

# TO_CHAR and TO_DATE functions. The default value of

# this parameter is determined by NLS_TERRITORY. The

# value of this parameter can be any valid date

# format mask, and the value must be surrounded by

# double quotation marks. For example:

# #         NLS_DATE_FORMAT = "MM/DD/YYYY"

# # ---------------------------------------------------

NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT

 

# ---------------------------------------------------

# TNS_ADMIN

# ---------------------------------------------------

# Specifies the directory containing the Oracle Net

# Services configuration files like listener.ora,

# tnsnames.ora, and sqlnet.ora.

# ---------------------------------------------------

TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN

 

# ---------------------------------------------------

# ORA_NLS11

# ---------------------------------------------------

# Specifies the directory where the language,

# territory, character set, and linguistic definition

# files are stored.

# ---------------------------------------------------

ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11

 

# ---------------------------------------------------

# PATH

# ---------------------------------------------------

# Used by the shell to locate executable programs;

# must include the $ORACLE_HOME/bin directory.

# ---------------------------------------------------

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin

PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

PATH=${PATH}:/u01/app/common/oracle/bin

export PATH

 

# ---------------------------------------------------

# LD_LIBRARY_PATH

# ---------------------------------------------------

# Specifies the list of directories that the shared

# library loader searches to locate shared object

# libraries at runtime.

# ---------------------------------------------------

LD_LIBRARY_PATH=$ORACLE_HOME/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export LD_LIBRARY_PATH

 

# ---------------------------------------------------

# CLASSPATH

# ---------------------------------------------------

# Specifies the directory or list of directories that

# contain compiled Java classes.

# ---------------------------------------------------

CLASSPATH=$ORACLE_HOME/JRE

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export CLASSPATH

 

# ---------------------------------------------------

# THREADS_FLAG

# ---------------------------------------------------

# All the tools in the JDK use green threads as a

# default. To specify that native threads should be

# used, set the THREADS_FLAG environment variable to

# "native". You can revert to the use of green

# threads by setting THREADS_FLAG to the value

# "green".

# ---------------------------------------------------

THREADS_FLAG=native; export THREADS_FLAG

 

# ---------------------------------------------------

# TEMP, TMP, and TMPDIR

# ---------------------------------------------------

# Specify the default directories for temporary

# files; if set, tools that create temporary files

# create them in one of these directories.

# ---------------------------------------------------

export TEMP=/tmp

export TMPDIR=/tmp

 

# ---------------------------------------------------

# UMASK

# ---------------------------------------------------

# Set the default file mode creation mask

# (umask) to 022 to ensure that the user performing

# the Oracle software installation creates files

# with 644 permissions.

# ---------------------------------------------------

umask 022

                                   

 

8.7创建 Oracle 基目录路径

最后一步是配置 Oracle 基路径,要遵循最佳灵活体系结构 (OFA) 的结构及正确的权限。需要以 root 用户身份在集群的两个 Oracle RAC 节点上完成此任务。

本指南假设在根文件系统中创建 /u01 目录。请注意,这样做是为了简便起见,不建议将其作为通用做法。通常会将 /u01 目录作为配置了硬件或软件镜像功能的单独文件系统供应。

[root@ilearndb1 ~]# mkdir -p /u01/app/grid

[root@ilearndb1 ~]# mkdir -p /u01/app/11.2.0/grid

[root@ilearndb1 ~]# chown -R grid:oinstall /u01

[root@ilearndb1 ~]# mkdir -p /u01/app/oracle

[root@ilearndb1 ~]# chown oracle:oinstall /u01/app/oracle

[root@ilearndb1 ~]# chmod -R 775 /u01

                             

8.8 Oracle 软件安装用户设置资源限制

要改善 Linux 系统上的软件性能,必须对 Oracle 软件所有者用户(gridoracle)增加以下资源限制:

 

Shell 限制

limits.conf 中的条目

硬限制

打开文件描述符的最大数

nofile

65536

可用于单个用户的最大进程数

nproc

16384

进程堆栈段的最大大小

stack

10240

要进行这些更改,以 root 用户身份运行以下命令:

 

  1. 在每个 Oracle RAC 节点上,在 /etc/security/limits.conf 文件中添加以下几行代码(下面的示例显示软件帐户所有者 oracle grid):

[root@ilearndb1 ~]# cat >> /etc/security/limits.conf <<EOF

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

EOF                                  

  1. 8.2在每个 Oracle RAC 节点上,在 /etc/pam.d/login 文件中添加或编辑下面一行内容(如果不存在此行):

[root@ilearndb1 ~]# cat >> /etc/pam.d/login <<EOF

session    required     pam_limits.so

EOF                                  

  1. 根据您的 shell 环境,对默认的 shell 启动文件进行以下更改,以便更改所有 Oracle 安装所有者的 ulimit 设置(注意这里的示例显示 oracle grid 用户):

对于 BourneBash Korn shell,通过运行以下命令将以下行添加到 /etc/profile 文件:

[root@ilearndb1 ~]# cat >> /etc/profile <<EOF

if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then

    if [ \$SHELL = "/bin/ksh" ]; then

        ulimit -p 16384

        ulimit -n 65536

    else

        ulimit -u 16384 -n 65536

    fi

    umask 022

fi

EOF                                    

对于 C shellcsh tcsh),通过运行以下命令将以下行添加到 /etc/csh.login 文件:

[root@ilearndb1 ~]# cat >> /etc/csh.login <<EOF

if ( \$USER == "oracle" || \$USER == "grid" ) then

    limit maxproc 16384

    limit descriptors 65536

endif

EOF        

                           

9. Oracle 配置 Linux 服务器

在集群中的两个 Oracle RAC 节点上执行以下配置过程。

每次引导算机时,都需要在集群中的两个 Oracle RAC 节点上定义本节讨论的内核参数。本节提供了设置 Oracle 必需的那些内核参数的信息。 17 用于两个 Oracle RAC 节点的所有启动命令)中说明了如何将这些参数置于启动脚本 (/etc/sysctl.conf) 中。

9.1概述

本节主要介绍如何配置两台 Oracle RAC Linux 服务器 使每台服务器作好准备,以便在 Oracle Enterprise Linux 5 平台上安装 Oracle 11g 2 Grid Infrastructure Oracle RAC 11g 2 版。具体任务包括:验证是否有足够的内存和交换空间、设置共享内存和信号、设置文件句柄的最大数量、设置 IP 本地端口范围,最后说明如何激活系统的所有内核参数。

有多种方法来配置这些参数。就本文而言,我将通过把所有设置值置于 /etc/sysctl.conf 文件中以使所有更改永久有效(通过重新引导)。

9.2内存和交换空间考虑事项

RHEL/OEL 的最小 RAM 要求为:1.5 GB 用于集群的 Grid Infrastructure,或 2.5 GB 用于集群的 Grid Infrastructure Oracle RAC。在本指南中,每个 Oracle RAC 节点上将运行 Oracle Grid Infrastructure Oracle RAC,因此每台服务器至少需要 2.5 GB RAM。本文中使用的每个 RAC 节点配备了 4 GB 的物理 RAM

所需的最小交换空间为 1.5 GB。对于 RAM 等于或小于 2 GB 的系统, Oracle 建议您将交换空间设置为 RAM 容量的 1.5 倍。对于 RAM 2 GB 16 GB 之间的系统,请使用与 RAM 同等大小的交换空间。对于 RAM 大于 16 GB 的系统,请使用 16 GB 的交换空间。

  • 要检查已拥有的内存容量,键入以下命令:
  • [root@ilearndb1 ~]# cat /proc/meminfo | grep MemTotal

MemTotal: 4038564 kB                                    

                                 

  • 要检查已分配的交换容量,键入以下命令:
  • [root@ilearndb1 ~]# cat /proc/meminfo | grep SwapTotal

SwapTotal: 6094840 kB                                    

                                 

  • 如果内存少于 4GB(介于 RAM SWAP 之间),您可以通过创建临时交换文件添加临时交换空间。这样,您就不必使用原始设备甚至更为彻底地重建系统了。

root 身份创建一个用作额外交换空间的文件,假设大小为 500MB

 

# dd if=/dev/zero of=tempswap bs=1k count=500000

现在我们应更改文件的权限:

 

# chmod 600 tempswap

最后我们将该分区格式化为交换分区,并将其添加到交换空间:

 

# mke2fs tempswap

# mkswap tempswap

# swapon tempswap

9.3配置内核参数

本节中出现的内核参数只是用于 Oracle 文档的建议值。对于生产数据库系统,Oracle 建议您对这些值进行调整,以优化系统性能。

在两个 Oracle RAC 节点上,验证本节所述的内核参数的设置值大于或等于推荐值。另请注意,在设置四个信号值时,需要在同一行中输入全部四个值。

RHEL/OEL 5 上的 Oracle Database 11g 2 版需要如下所示的内核参数设置。给出的值都是最小值,因此如果您的系统使用更大的值,则不要更改。

kernel.shmmax = 4294967295

kernel.shmall = 2097152

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default=262144

net.core.rmem_max=4194304

net.core.wmem_default=262144

net.core.wmem_max=1048576

fs.aio-max-nr=1048576

RHEL/OEL 5 已经配置了为以下内核参数定义的默认值:

kernel.shmall

kernel.shmmax

如果这些默认值等于或大于必需值,则使用这些默认值。

本文假定采用 Oracle Enterprise Linux 5 的全新安装,则已经设置了许多必需的内核参数(见上面)。如果是这样,您以 root 用户身份登录后,只需将以下内容命令复制/粘贴到两个 Oracle RAC 节点中:

[root@ilearndb1 ~]# cat >> /etc/sysctl.conf <<EOF

 

# Controls the maximum number of shared memory segments system wide

kernel.shmmni = 4096

 

# Sets the following semaphore values:

# SEMMSL_value  SEMMNS_value  SEMOPM_value  SEMMNI_value

kernel.sem = 250 32000 100 128

 

# Sets the maximum number of file-handles that the Linux kernel will allocate

fs.file-max = 6815744

 

# Defines the local port range that is used by TCP and UDP

# traffic to choose the local port

net.ipv4.ip_local_port_range = 9000 65500

 

# Default setting in bytes of the socket "receive" buffer which

# may be set by using the SO_RCVBUF socket option

net.core.rmem_default=262144

 

# Maximum setting in bytes of the socket "receive" buffer which

# may be set by using the SO_RCVBUF socket option

net.core.rmem_max=4194304

 

# Default setting in bytes of the socket "send" buffer which

# may be set by using the SO_SNDBUF socket option

net.core.wmem_default=262144

 

# Maximum setting in bytes of the socket "send" buffer which

# may be set by using the SO_SNDBUF socket option

net.core.wmem_max=1048576

 

# Maximum number of allowable concurrent asynchronous I/O requests requests

fs.aio-max-nr=1048576

EOF                                

9.4激活系统的所有内核参数

上述命令将所需的内核参数插入到 /etc/sysctl.conf 启动文件中,这样每次系统重启时这些参数保持不变。Linux 允许在系统当前已启动并运行时修改这些内核参数,所以无需在更改内核参数后重启系统。要在当前运行的系统中激活新的内核参数值,在集群中的两个 Oracle RAC 节点上,以 root 用户身份运行以下命令:

[root@ilearndb1 ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 68719476736

kernel.shmall = 4294967296

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 6815744

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576                                

通过在集群中的两个 Oracle RAC 节点上运行以下命令来验证新的内核参数值:

[root@ilearndb1 ~]# /sbin/sysctl -a | grep shm

vm.hugetlb_shm_group = 0

kernel.shmmni = 4096

kernel.shmall = 4294967296

kernel.shmmax = 68719476736 

 

[root@ilearndb1 ~]# /sbin/sysctl -a | grep sem

kernel.sem = 250        32000   100     128 

 

[root@ilearndb1 ~]# /sbin/sysctl -a | grep file-max

fs.file-max = 6815744 

 

[root@ilearndb1 ~]# /sbin/sysctl -a | grep ip_local_port_range

net.ipv4.ip_local_port_range = 9000     65500 

 

[root@ilearndb1 ~]# /sbin/sysctl -a | grep 'core\.[rw]mem'

net.core.rmem_default = 262144

net.core.wmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_max = 1048576                                

 

10. 配置 RAC 节点以便可以使用 SSH 进行远程访问(可选)

在两个 Oracle RAC 节点上执行以下可选过程,以便手动配置“grid”“oracle”用户在两个集群成员节点之间无口令的 SSH 连接。

本文档这一节的一个最大好处是,此节是完全可选的!这并不是说没必要在 Oracle RAC 节点之间配置安全 Shell (SSH) 连接。相反,Oracle Universal Installer (OUI) 在软件安装过程中会使用安全 shell 工具 ssh scp 命令对集群的其他节点运行远程命令并将文件复制到集群的其他节点上。Oracle 软件安装过程中必须对 SSH 进行配置,这些命令才不会要求输入口令。运行 SSH 命令而不要求输入口令,这种能力有时称作 用户等效性

本文这一节之所以是可选的,是因为 11g 2 版中的 OUI 界面包含了一个新的特性,该特性可以在 Oracle 软件的实际安装阶段为执行该安装的用户帐户自动配置 SSHOUI 执行的自动配置会在集群的所有成员节点间创建无口令的 SSH 连接。Oracle 建议,只要有可能就使用自动配置过程。

除了在安装 Oracle 软件时使用 SSH 外,在软件安装之后,配置助手、Oracle Enterprise ManagerOPatch 以及其他执行从本地节点到远程节点的配置操作的特性也会使用 SSH

注:Oracle Clusterware 11g 2 版及更高版本不再支持使用口令短语配置 SSHOracle 11g 2 版及更高版本需要无口令的 SSH

由于本指南用 grid 作为 Oracle Grid Infrastructure 软件所有者,用 oracle 作为 Oracle RAC 软件所有者,因此必须为这两个用户帐户配置无口令的 SSH

注:如果没有 SSH,安装程序会尝试使用 rsh rcp 命令取代 ssh scp。不过,在大多数 Linux 系统上,这些服务在默认情况下处于禁用状态。本文不讨论 RSH 的使用。

10.1验证已安装 SSH 软件

Linux 发布版本支持的 SSH 版本为 OpenSSHLinux 发布版本的最低安装应包括 OpenSSH。要确认安装了 SSH 程序包,在两个 Oracle RAC 节点上运行以下命令:

[root@ilearndb1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}

(%{ARCH})\n"| grep ssh

openssh-askpass-4.3p2-36.el5 (x86_64)

openssh-clients-4.3p2-36.el5 (x86_64)

openssh-4.3p2-36.el5 (x86_64)

openssh-server-4.3p2-36.el5 (x86_64)                              

如果看不到 SSH 程序包列表,则为您的 Linux 发布版本安装这些程序包。例如,将 1 CD 装到每个 Oracle RAC 节点中,执行以下命令安装 OpenSSH 程序包:

[root@ilearndb1 ~]# mount -r /dev/cdrom /media/cdrom

[root@ilearndb1 ~]# cd /media/cdrom/Server

[root@ilearndb1 ~]# rpm -Uvh openssh-*

[root@ilearndb1 ~]# cd /

[root@ilearndb1 ~]# eject                              

10.2为何使用手动方法选项来配置 SSH 用户等效性?

OUI 已包括可以自动配置两个 Oracle RAC 节点间的 SSH 的特性,我们为什么还提供一节的内容来说明如何手动配置无口令的 SSH 连接?事实上,对本文而言,为了支持 Oracle 的自动配置方法(包括在安装程序中),我已决定放弃手动配置 SSH 连接。

提供此节(手动配置 SSH)的一个原因是为了说明这样的事实:必须从所有 Oracle 软件安装所有者的配置文件中删除 stty 命令,并且删除登录时触发的、可生成发往终端的消息的其他安全措施。这些消息、邮件检查及其他显示会阻止 Oracle 软件安装所有者使用 Oracle Universal Installer 中内置的 SSH 配置脚本。如果没有禁用这些安全措施,则必须手动配置 SSH 后才可运行安装。本节稍后将介绍其他说明如何防止因 stty 命令引发的安装错误的文档。

另一个原因是,您可能决定手动配置用户等效性 SSH,以便能够在安装 Oracle 软件之前运行集群验证实用程序 (CVU)CVU (runcluvfy.sh) 是一个非常有用的工具,位于 Oracle 集群件的根目录下。该工具不仅检查是否满足了软件安装前的所有前提条件,还能够生成称作修复脚本 shell 脚本程序,从而解决许多不满足系统配置要求的问题。然而,CVU 确实有它自己的前提条件,那就是为运行安装的用户帐户正确配置 SSH 用户等效性。如果您打算使用 OUI 配置 SSH 连接,就要知道 CVU 实用程序将会失败,它没有机会执行任何关键检查。

[grid@ilearndb1 ~]$ /media/cdrom/grid/runcluvfy.sh stage -pre crsinst -fixup -n

ilearndb1,ilearndb2 -verbose

Performing pre-checks for cluster services setup  

 

Checking node reachability... 

 

Check: Node reachability from node "ilearndb1"  

Destination Node                      Reachable?                

------------------------------------  ------------------------  

ilearndb1                              yes                       

ilearndb2                              yes                     

Result: Node reachability check passed from node "ilearndb1" 

 

 

Checking user equivalence... 

 

Check: User equivalence for user "grid"  

Node Name                             Comment                   

------------------------------------  ------------------------  

ilearndb2                              failed  

ilearndb1                              failed                                  

Result: PRVF-4007 : User equivalence check failed for user "grid"

 

ERROR:

User equivalence unavailable on all the specified nodes

Verification cannot proceed

 

 

Pre-check for cluster services setup was unsuccessful on all the nodes.                              

请注意,在安装 Oracle 软件之前不一定非要运行 CVU 实用程序。从 Oracle 11g 2 版开始,安装程序会检测不满足最低安装要求的情况并执行与 CVU 相同的任务 生成修复脚本以解决不满足系统配置要求的问题。

10.3在集群的所有节点上手动配置 SSH 连接

需要重申的是,在运行 OUI 之前手动配置 SSH 连接并不是必需的。在 11g 2 版中,OUI 在安装过程中为执行安装的用户帐户提供了一个界面,以便在所有集群成员节点之间自动创建无口令的 SSH 连接。这是 Oracle 建议采用的方法,也是本文使用的方法。我们将完成以下任务来手动配置所有集群成员节点之间的 SSH 连接,提供此手动配置过程只是为了说明之目的。要记住本指南使用 grid 作为 Oracle Grid Infrastructure 软件所有者,使用 oracle 作为 Oracle RAC 软件的所有者。如果您决定手动配置 SSH 连接,应对这两个用户帐户都进行这样的配置。

此节旨在为 grid oracle 这两个操作系统用户帐户设置用户等效性。利用用户等效性,grid oracle 用户帐户无需口令即可访问集群中的所有其他节点(运行命令和复制文件)。Oracle 10g 1 版中增加了对使用 SSH 工具套件设置用户等效性的支持。在 Oracle 数据库 10g 之前,只能使用远程 shell (RSH) 配置用户等效性。

下面示例中列出的 Oracle 软件所有者是 grid 用户。

10.4检查系统中的现有 SSH 配置

要确定是否 SSH 已安装并运行,输入以下命令:

[grid@ilearndb1 ~]$ pgrep sshd

2535

19852                              

如果 SSH 正在运行,那么该命令的响应将是一个进程 ID 号(一个或多个)列表。在集群中的两个 Oracle RAC 节点上运行此命令,验证 SSH 后台程序已安装并正在运行。

需要 SSH 协议所需的 RSA DSA 密钥。RSA 用于 SSH 1.5 协议,而 DSA 则默认用于 SSH 2.0 协议。而对于 OpenSSH,您既可以使用 RSA,也可以使用 DSA。下面的说明是针对 SSH1 的。如果您安装了 SSH2,但不能使用 SSH1,那么请参考 SSH 分发文档来配置 SSH1 兼容性或使用 DSA 配置 SSH2

注:使用 OUI 自动配置无口令的 SSH 会在集群的所有节点上生成 RSA 加密密钥。

10.5在集群节点上配置无口令的 SSH

要配置无口令的 SSH,必须先在每个集群节点上生成 RSA DSA 密钥,然后将所有集群节点成员上生成的所有密钥复制到 授权密钥文件 中,该文件在每个节点上都是相同的。注意,SSH 文件必须只能由 root 用户、软件安装用户(gridoracle)读取,因为如果其他用户可以访问一个私钥文件,则 SSH 会忽略该文件。以下示例中使用 DSA 密钥。

对于安装时要使用的 Oracle 软件安装所有者(gridoracle),您必须为每个所有者分别配置无口令的 SSH

要配置无口令的 SSH,完成以下任务:

10.6在每个节点上创建 SSH 目录并生成 SSH 密钥

在每个节点上完成以下步骤:

  1. 以软件所有者身份(此例中为 grid 用户)登录。

[root@ilearndb1 ~]# su - grid                                  

  1. 要确保您是以 grid 登录的,并验证用户 ID 与预期的用户 ID(即您已为grid 用户分配的用户 ID)一致,输入 id id grid 命令。确保 Oracle 用户组和用户与您当前使用的用户终端窗口进程的组和用户 ID 相同。例如:

[grid@ilearndb1 ~]$ id

uid=1100(grid) gid=1000(oinstall)

groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)

 

[grid@ilearndb1 ~]$ id grid

uid=1100(grid) gid=1000(oinstall)

groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)                                  

  1. 如有必要,在 grid 用户的主目录下创建.ssh 目录并设置相应权限,以确保仅 oracle 用户具有读写权限:

[grid@ilearndb1 ~]$ mkdir ~/.ssh

[grid@ilearndb1 ~]$ chmod 700 ~/.ssh                                  

注:如果权限未设置为 700SSH 配置将失败。

  1. 输入以下命令,为 SSH 协议生成 DSA 密钥对(公共密钥和私有密钥):出现提示时,接受默认的密钥文件位置和无口令短语设置(按 [Enter]):

[grid@ilearndb1 ~]$ /usr/bin/ssh-keygen -t dsa

Generating public/private dsa key pair.

Enter file in which to save the key (/home/grid/.ssh/id_dsa):[Enter]

Enter passphrase (empty for no passphrase):[Enter]

Enter same passphrase again:[Enter]

Your identification has been saved in /home/grid/.ssh/id_dsa.

Your public key has been saved in /home/grid/.ssh/id_dsa.pub.

The key fingerprint is: 7b:e9:e8:47:29:37:ea:10:10:c6:b6:7d:d2:73:e9:03 grid@ilearndb1                                  

注:Oracle Clusterware 11g 2 版及更高版本不支持使用口令短语的 SSHOracle 11g 2 版及更高版本必须使用无口令的 SSH

此命令将 DSA 公共密钥写入 ~/.ssh/id_dsa.pub 文件,将私有密钥写入 ~/.ssh/id_dsa 文件。

绝不要将私钥分发给任何无权执行 Oracle 软件安装的用户。

  1. 对您想使其成为集群成员的所有其他使用 DSA 密钥的节点 (ilearndb2) 重复第 1 步到第 4 步。

10.7将所有密钥添加到一个公共 authorized_keys 文件

现在,每个 Oracle RAC 节点都包含用于 DSA 的公共和私有密钥,您需要在其中一个节点上创建一个授权密钥文件 (authorized_keys)。授权密钥文件只是一个包含每个用户(每个节点)的 DSA 公共密钥的文件。在授权密钥文件包含了所有公共密钥后,将其分发至集群中的所有其他节点。

注:每个节点上 grid 用户的 ~/.ssh/authorized_keys 文件必须包含您在所有集群节点上生成的所有 ~/.ssh/id_dsa.pub 文件中的内容。

在集群中的一个节点上完成以下步骤以生成授权密钥文件,然后分发该文件。对于此文而言,我将使用集群中的主节点 ilearndb1

 

  1. ilearndb1(本地节点)中确定所有者的主目录 .ssh 中是否存在授权密钥文件 ~/.ssh/authorized_keys。大多数情况下,该文件是不存在的,因为本文假设您正在进行新的安装。如果该文件不存在,那么现在进行创建:

[grid@ilearndb1 ~]$ touch ~/.ssh/authorized_keys

[grid@ilearndb1 ~]$ ls -l ~/.ssh

total 8

-rw-r--r-- 1 grid oinstall   0 Nov 12 12:34 authorized_keys

-rw------- 1 grid oinstall 668 Nov 12 09:24 id_dsa

-rw-r--r-- 1 grid oinstall 603 Nov 12 09:24 id_dsa.pub                                  

.ssh 目录中,您会看到前面生成的 id_dsa.pub 密钥以及空白文件 authorized_keys

  1. 在本地节点 (ilearndb1) 上,使用 SCP(安全复制)或 SFTP(安全 FTP)将 ~/.ssh/id_dsa.pub 公共密钥的内容从集群中的两个 Oracle RAC 节点复制到刚才创建的授权密钥文件 (~/.ssh/authorized_keys) 中。同样,从 ilearndb1 进行该操作。系统将提示您为每个访问的 Oracle RAC 节点输入 grid OS 用户帐户口令。

以下示例是在 ilearndb1 节点上运行的,假定集群有两个节点,分别是 ilearndb1 ilearndb2

[grid@ilearndb1 ~]$ ssh ilearndb1  cat ~/.ssh/id_dsa.pub >>  ~/.ssh/authorized_keys

The authenticity of host 'ilearndb1 (192.168.81.18)' can't be established.

RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'ilearndb1,192.168.81.18' (RSA) to the list of known

hosts.

grid@ilearndb1's password:xxxxx 

 

[grid@ilearndb1 ~]$ ssh ilearndb2 cat ~/.ssh/id_dsa.pub >>  ~/.ssh/authorized_keys

The authenticity of host 'ilearndb2 (192.168.1.152)' can't be established.

RSA key fingerprint is 97:ab:db:26:f6:01:20:cc:e0:63:d0:d1:73:7e:c2:0a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'ilearndb2,192.168.1.152' (RSA) to the list of known

hosts.

grid@ilearndb2's password:xxxxx                                  

第一次使用 SSH 从某个特定系统连接到节点时,您会看到类似以下的消息:

The authenticity of host 'ilearndb1 (192.168.81.18)' can't be established.

RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.

Are you sure you want to continue connecting (yes/no)? yes                                  

在该提示下输入 yes 继续。于是,会将公共主机名添加到 ~/.ssh 目录下的 known_hosts 文件中,以后再从此系统连接到相同节点时就不会看到此消息了。

  1. 此时,ilearndb1 上的授权密钥文件 (~/.ssh/authorized_keys) 中含有来自集群中各个节点的 DSA 公共密钥。

[grid@ilearndb1 ~]$ ls -l ~/.ssh

total 16

-rw-r--r-- 1 grid oinstall 1206 Nov 12 12:45 authorized_keys

-rw------- 1 grid oinstall  668 Nov 12 09:24 id_dsa

-rw-r--r-- 1 grid oinstall  603 Nov 12 09:24 id_dsa.pub

-rw-r--r-- 1 grid oinstall  808 Nov 12 12:45 known_hosts                                  

我们现在将其复制到集群中的其余节点。在我们的双节点集群示例中,唯一剩下的节点就是 ilearndb2。使用 scp 命令将授权密钥文件复制到集群中的所有其余节点:

[grid@ilearndb1 ~]$ scp ~/.ssh/authorized_keys ilearndb2:.ssh/authorized_keys

grid@ilearndb2's password:xxxxx

authorized_keys                                   100% 1206     1.2KB/s   00:00                                  

  1. 通过登录到节点并运行以下命令,为集群中的两个 Oracle RAC 节点更改授权密钥文件的权限:

[grid@ilearndb1 ~]$ chmod 600 ~/.ssh/authorized_keys                                  

10.8在集群节点上启用 SSH 用户等效性

将包含所有公共密钥的 authorized_keys 文件复制到集群中的每个节点之后,完成本节中的各个步骤以确保正确配置了集群成员节点之间的无口令 SSH 连接。在本示例中,将使用名为 grid Oracle Grid Infrastructure 软件所有者。

当您运行本节中的测试 SSH 命令时,如果看到除日期和主机名之外的任何其他消息或文本,则 Oracle 安装将失败。如果任一节点提示您输入口令或口令短语,则验证节点上的 ~/.ssh/authorized_keys 文件中包含了正确的公共密钥并且您已创建了具有同样组成员关系和 ID Oracle 软件所有者。进行必要的更改,以确保您在输入这些命令时只显示日期和主机名。您应当确保对生成任何输出或询问任何问题的登录脚本的任何部分进行修改,以便 它们仅当 shell 交互式 shell 时才会生效。

 

  1. 在您希望运行 OUI 的系统 (ilearndb1) 上,以 grid 用户身份登录。

[root@ilearndb1 ~]# su - grid                                  

  1. 如果 SSH 配置正确,您将能够从终端对话使用 ssh scp 命令,而无需提供口令或口令短语。

[grid@ilearndb1 ~]$ ssh ilearndb1 "date;hostname"

Fri Nov 13 09:46:56 EST 2009

ilearndb1 

 

[grid@ilearndb1 ~]$ ssh ilearndb2 "date;hostname"

Fri Nov 13 09:47:34 EST 2009

ilearndb2                                  

  1. Oracle RAC 集群中的其余节点 (ilearndb2) 上执行相同的操作,以确保这些节点同样可以访问所有其他节点而无需提供口令或口令短语,并且这些节点添加到了 known_hosts 文件中:

[grid@ilearndb2 ~]$ ssh ilearndb1 "date;hostname"

The authenticity of host 'ilearndb1 (192.168.81.18)' can't be established.

RSA key fingerprint is 2f:0d:2c:da:9f:d4:3d:2e:ea:e9:98:20:2c:b9:e8:f5.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'ilearndb1,192.168.81.18' (RSA) to the list of known

hosts.

Fri Nov 13 10:19:57 EST 2009

ilearndb1 

 

[grid@ilearndb2 ~]$ ssh ilearndb1 "date;hostname"

Fri Nov 13 10:20:58 EST 2009

ilearndb1 

 

-------------------------------------------------------------------------- 

 

[grid@ilearndb2 ~]$ ssh ilearndb2 "date;hostname"

The authenticity of host 'ilearndb2 (192.168.1.152)' can't be established.

RSA key fingerprint is 97:ab:db:26:f6:01:20:cc:e0:63:d0:d1:73:7e:c2:0a.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'ilearndb2,192.168.1.152' (RSA) to the list of known

hosts.

Fri Nov 13 10:22:00 EST 2009

ilearndb2 

 

[grid@ilearndb2 ~]$ ssh ilearndb2 "date;hostname"

Fri Nov 13 10:22:01 EST 2009

ilearndb2                                  

  1. Oracle Universal Installer 是一个 GUI 接口,要求使用 X 服务器。在启用了用户等效性的终端会话中(您将从其中执行 Oracle 安装的节点),将环境变量 DISPLAY 设置为有效的 X 窗口显示:

BourneKorn Bash shell

[grid@ilearndb1 ~]$ DISPLAY=<Any X-Windows Host>:0

[grid@ilearndb1 ~]$ export DISPLAY                                  

C shell

[grid@ilearndb1 ~]$ setenv DISPLAY <Any X-Windows Host>:0                                  

DISPLAY 变量设置为有效的 X 窗口显示后,您应当执行当前终端会话的另一个测试,以确保未启用 X11 forwarding

[grid@ilearndb1 ~]$ ssh ilearndb1 hostname

ilearndb1 

 

[grid@ilearndb1 ~]$ ssh ilearndb2 hostname

ilearndb2                                  

注:如果您使用远程客户端连接到执行安装的节点,则会看到类似这样的消息:“Warning:No xauth data; using fake authentication data for X11 forwarding.”,这意味着您的授权密钥文件配置正确,但是,您的 SSH 配置启用了 X11 forwarding。例如:

[grid@ilearndb1 ~]$ export DISPLAY=melody:0

[grid@ilearndb1 ~]$ ssh ilearndb2 hostname                                      

Warning: No xauth data; using fake authentication data for X11 forwarding.

ilearndb2                                  

注意,启用 X11 Forwarding 将导致 Oracle 安装失败。要纠正这个问题,需为禁用 X11 Forwarding oracle OS 用户帐户创建一个用户级 SSH 客户端配置文件:

  1. 使用文本编辑器,编辑或创建 ~/.ssh/config 文件
  2. 确保 ForwardX11 属性设为 no。例如,将以下内容插入 ~/.ssh/config 文件:

Host *

 

      ForwardX11 no

10.9防止 stty 命令引发的安装错误

Oracle Grid Infrastructure Oracle RAC 软件的安装过程中,OUI 使用 SSH 运行命令并将文件复制到其他节点。在安装过程中,系统中的隐藏文件(例如 .bashrc .cshrc)如果包含stty 命令,则会导致生成文件错误和其他安装错误。

要避免该问题,必须在每个 Oracle 安装所有者的用户主目录中修改这些文件以取消所有 STDERR 输出,如下所示: 

  • BourneBash Korn shell

if [ -t 0 ]; then  stty intr ^C

fi 

  • C shell

test -t 0 if ($status == 0) then

stty intr ^C

endif

注:如果由远程 shell 加载的隐藏文件包含 stty 命令,则 OUI 将指示错误并停止安装。

 

11. 安装并配置 ASMLib 2.0

应在集群中的两个 Oracle RAC 节点上执行本节中的安装和配置过程。但创建 ASM 磁盘将只需在集群中的单个节点 (ilearndb1) 上执行。

本节中,我们将安装并配置 ASMLib 2.0,它是 Oracle 数据库的自动存储管理 (ASM) 特性的一个支持库。本文将使用 ASM 作为 Oracle Clusterware 文件(OCR 和表决磁盘)、Oracle Database 文件(数据、联机重做日志、控制文件、存档重做日志)和快速恢复区的共享文件系统和卷管理器。

自动存储管理简化 了数据库的管理工作,有了它,DBA 无需直接管理可能数千个的 Oracle 数据库文件,而只需管理分配给 Oracle 数据库的磁盘组。ASM 内置在 Oracle 内核中,既可用于 Oracle 的单实例环境中,也可用于 Oracle 的集群实例环境中。Oracle 使用的所有文件和目录将保存在 磁盘组 (本文中为三个磁盘组)。ASM 在所有可用磁盘驱动器上执行并行负载平衡,以防止热点问题并最大程度地提高性能,甚至对于数据使用快速变化的模式也是如此。ASMLib 令使用 ASM Oracle 数据库更加高效,并能够访问它当前使用的磁盘组。

请记住 ASMLib 只是 ASM 软件的一个支持库。本指南稍后 ASM 软件作为 Oracle Grid Infrastructure 的一部分来安装。 Oracle Grid Infrastructure 11g 2 (11.2) 开始,自动存储管理和 Oracle Clusterware 软件一起打包到同一个二进制发布版本中并安装到同一个主目录中,这个主目录称为 Grid Infrastructure 主目录。Oracle Grid Infrastructure 软件将为 grid 用户所拥有。

那么,ASM 是否必须使用 ASMLib?完全不是。事实上,有两种不同方法可在 Linux 上配置 ASM 

  • 使用 ASMLib I/O ASM此方法使用 ASMLib 调用在由 ASM 管理的原始 块设备 上创建所有 Oracle 数据库文件。由于 ASMLib 使用块设备,因此该方法不需要原始设备。
  • 使用标准 Linux I/O ASM此方法不使用 ASMLib。此方法使用标准 Linux I/O 系统调用在 ASM 管理的原始字符设备 上创建所有的 Oracle 数据库文件。您将需要为 ASM 使用的所有磁盘分区创建原始设备。

在本文中,我将使用使用 ASMLib I/O ASM”方法。Oracle Metalink Note 275315.1 中说明,所提供的 ASMLib 用于支持对 Linux 磁盘的 ASM I/O,同时不受标准 UNIX I/O API 的限制。我计划将来执行几个测试以确定使用 ASMLib 将会带来的性能改善。这些性能度量和测试细节超出了本文的范围,因此将不予讨论。

如果要了解有关 Oracle ASMLib 2.0 的详细信息,请访问这里

11.1安装 ASMLib 2.0 程序包

在本文的前几个版本中,此时您需要从适用于 Red Hat Enterprise Linux Server 5 Oracle ASMLib 下载处下载 ASMLib 2.0 软件。由于 Oracle Enterprise Linux 中包含了 ASMLib 软件,此处不再需要进行这一操作(但用户空间库除外,它需要单独下载)ASMLib 2.0 软件体系包含下面的软件包:

64 (x86_64) 安装

 

  • ASMLib 内核驱动程序
    • oracleasm-x.x.x-x.el5-x.x.x-x.el5.x86_64.rpm —(用于默认内核)
    • oracleasm-x.x.x-x.el5xen-x.x.x-x.el5.x86_64.rpm —(用于 xen 内核) 
  • 用户空间库
    • oracleasmlib-x.x.x-x.el5.x86_64.rpm 
  • 驱动程序支持文件
    • oracleasm-support-x.x.x-x.el5.x86_64.rpm

Oracle Enterprise Linux 5 来说,默认情况下不安装 ASMLib 2.0 软件包。5 CD 上有 ASMLib 2.0 内核驱动程序,3 CD 上有驱动程序支持文件。用户空间库需单独下载,因为 Enterprise Linux 不包含该库。要确定 Oracle ASMLib 软件包是否已安装(多数情况下没有),在两个 Oracle RAC 节点上执行以下命令:

[root@ilearndb1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}

(%{ARCH})\n"| grep oracleasm | sort

如果未安装 ASMLib 2.0 软件包,依次加载 Enterprise Linux 3 CD 5 CD 到每个 Oracle RAC 节点上并执行以下命令:

From Enterprise Linux 5.4 (x86_64) - [CD #3]

[root@ilearndb1 ~]# mount -r /dev/cdrom /media/cdrom

[root@ilearndb1 ~]# cd /media/cdrom/Server/

[root@ilearndb1 Server]# rpm -Uvh oracleasm-support-2.1.3-1.el5.x86_64.rpm

warning: oracleasm-support-2.1.3-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

Preparing...                ########################################### [100%]

   1:oracleasm-support      ########################################### [100%]

[root@ilearndb1 Server]# cd /

[root@ilearndb1 /]# eject

From Enterprise Linux 5.4 (x86_64) - [CD #5]

[root@ilearndb1 /]# mount  -r /dev/cdrom  /media/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@ilearndb1 /]# cd  /media/cdrom/Server

[root@ilearndb1 Server]# rpm -Uvh oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm

warning: oracleasm-2.6.18-164.el5-2.0.5-1.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159

Preparing...                ########################################### [100%]

   1:oracleasm-2.6.18-164.el########################################### [100%]

[root@ilearndb1 Server]# cd /

[root@ilearndb1 /]# eject

 

                           

安装完 ASMLib 软件包后,在两个 Oracle RAC 节点上验证已安装该软件:

[root@ilearndb1 ~]# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}

(%{ARCH})\n"| grep oracleasm | sort

oracleasm-2.6.18-164.el5-2.0.5-1.el5 (x86_64)

oracleasm-support-2.1.3-1.el5 (x86_64)

11.2下载 Oracle ASMLib 用户空间库

如上节所述,ASMLib 2.0 软件包含在 Enterprise Linux 中,但用户空间库则不然(用户空间库也称做 ASMLib 支持库)。用户空间库是必需的,可在此处免费下载:

64 (x86_64) 安装  

将用户空间库下载到集群中的两个 Oracle RAC 节点后,使用以下命令进行安装:

[root@ilearndb1 ~]# rpm -Uvh oracleasmlib-2.0.4-1.el5.x86_64.rpm

Preparing...                ########################################### [100%]

1:oracleasmlib          ########################################### [100%]                              

有关如何通过 Unbreakable Linux Network 获取 ASMLib 支持库(并非本文必需)的信息,请访问通过 Unbreakable Linux Network 获得 Oracle ASMLib

11.3配置 ASMLib

现在,您已安装了用于 Linux ASMLib 程序包,接下来您需要配置并加载 ASM 内核模块。需要在两个 Oracle RAC 节点上作为 root 用户帐户执行该任务。

oracleasm 命令的默认路径为 /usr/sbin。以前版本中使用的 /etc/init.d 路径并未被弃用,但该路径下的 oracleasm 二进制文件现在一般用于内部命令。如果输入 oracleasm configure 命令时不带 -i 标志,则显示当前配置。例如,

[root@ilearndb1 ~]# /usr/sbin/oracleasm configure

ORACLEASM_ENABLED=false

ORACLEASM_UID=

ORACLEASM_GID=

ORACLEASM_SCANBOOT=true

ORACLEASM_SCANORDER=""

ORACLEASM_SCANEXCLUDE=""

  1. 输入以下命令,以使用 configure 选项运行 oracleasm 初始化脚本:

[root@ilearndb1 ~]# /usr/sbin/oracleasm configure -i

Configuring the Oracle ASM library driver. 

This will configure the on-boot properties of the Oracle ASM library driver.

The following questions will determine whether the driver is loaded on boot

and what permissions it will have.

The current values will be shown in brackets ('[]').

Hitting <ENTER> without typing an answer will keep that current value. 

Ctrl-C will abort.

 

Default user to own the driver interface []: grid

Default group to own the driver interface []: asmadmin

Start Oracle ASM library driver on boot (y/n) [n]: y

Scan for Oracle ASM disks on boot (y/n) [y]: y

Writing Oracle ASM library driver configuration: done                                  

该脚本完成以下任务: 

  • 创建 /etc/sysconfig/oracleasm 配置文件
  • 创建 /dev/oracleasm 挂载点
  • 挂载 ASMLib 驱动程序文件系统

ASMLib 驱动程序文件系统并非常规的文件系统。它只用于自动存储管理库与自动存储管理驱动程序的通讯。

  1. 输入以下命令以加载 oracleasm 内核模块:

[root@ilearndb1 ~]# /usr/sbin/oracleasm init

Creating /dev/oracleasm mount point: /dev/oracleasm

Loading module "oracleasm": oracleasm

Mounting ASMlib driver filesystem: /dev/oracleasm

  1. 对集群中要安装 Oracle RAC 的所有节点 (ilearndb2) 重复此过程。

11.4 Oracle 创建 ASM 磁盘

创建 ASM 磁盘只需在 RAC 集群中的一个节点上以 root 用户帐户执行。我将在 ilearndb1 上运行这些命令。在另一个 Oracle RAC 节点上,您将需要执行 scandisk 以识别新卷。该操作完成后,应在两个 Oracle RAC 节点上运行 oracleasm listdisks 命令以验证是否创建了所有 ASM 磁盘以及它们是否可用。

iSCSI 卷上创建分区 一节中,我们对 ASM 要使用的三个 iSCSI 卷进行了配置(分区)。ASM 将用于存储 Oracle Clusterware 文件、Oracle 数据库文件(如联机重做日志、数据库文件、控制文件、存档重做日志文件)和快速恢复区。在配置三个 ASM 卷时,使用 udev 创建的本地设备名。

要使用 iSCSI 目标名到本地设备名映射创建 ASM 磁盘,键入以下命令:

[root@ilearndb1 ~]# /usr/sbin/oracleasm createdisk  CRSVOL1  /dev/asm-ocr1

 Writing disk header: done

Instantiating disk: done 

 

[root@ilearndb1 ~]# /usr/sbin/oracleasm createdisk DATAVOL1 /dev/asm-data1

Writing disk header: done

Instantiating disk: done 

 

[root@ilearndb1 ~]# /usr/sbin/oracleasm createdisk FRAVOL1 /dev/asm-fra1

Writing disk header: done

Instantiating disk: done

要使磁盘可用于集群中其他节点 (ilearndb2),以 root 用户身份在每个节点上输入以下命令:

[root@ilearndb2 ~]# /usr/sbin/oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

Instantiating disk "FRAVOL1"

Instantiating disk "DATAVOL1"

Instantiating disk "CRSVOL1"

现在,我们可以使用以下命令在 RAC 集群中的两个节点上以 root 用户帐户测试是否成功创建了 ASM 磁盘。此命令指出连接的节点的、标记为自动存储管理磁盘的共享磁盘:

[root@ilearndb1 ~]# /usr/sbin/oracleasm   listdisks

CRSVOL1

DATAVOL1

FRAVOL1 

 

[root@ilearndb2 ~]# /usr/sbin/oracleasm listdisks

CRSVOL1

DATAVOL1

FRAVOL1

 

12. 下载 Oracle RAC 11g 2 版软件

只需在集群中的一个节点上执行以下下载过程。

下一步是从 Oracle 技术网 (OTN) 下载并解压缩所需的 Oracle 软件包: 

如果您目前没有 Oracle OTN 帐户,那么您需要创建一个。这是免费帐户!

Oracle 提供了一个免费的开发和测试许可。但不提供支持,且该许可不允许用于生产目的。OTN 提供了该许可协议的完整说明。

64 (x86_64) 安装

http://www.oracle.com/technetwork/cn/database/database11g/downloads/112010-linx8664soft-098700-zhs.html

您将从 Oracle 下载所需的软件并将其解压缩到集群的一个 Linux 节点(即 ilearndb1)上。您将从此计算机执行所有的 Oracle 软件安装。Oracle 安装程序会通过远程访问 (scp) 将所需软件包复制到 RAC 配置中的所有其他节点。

以相应软件所有者的身份登录到要执行所有 Oracle 安装的节点 (ilearndb1)。例如,以 grid 用户身份登录后将 Oracle Grid Infrastructure 软件下载到 /home/grid/software/oracle 目录。然后,以 oracle 用户身份登录,将 Oracle Database Oracle Examples(可选)软件下载到 /home/oracle/software/oracle 目录。

12.1下载并解压缩 Oracle 软件

下载以下软件包: 

  • 适用于 Linux Oracle Database 11g 2 Grid Infrastructure (11.2.0.1.0)
  • 适用于 Linux Oracle Database 11g 2 (11.2.0.1.0)
  • Oracle Database 11g 2 Examples(可选)

所有下载均在同一页面中提供。

grid 用户身份解压缩 Oracle Grid Infrastructure 软件:

[grid@ilearndb1 ~]$ mkdir -p /home/grid/software/oracle

[grid@ilearndb1 ~]$ mv linux.x64_11gR2_grid.zip /home/grid/software/oracle

[grid@ilearndb1 ~]$ cd /home/grid/software/oracle

[grid@ilearndb1 oracle]$ unzip linux.x64_11gR2_grid.zip    

                         

oracle 用户身份解压缩 Oracle Database Oracle Examples 软件:

[oracle@ilearndb1 ~]$ mkdir -p /home/oracle/software/oracle

[oracle@ilearndb1 ~]$ mv linux.x64_11gR2_database_1of2.zip  /home/oracle/software/oracle

[oracle@ilearndb1 ~]$ mv linux.x64_11gR2_database_2of2.zip

/home/oracle/software/oracle

[oracle@ilearndb1 ~]$ mv linux.x64_11gR2_examples.zip /home/oracle/software/oracle

[oracle@ilearndb1 ~]$ cd /home/oracle/software/oracle

[oracle@ilearndb1 oracle]$ unzip linux.x64_11gR2_database_1of2.zip

[oracle@ilearndb1 oracle]$ unzip linux.x64_11gR2_database_2of2.zip

[oracle@ilearndb1 oracle]$ unzip linux.x64_11gR2_examples.zip         

                    

 

13. 集群的 Oracle Grid Infrastructure 的安装前任务

在集群中的两个 Oracle RAC 节点上执行以下检查。

本节包含尚未讨论过的 Oracle Grid Infrastructure 的其余所有安装前任务。请注意,在运行 Oracle 安装程序之前不一定要手动运行集群验证实用程序 (CVU)。在 Oracle Grid Infrastructure 安装结束时,CVU 会作为配置助手过程的一部分自动运行。

13.1安装用于 Linux cvuqdisk 程序包

在两个 Oracle RAC 节点上安装操作系统程序包 cvuqdisk。如果没有 cvuqdisk 集群验证实用程序就无法发现共享磁盘,当运行(手动运行或在 Oracle Grid Infrastructure 安装结束时自动运行)集群验证实用程序时,您会收到这样的错误消息:“Package cvuqdisk not installed”。使用适用于您的硬件体系结构(例如,x86_64 i386)的 cvuqdisk RPM

cvuqdisk RPM 包含在 Oracle Grid Infrastructure 安装介质上的 rpm 目录中。对于本文,Oracle Grid Infrastructure 介质已由 grid 用户解压缩到 ilearndb1 节点的 /home/grid/software/oracle/grid 目录中。

要安装 cvuqdisk RPM,执行以下步骤: 

  1. 找到 cvuqdisk RPM 程序包,位于 ilearndb1 节点中安装介质的 rpm 目录下:

[ilearndb1]:  /home/grid/software/oracle/grid/rpm/cvuqdisk-1.0.7-1.rpm

  1. grid 用户帐户将 cvuqdisk 程序包从 ilearndb1 复制到 ilearndb2

[ilearndb2]:  /home/grid/software/oracle/grid/rpm/cvuqdisk-1.0.7-1.rpm

  1. root 用户身份分别登录到两个 Oracle RAC 节点:

[grid@ilearndb1 rpm]$ su 

 

[grid@ilearndb2 rpm]$ su

  1. 设置环境变量 CVUQDISK_GRP,使其指向作为 cvuqdisk 的所有者所在的组(本文为 oinstall):

[root@ilearndb1 rpm]# CVUQDISK_GRP=oinstall

[root@ilearndb1 rpm]# export CVUQDISK_GRP

 

[root@ilearndb2 ~]# CVUQDISK_GRP=oinstall

[root@ilearndb2 ~]# export CVUQDISK_GRP

  1. 在保存 cvuqdisk RPM 的目录中,使用以下命令在两个 Oracle RAC 节点上安装 cvuqdisk 程序包:

[root@ilearndb1 rpm]# rpm -iv cvuqdisk-1.0.7-1.rpm

Preparing packages for installation...

cvuqdisk-1.0.7-1 

 

[root@ilearndb2 rpm]# rpm -iv cvuqdisk-1.0.7-1.rpm

Preparing packages for installation...

cvuqdisk-1.0.7-1

13.2使用 CVU 验证是否满足 Oracle 集群件要求(可选)

如本节前面所述,在运行 Oracle 安装程序之前不一定要运行集群验证实用程序。从 Oracle Clusterware 11g 2 版开始,Oracle Universal Installer (OUI) 会检测到不满足最低安装要求的情况,并创建 shell 脚本(称为修复脚本)以完成尚未完成的系统配置步骤。如果 OUI 发现未完成的任务,它会生成修复脚本 (runfixup.sh)。在 Oracle Grid Infrastructure 安装过程中,单击 Fix and Check Again Button 之后,可以运行修复脚本。

您也可以让 CVU 在安装之前生成修复脚本。

如果您决定亲自运行 CVU,请记住要作为 grid 用户在将要执行 Oracle 安装的节点 (ilearndb1) 上运行。此外,必须为 grid 用户配置通过用户等效性实现的 SSH 连通性。如果您打算使用 OUI 配置 SSH 连接,则 CVU 实用程序会失败,它没有机会执行其任何的关键检查并生成修复脚本:

Checking user equivalence...

 

Check: User equivalence for user "grid"

  Node Name                             Comment                

  ------------------------------------  ------------------------

  ilearndb2                              failed

  ilearndb1                              failed

Result: PRVF-4007 : User equivalence check failed for user "grid"

 

ERROR:

User equivalence unavailable on all the specified nodes

Verification cannot proceed

 

 

Pre-check for cluster services setup was unsuccessful on all the nodes.

在满足了运行 CVU 实用程序的所有前提条件后,可以在安装之前手动检查集群配置,并生成修复脚本以在开始安装前更改操作系统。

[grid@ilearndb1 ~]$  cd /home/grid/software/oracle/grid

[grid@ilearndb1 grid]$ ./runcluvfy.sh stage -pre crsinst -n ilearndb1,ilearndb2

-fixup -verbose

查看 CVU 报告 在本文所述配置情况下,应该只发现如下的唯一一个错误:

                                  

Check: Membership of user "grid" in group "dba"

  Node Name         User Exists   Group Exists  User in Group  Comment

  ----------------  ------------  ------------  ------------  ----------------

  ilearndb2          yes           yes           no            failed

  ilearndb1          yes           yes           no            failed

Result: Membership check for user "grid" in group "dba" failed

                               

该检查失败的原因是,本指南通过 任务角色划分 配置创建了以角色分配的组和用户,而 CVU 不能正确识别这种配置。我们在创建任务角色划分操作系统权限组、用户和目录一节中讲述了如何创建任务角色划分配置。CVU 不能识别此类配置,因而假定 grid 用户始终是 dba 组的成员。可以放心地忽略这个失败的检查。CVU 执行的所有其他检查的结果报告应该为“passed”,之后才能继续进行 Oracle Grid Infrastructure 的安装。

13.3使用 CVU 验证硬件和操作系统设置

接下来要运行的 CVU 检查将验证硬件和操作系统设置。同样,在 ilearndb1 节点上以具有用户等效性配置的 grid 用户帐户运行以下命令:

[grid@ilearndb1 ~]$ cd /home/grid/software/oracle/grid

[grid@ilearndb1 grid]$ ./runcluvfy.sh stage -post hwos -n ilearndb1,ilearndb2  -verbose

查看 CVU 报告CVU 执行的所有其他检查的结果报告应该为“passed”,之后才能继续进行 Oracle Grid Infrastructure 的安装。

14. 为集群安装 Oracle Grid Infrastructure

仅在集群的一个 Oracle RAC 节点 (ilearndb1) 上执行以下安装过程。Oracle Universal Installer 将把 Oracle Grid Infrastructure 软件(Oracle Clusterware 和自动存储管理)安装到集群中的两个 Oracle RAC 节点。

现在您已做好准备,可以开始安装环境的网格部分了,该部分包括 Oracle Clusterware 和自动存储管理。完成以下步骤,在集群中安装 Oracle Grid Infrastructure

在安装过程中,如果您对安装程序要求您执行的操作不甚清楚,可随时单击 OUI 页面上的 Help 按钮。

14.1典型安装与高级安装

11g 2 版开始,Oracle 提供了两个选项供您安装 Oracle Grid Infrastructure 软件:

 

  • 典型安装

典型安装选项是简化的安装过程,只需进行最少的手动配置选择。这个新选项为用户(尤其是那些集群技术新手)提供了一个简化的集群安装过程。典型安装是让尽可能多的选项默认采用最佳实践的建议值。

  • 高级安装

高级安装选项是一个高级过程,需要较高程度的系统知识。该安装选项使您可以进行特定的配置选择,包括额外的存储和网络选择、对基于角色的管理权限使用操作系统组身份验证、与 IPMI 集成,或使用细粒度指定自动存储管理角色。

由于本文将使用基于角色的管理权限和细粒度来指定自动存储管理角色,因此我们将使用高级安装选项。

14.2配置 SCAN 而不使用 DNS

对于本文,尽管我说过将手动分配 IP 地址并使用 DNS 方法 行名称解析(这与 GNS 不同),实际上我不会在任何 DNS 服务器(或 GNS)中定义 SCAN。相反,我将只在每个 Oracle RAC 节点以及任何将连接到数据库集群的客户端的 hosts 文件 ( /etc/hosts) 中定义 SCAN 主机名和 IP 地址。尽管 Oracle 非常不鼓励这么做,并且强烈建议使用 GNS DNS 解析方法,但我觉得对 DNS 的配置超出了本文的范围。本节将提供一种变通方法(这完全是一种非常规的方法),该方法使用 nslookup 二进制文件,用这种方法,在 Oracle Grid Infrastructure 的安装过程中能够成功地完成集群验证实用程序。请注意,本文所述的这个变通方法只为简便起见,不应认为其可用于生产环境。

只在 hosts 文件中而不在网格命名服务 (GNS) DNS 中定义 SCAN 是一种无效配置,将导致 Oracle Grid Infrastructure 安装过程中运行的集群验证实用程序失败:

 

17Oracle Grid Infrastructure/CVU 错误 (配置 SCAN 而不使用 DNS

 

 

INFO: Checking Single Client Access Name (SCAN)...

INFO: Checking name resolution setup for "ilearndb-cluster-scan"...

INFO: ERROR:

INFO: PRVF-4657 : Name resolution setup check for "ilearndb-cluster-scan" (IP address: 216.24.138.153) failed

INFO: ERROR:

INFO: PRVF-4657 : Name resolution setup check for "ilearndb-cluster-scan" (IP address: 192.168.1.187) failed

INFO: ERROR:

INFO: PRVF-4664 : Found inconsistent name resolution entries for SCAN name "ilearndb-cluster-scan"

INFO: Verification of SCAN VIP and Listener setup failed

 

如果 CVU 只报告了此错误,可放心忽略此检查,单击 OUI 中的 [Next] 按钮继续进行 Oracle Grid Infrastructure 的安装。在文档 ID887471.1My Oracle Support 网站)中对此有记述。

如果您只在 hosts 文件中定义 SCAN 但却想让 CVU 成功完成,只需在两个 Oracle RAC 节点上以 root 身份对 nslookup 实用程序进行如下修改。

首先,在两个 Oracle RAC 节点上将原先的 nslookup 二进制文件重命名为 nslookup.original

[root@ilearndb1 ~]# mv /usr/bin/nslookup /usr/bin/nslookup.original

然后,新建一个名为 /usr/bin/nslookup shell 脚本,在该脚本中用 24.154.1.34 替换主 DNS,用 ilearndb-cluster-scan 替换 SCAN 主机名,用 192.168.1.187 替换 SCAN IP 地址,如下所示:

 

#!/bin/bash

 

HOSTNAME=${1}

 

if [[ $HOSTNAME = "

                                     

ilearndb-cluster-scan" ]]; then

    echo "Server:          24.154.1.34"

    echo "Address:         24.154.1.34#53"

    echo "Non-authoritative answer:"

    echo "Name:    ilearndb-cluster-scan"

    echo "Address:  192.168.1.187"

else

    /usr/bin/nslookup.original $HOSTNAME

fi

 

最后,将新建的 nslookup shell 脚本更改为可执行脚本:

[root@ilearndb1 ~]# chmod 755 /usr/bin/nslookup

记住要在两个 Oracle RAC 节点上执行这些操作。

每当 CVU 使用您的 SCAN 主机名调用 nslookup 脚本时,这个新的 nslookup shell 脚本只是回显您的 SCAN IP 地址,其他情况下则会调用原先的 nslookup 二进制文件。

现在,在 Oracle Grid Infrastructure 的安装过程中,当 CVU 尝试验证您的 SCAN 时,它就会成功通过:

 

 

[grid@ilearndb1 ~]$ cluvfy comp scan -verbose

 

Verifying scan

 

Checking Single Client Access Name (SCAN)...

  SCAN VIP name     Node          Running?   ListenerName  Port    Running?

----------------  ------------  ---------  ------------  ------  ----------

  ilearndb-cluster-scan  ilearndb1      true     LISTENER     1521      true

 

Checking name resolution setup for "ilearndb-cluster-scan"...

  SCAN Name     IP Address                Status                    Comment

  ------------  ------------------------  ------------------------  ----------

  ilearndb-cluster-scan  192.168.1.187            passed

 

Verification of SCAN VIP and Listener setup passed

 

Verification of scan was successful.

 

===============================================================================

 

[grid@ilearndb2 ~]$ cluvfy comp scan -verbose

 

Verifying scan

 

Checking Single Client Access Name (SCAN)...

  SCAN VIP name     Node          Running?   ListenerName  Port    Running?

----------------  ------------  ---------  ------------  ------  ----------

  ilearndb-cluster-scan  ilearndb1      true      LISTENER    1521      true

 

Checking name resolution setup for "ilearndb-cluster-scan"...

  SCAN Name     IP Address                Status                    Comment

  ------------  ------------------------  ------------------------  ----------

  ilearndb-cluster-scan  192.168.1.187            passed

 

Verification of SCAN VIP and Listener setup passed

 

Verification of scan was successful.

 

14.3验证终端 Shell 环境

在启动 Oracle Universal Installer 之前,先以 Oracle Grid Infrastructure 软件所有者的身份(本文为 grid)登录到 ilearndb1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH Telnet 连接到 ilearndb1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

14.4安装 Oracle Grid Infrastructure

grid 用户身份执行以下任务来安装 Oracle Grid Infrastructure

[grid@ilearndb1 ~]$ id

uid=1100(grid) gid=1000(oinstall)

groups=1000(oinstall),1200(asmadmin),1201(asmdba),1202(asmoper)

 

[grid@ilearndb1 ~]$ DISPLAY=<your local workstation>:0.0

[grid@ilearndb1 ~]$ export DISPLAY

 

[grid@ilearndb1 ~]$ cd /home/grid/software/oracle/grid

[grid@ilearndb1 grid]$ ./runInstaller

 

屏幕名称

响应

屏幕截图

Select Installation Option

选择 Install and Configure Grid Infrastructure for a Cluster

Select Installation Type

选择 Advanced Installation

Select Product Languages

为您的环境进行合适的选择。

Grid Plug and Play Information

有关如何配置网格命名服务 (GNS) 的说明超出了本文的范围。取消选中“Configure GNS”选项。

 

Cluster Name

SCAN Name

SCAN Port

ilearndb-cluster

ilearndb-cluster-scan

1521

 

单击 [Next] 之后,OUI 将尝试验证 SCAN 信息:

 

Cluster Node Information

使用此屏幕将 ilearndb2 节点添加到集群中并配置 SSH 连接。

 

单击 Add 按钮,按下表添加 ilearndb2 及其虚拟 IP 名称 ilearndb2-vip

 

Public Node Name

Virtual Host Name

ilearndb1

ilearndb1-vip

ilearndb2

ilearndb2-vip

 

接下来,单击 [SSH Connectivity] 按钮。输入 grid 用户的 OS Password,然后单击 [Setup] 按钮。这会启动 SSH Connectivity 配置过程:

 

 

SSH 配置过程成功完成后,确认该对话框。

 

单击 [Test] 按钮结束该屏幕并验证无口令的 SSH 连接。

Specify Network Interface Usage

指定用于“Public”网络和“Private”网络的网络接口。进行所需更改以与下表中各值保持一致:

 

Interface Name

Subnet

Interface Type

eth0

192.168.81.0

Public

eth1

192.168.3.0

Private

 

Storage Option Information

选择 Automatic Storage Management (ASM)

Create ASM Disk Group

根据下表中的值创建一个 ASM 磁盘组,将用于保存 Oracle Clusterware 文件:

 

Disk Group Name

Redundancy

Disk Path

CRS

External

ORCL:CRSVOL1

 

Specify ASM Password

对于本文,我选择 Use same passwords for these accounts

Failure Isolation Support

配置 Intelligent Platform Management Interface (IPMI) 超出了本文的范围。选择 Do not use Intelligent Platform Management Interface (IPMI)

Privileged Operating System Groups

本文通过任务角色划分配置来使用基于角色的管理权限和细粒度来指定自动存储管理角色。

 

进行所需更改以与下表中各值保持一致:

 

OSDBA for ASM

OSOPER for ASM

OSASM

asmdba

asmoper

asmadmin

 

Specify Installation Location

Oracle Grid Infrastructure 安装设置 Oracle Base ( $ORACLE_BASE) Software Location ( $ORACLE_HOME)

   Oracle Base /u01/app/grid

   Software Location /u01/app/11.2.0/grid

Create Inventory

由于这是该主机上的第一次安装,您需要创建 Oracle 清单目录。使用 OUI 提供的默认值:

   Inventory Directory /u01/app/oraInventory

   oraInventory Group Name oinstall

Prerequisite Checks

安装程序将执行一系列的检查以确定这两个 Oracle RAC 节点是否满足安装和配置 Oracle Clusterware 和自动存储管理软件的最低要求。

 

Oracle Clusterware 11g 2 (11.2) 开始,如果任何检查失败,安装程序 (OUI) 将创建 shell 脚本程序(称为修复脚本)以解决许多不满足系统配置要求之问题。如果 OUI 检测到标记为“fixable”的不满足要求之任务,您可通过单击 [Fix & Check Again] 按钮生成修复脚本来轻松解决这一问题。

 

修复脚本是在安装期间生成的。安装程序将提示您以 root 身份在一个单独的终端会话中运行该脚本。当您运行该脚本时,它会将内核值提高到所需最小值,如有必要,会完成其他操作系统配置任务。

 

如果通过了所有的必备条件检查(我的安装就是这样的情况),OUI 继续转到 Summary 屏幕。

Summary

单击 [Finish] 开始安装。

Setup

安装程序在两个 Oracle RAC 节点上执行 Oracle Grid Infrastructure 安装过程。

Execute Configuration scripts

安装完成后,将提示您运行 /u01/app/oraInventory/orainstRoot.sh /u01/app/11.2.0/grid/root.sh 脚本。以 root 用户帐户在集群的两个 Oracle RAC 节点(从执行安装的节点开始)上打开一个新的控制台窗口。

 

RAC 集群的两个节点上运行 orainstRoot.sh 脚本:

[root@ilearndb1 ~]# /u01/app/oraInventory/orainstRoot.sh  [root@ilearndb2 ~]# /u01/app/oraInventory/orainstRoot.sh

 

在集群中两个 Oracle RAC 节点(从执行安装的节点开始)上的同一个新控制台窗口中,仍以 root 用户帐户登录。在 RAC 集群中的两个节点上运行 root.sh 脚本(从执行安装的节点开始,每次一个)。

[root@ilearndb1 ~]# /u01/app/11.2.0/grid/root.sh 

[root@ilearndb2 ~]# /u01/app/11.2.0/grid/root.sh

 

root.sh 脚本的运行可能需要几分钟。在最后一个节点上运行 root.sh 时,您将收到类似以下的输出,指示安装成功:

...

The inventory pointer is located at /etc/oraInst.loc

The inventory is located at /u01/app/oraInventory

'UpdateNodeList' was successful.

 

返回到 OUI,确认“Execute Configuration scripts”对话框窗口。

Configure Oracle Grid Infrastructure for a Cluster

安装程序将运行 Oracle 网络服务 (NETCA)、自动存储管理 (ASMCA) Oracle 专用互连 (VIPCA) 的配置助手。OUI 执行的最后一步是运行集群验证实用程序 (CVU)。如果配置助手和 CVU 运行成功,可单击 [Next] 然后单击 [Close] 退出 OUI

 

本节早前所述,如果只在 hosts 文件 ( /etc/hosts) 中配置 SCAN,而不在网格命名服务 (GNS) 中配置,也不使用 DNS 来手动配置,则该配置会被视为无效配置,这将导致集群验证实用程序失败。

 

如果 CVU 只报告了此错误,可放心忽略此检查并继续:单击 [Next] 按钮然后单击 [Close] 按钮退出 OUI。在文档 ID887471.1My Oracle Support 网站)中对此有记述。

 

如果您只在 hosts 文件中定义 SCAN 但却想让 CVU 成功完成,不要在 OUI 中单击 [Next] 按钮来绕过该错误。相反,要按照配置 SCAN 而不使用 DNS 一节中的说明来修改 nslookup 实用程序。在完成该节所述步骤后,返回到 OUI 中,单击 [Retry] 按钮。现在 CVU 会成功完成,不报告错误了。单击 [Next],然后单击 [Close] 退出 OUI

Finish

在安装结束时,单击 [Close] 按钮退出 OUI

警告:安装完成后,不要在 Oracle Clusterware 还在运行时手动删除或通过运行相应 cron 作业来删除 /tmp/.oracle /var/tmp/.oracle 或集群件的文件。如果删除这些文件,则 Oracle Clusterware 可能遭遇中断挂起,会出现错误 CRS-0184:Cannot communicate with the CRS daemon

 

15. 集群的 Oracle Grid Infrastructure 的安装后任务

在集群中的两个 Oracle RAC 节点上执行以下安装后过程。

15.1 验证 Oracle Clusterware 安装

安装 Oracle Grid Infrastructure 后,可以运行几个测试来验证安装是否成功。以 grid 用户身份在 RAC 集群的两个节点上运行以下命令。

15.2检查 CRS 状态

[grid@ilearndb1 ~]$ crsctl check crs

CRS-4638: Oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

[grid@ilearndb2 ~]$ crsctl check crs

CRS-4638: Oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

15.3检查 Clusterware 资源

注: Oracle Clusterware 11g 2 (11.2) 中不再使用 crs_stat 命令。

[grid@ilearndb1 ~]$ crs_stat -t -v

Name           Type           R/RA   F/FT   Target    State     Host

----------------------------------------------------------------------

ora.CRS.dg     ora....up.type 0/5    0/     ONLINE    ONLINE    ilearndb1

ora....ER.lsnr ora....er.type 0/5    0/     ONLINE    ONLINE    ilearndb1

ora....N1.lsnr ora....er.type 0/5    0/0    ONLINE    ONLINE    ilearndb1

ora.asm        ora.asm.type   0/5    0/     ONLINE    ONLINE    ilearndb1

ora.eons       ora.eons.type  0/3    0/     ONLINE    ONLINE    ilearndb1

ora.gsd        ora.gsd.type   0/5    0/     OFFLINE   OFFLINE               

ora....network ora....rk.type 0/5    0/     ONLINE    ONLINE    ilearndb1

ora.oc4j       ora.oc4j.type  0/5    0/0    OFFLINE   OFFLINE               

ora.ons        ora.ons.type   0/3    0/     ONLINE    ONLINE    ilearndb1

ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    ilearndb1

ora....E1.lsnr application    0/5    0/0    ONLINE    ONLINE    ilearndb1

ora....de1.gsd application    0/5    0/0    OFFLINE   OFFLINE               

ora....de1.ons application    0/3    0/0    ONLINE    ONLINE    ilearndb1

ora....de1.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    ilearndb1

ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    ilearndb2

ora....E2.lsnr application    0/5    0/0    ONLINE    ONLINE    ilearndb2

ora....de2.gsd application    0/5    0/0    OFFLINE   OFFLINE               

ora....de2.ons application    0/3    0/0    ONLINE    ONLINE    ilearndb2    

ora....de2.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    ilearndb2    

ora....ry.acfs ora....fs.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora.scan1.vip  ora....ip.type 0/0    0/0    ONLINE    ONLINE    ilearndb1

[grid@ilearndb2 ~]$ crs_stat -t -v

Name           Type           R/RA   F/FT   Target    State     Host       

----------------------------------------------------------------------

ora.CRS.dg     ora....up.type 0/5    0/     ONLINE    ONLINE    ilearndb1   

ora....ER.lsnr ora....er.type 0/5    0/     ONLINE    ONLINE    ilearndb1   

ora....N1.lsnr ora....er.type 0/5    0/0    ONLINE    ONLINE    ilearndb1   

ora.asm        ora.asm.type   0/5    0/     ONLINE    ONLINE    ilearndb1   

ora.eons       ora.eons.type  0/3    0/     ONLINE    ONLINE    ilearndb1   

ora.gsd        ora.gsd.type   0/5    0/     OFFLINE   OFFLINE              

ora....network ora....rk.type 0/5    0/     ONLINE    ONLINE    ilearndb1   

ora.oc4j       ora.oc4j.type  0/5    0/0    OFFLINE   OFFLINE              

ora.ons        ora.ons.type   0/3    0/     ONLINE    ONLINE    ilearndb1   

ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    ilearndb1   

ora....E1.lsnr application    0/5    0/0    ONLINE    ONLINE    ilearndb1   

ora....de1.gsd application    0/5    0/0    OFFLINE   OFFLINE              

ora....de1.ons application    0/3    0/0    ONLINE    ONLINE    ilearndb1   

ora....de1.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    ilearndb1   

ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    ilearndb2   

ora....E2.lsnr application    0/5    0/0    ONLINE    ONLINE    ilearndb2   

ora....de2.gsd application    0/5    0/0    OFFLINE   OFFLINE              

ora....de2.ons application    0/3    0/0    ONLINE    ONLINE    ilearndb2   

ora....de2.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    ilearndb2   

ora....ry.acfs ora....fs.type 0/5    0/     ONLINE    ONLINE    ilearndb1   

ora.scan1.vip  ora....ip.type 0/0    0/0    ONLINE    ONLINE    ilearndb1

15.4检查集群节点

[grid@ilearndb1 ~]$ olsnodes -n

ilearndb1        1

ilearndb2        2

[grid@ilearndb2 ~]$ olsnodes -n

ilearndb1        1

ilearndb2        2

15.5检查两个节点上的 Oracle TNS 监听器进程

[grid@ilearndb1 ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'

 

LISTENER_SCAN1

LISTENER

[grid@ilearndb2 ~]$ ps -ef | grep lsnr | grep -v 'grep' | grep -v 'ocfs' | awk '{print $9}'

LISTENER

15.6确认针对 Oracle Clusterware 文件的 Oracle ASM 功能

如果在 Oracle ASM 上安装了 OCR 和表决磁盘文件,则以 Grid Infrastructure 安装所有者的身份,使用下面的命令语法来确认当前正在运行已安装的 Oracle ASM

[grid@ilearndb1 logs]$ srvctl status asm -a

ASM is running on ilearndb1,ilearndb2

ASM is enabled.

[grid@ilearndb2 ~]$ srvctl status asm -a

ASM is running on ilearndb1,ilearndb2

ASM is enabled.

15.7检查 Oracle 集群注册表 (OCR)

[grid@ilearndb1 ~]$ ocrcheck

Status of Oracle Cluster Registry is as follows :

         Version                  :          3

         Total space (kbytes)     :     262120         

         Used space (kbytes)      :       2404         

         Available space (kbytes) :     259716         

         ID                       : 1259866904         

         Device/File Name         :       +CRS

                                    Device/File integrity check succeeded

 

                                    Device/File not configured

 

                                    Device/File not configured

 

                                    Device/File not configured

 

                                    Device/File not configured

 

         Cluster registry integrity check succeeded

 

         Logical corruption check bypassed due to non-privileged user

[grid@ilearndb2 ~]$  ocrcheck

Status of Oracle Cluster Registry is as follows :

         Version                  :          3

         Total space (kbytes)     :     262120

         Used space (kbytes)      :       2404

         Available space (kbytes) :     259716

         ID                       : 1944543105

         Device/File Name         :       +CRS

                                    Device/File integrity check succeeded

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

                                    Device/File not configured

         Cluster registry integrity check succeeded

         Logical corruption check bypassed due to non-privileged user

15.8检查表决磁盘

[grid@ilearndb1 ~]$ crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group

--  -----    -----------------                --------- ---------

 1. ONLINE   8233ccd7ff8b4ff5bf6c7844737d3029 (ORCL:CRSVOL1) [CRS]

[grid@ilearndb2  ~]$ crsctl query css votedisk

##  STATE    File Universal Id                File Name Disk group

--  -----    -----------------                --------- ---------

 1. ONLINE   8233ccd7ff8b4ff5bf6c7844737d3029 (ORCL:CRSVOL1) [CRS]

Located 1 voting disk(s).

注:要管理 Oracle ASM Oracle Net 11g 2 (11.2) 或更高安装版本,请使用集群的 Oracle Grid Infrastructure 主目录(网格主目录)中的 srvctl 程序。当我们安装 Oracle Real Application ClustersOracle 数据库软件)时,不能使用数据库主目录下的 srvctl 程序来管理 Oracle Grid Infrastructure 主目录中的 Oracle ASM Oracle Net

15.9表决磁盘管理

在以前的版本中,我们强烈建议在安装 Oracle Clusterware 软件之后使用 dd 命令备份表决磁盘。在 Oracle Clusterware 11.2 以及更高版本中,不再支持使用 dd 命令来备份和恢复表决磁盘,因而再使用该命令来备份和恢复可能导致丢失表决磁盘数据。

Oracle Clusterware 11g 2 版中不再需要备份表决磁盘。当配置的任何部分发生更改时,会在 OCR 中自动备份表决磁盘数据,并将表决磁盘数据自动恢复到任何添加的表决磁盘中。

要了解更多有关管理表决磁盘、Oracle 集群注册表 (OCR) Oracle 本地注册表 (OLR) 的信息,请参阅 Oracle Clusterware 管理和部署指南 11g 2 (11.2)

15.10备份 root.sh 脚本

Oracle 建议您在完成安装后备份 root.sh 脚本。如果您在同一 Oracle 主目录下安装其他产品,则安装程序在安装过程中会更新现有 root.sh 脚本的内容。如果您需要原先 root.sh 脚本中包含的信息,可通过 root.sh 文件副本进行恢复。

root 身份在两个 Oracle RAC 节点上备份 root.sh 文件:

[root@ilearndb1 ~]#  cd /u01/app/11.2.0/grid

[root@ilearndb1 grid]# cp root.sh root.sh.ilearndb1.AFTER_INSTALL_Aug-05-2014 

 

[root@ilearndb2 ~]# cd /u01/app/11.2.0/grid

[root@ilearndb2 grid]# cp root.sh root.sh.ilearndb2.AFTER_INSTALL_NOV-20-2009

16. 为数据和快速恢复区创建 ASM 磁盘组

grid 用户身份仅在集群中的一个节点 (ilearndb1) 上运行 ASM Configuration Assistant (asmca) 以创建其他的 ASM 磁盘组,这些磁盘组将用于创建集群化数据库。

在安装 Oracle Grid Infrastructure 时,我们配置了一个名为 +CRS ASM 磁盘组,用于存储 Oracle Clusterware 文件(OCR 和表决磁盘)。

在本节中,我们将使用 ASM Configuration Assistant ( asmca) 再创建两个 ASM 磁盘组。稍后本指南在创建集群化数据库时将使用这些新的 ASM 磁盘组。

第一个 ASM 磁盘组将命名为 +ILEARNDB_DATA,用于存储所有 Oracle 物理数据库文件(数据、联机重做日志、控制文件、存档重做日志)。另一个 ASM 磁盘组将用于名为 +FRA 的快速恢复区。

16.1验证终端 Shell 环境

启动 ASM Configuration Assistant 之前,先作为 Oracle Grid Infrastructure 软件的所有者(本文为 grid)登录到 ilearndb1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH Telnet 连接到 ilearndb1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

16.2使用 ASMCA 创建其他 ASM 磁盘组

grid 用户身份执行以下任务来创建另外两个 ASM 磁盘组:

[grid@ilearndb1 ~]$ asmca &

 

屏幕名称

响应

屏幕截图

Disk Groups

Disk Groups 选项卡中,单击 Create 按钮。

Create Disk Group

Create Disk Group 对话框应显示我们在本指南前面创建的两个 ASMLib 卷。

 

如果我们在本文前面创建的 ASMLib 卷在 Select Member Disks 窗口中不作为 eligible 而显示(ORCL:DATAVOL1 ORCL:FRAVOL1),则单击 Change Disk Discovery Path 按钮并输入 ORCL:*

 

当创建数据”ASM 磁盘组时,对于 Disk Group Name 使用 ILEARNDB_DATA。在 Redundancy 部分,选择 External (none)。最后,在 Select Member Disks 部分,选中 ASMLib ORCL:DATAVOL1

 

在确认此对话框中所有值均正确后,单击 [OK] 按钮。

Disk Groups

创建了第一个 ASM 磁盘后,将返回到最初的对话框。再次单击 Create 按钮,创建第二个 ASM 磁盘组。

Create Disk Group

Create Disk Group 现在应显示剩下的最后一个 ASMLib 卷。

 

当创建快速恢复区磁盘组时,对于 Disk Group Name 使用 FRA。在 Redundancy 部分,选择 External (none)。最后,在 Select Member Disks 部分,选中 ASMLib ORCL:FRAVOL1

 

在确认此对话框中所有值均正确后,单击 [OK] 按钮。

Disk Groups

单击 [Exit] 按钮退出 ASM Configuration Assistant

 

17. Oracle Real Application Clusters 中安装 Oracle Database 11g

仅在集群中的一个 Oracle RAC 节点 (ilearndb1) 上执行以下 Oracle Database 软件安装过程!Oracle Universal Installer 会通过 SSH Oracle Database 软件安装到集群中的两个 Oracle RAC 节点。

现在 Grid Infrastructure 软件已可以使用,您可以在集群中的一个节点 ( ilearndb1) 上以 oracle 用户身份安装 Oracle Database 软件。在安装过程中,OUI 会将二进制文件从此节点复制集群中的所有其他节点上。

就本指南而言,我们在安装 Oracle Database 软件时将不使用“Create Database”选项。在本指南稍后,我们将在完成所有安装任务之后使用 Database Configuration Assistant (DBCA) 创建集群化数据库。

17.1验证终端 Shell 环境

在启动 Oracle Universal Installer (OUI) 之前,先以 Oracle Database 软件所有者的身份(本文为 oracle)登录到 ilearndb1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH Telnet 连接到 ilearndb1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

17.2安装 Oracle Database 11g 2 版软件

oracle 用户身份执行以下任务以安装 Oracle Database 软件:

[oracle@ilearndb1 ~]$ id

uid=1101(oracle)

gid=1000(oinstall)

groups=1000(oinstall),1201(asmdba),1300(dba),1301(oper)

 

[oracle@ilearndb1 ~]$ DISPLAY=<your local workstation>:0.0

[oracle@ilearndb1 ~]$ export DISPLAY 

 

[oracle@ilearndb1 ~]$ cd /home/oracle/software/oracle/database

[oracle@ilearndb1 database]$ ./runInstaller

 

屏幕名称

响应

屏幕截图

Configure Security Updates

就本文而言,取消选中安全更新复选框,然后单击 [Next] 按钮继续。出现警告对话框时(该对话框指示您尚未提供电子邮件地址),单击 [Yes] 按钮确认。

Installation Option

选择 Install database software only

Grid Options

选择 Real Application Clusters database installation 单选按钮(此为默认选择),确保选中 Node Name 窗口中的两个 Oracle RAC 节点。

 

接下来,单击 [SSH Connectivity] 按钮。输入 oracle 用户的 OS Password,然后单击 [Setup] 按钮。这会启动 SSH Connectivity 配置过程:

 

 

SSH 配置过程成功完成后,确认该对话框。

 

单击 [Test] 按钮结束该屏幕并验证无口令的 SSH 连接。

Product Languages

为您的环境进行合适的选择。

Database Edition

选择 Enterprise Edition

Installation Location

指定 Oracle 基目录和软件位置 (Oracle_home),如下所示:

   Oracle Base/u01/app/oracle

   Software Location/u01/app/oracle/product/11.2.0/db_1

Operating System Groups

分别为 SYSDBA SYSOPER 权限选择操作系统组:

   Database Administrator (OSDBA) Group dba

   Database Operator (OSOPER) Group oper

Prerequisite Checks

安装程序将执行一系列的检查以确定两个 Oracle RAC 节点是否满足安装和配置 Oracle Database 软件的最低要求。

 

11g 2 (11.2) 开始,如果任何检查失败,安装程序 (OUI) 将创建 shell 脚本程序(称为修复脚本)以解决许多不满足系统配置要求的问题。如果 OUI 检测到标记为“fixable”的不满足要求之任务,您可通过单击 [Fix & Check Again] 按钮生成修复脚本来轻松解决这一问题。

 

修复脚本是在安装期间生成的。安装程序将提示您以 root 身份在一个单独的终端会话中运行该脚本。当您运行该脚本时,它会将内核值提高到所需最小值,如有必要,会完成其他操作系统配置任务。

 

如果通过了所有的必备条件检查(我的安装就是这样的情况),OUI 继续转到 Summary 屏幕。

Summary

单击 [Finish] 开始安装。

Install Product

安装程序在两个 Oracle RAC 节点上执行 Oracle Database 软件安装过程。

Execute Configuration scripts

安装完成后,将提示您在两个 Oracle RAC 节点上运行 /u01/app/oracle/product/11.2.0/db_1/root.sh 脚本。以 root 用户帐户在集群的两个 Oracle RAC 节点(从执行安装的节点开始)上打开一个新的控制台窗口。

 

RAC 集群的所有节点上运行 root.sh 脚本。

[root@ilearndb1 ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh 

[root@ilearndb2 ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh

 

返回到 OUI,确认“Execute Configuration scripts”对话框窗口。

Finish

在安装结束时,单击 [Close] 按钮退出 OUI

 

18. 安装 Oracle Database 11g Examples(以前的随附 CD

仅在集群中的一个 Oracle RAC 节点 (ilearndb1) 上执行以下 Oracle Database 11g Examples 软件安装过程!Oracle Universal Installer 会通过 SSH Oracle Database Examples 软件安装到集群中的两个 Oracle RAC 节点。

至此已安装了 Oracle Database 11g 软件,您可以选择安装 Oracle Database 11g Examples。和 Oracle Database 软件的安装一样,以 oracle 用户身份只在集群的一个节点 ( ilearndb1) 上安装 Examples 软件。在安装过程中,OUI 会将二进制文件从此节点复制集群中的所有其他节点上。

18.1验证终端 Shell 环境

在启动 Oracle Universal Installer (OUI) 之前,先以 Oracle Database 软件所有者的身份(本文为 oracle)登录到 ilearndb1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH Telnet 连接到 ilearndb1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

18.2安装 Oracle Database 11g 2 Examples

oracle 用户身份执行以下任务以安装 Oracle Database Examples

[oracle@ilearndb1 ~]$ cd /home/oracle/software/oracle/examples

[oracle@ilearndb1 examples]$ ./runInstaller

 

屏幕名称

响应

屏幕截图

Installation Location

指定 Oracle 基目录和软件位置 (Oracle_home),如下所示:

   Oracle Base/u01/app/oracle

   Software Location/u01/app/oracle/product/11.2.0/db_1

Prerequisite Checks

安装程序将执行一系列的检查以确定两个 Oracle RAC 节点是否满足安装和配置 Oracle Database Examples 软件的最低要求。

 

11g 2 (11.2) 开始,如果任何检查失败,安装程序 (OUI) 将创建 shell 脚本程序(称为修复脚本)以解决许多不满足系统配置要求的问题。如果 OUI 检测到标记为“fixable”的不满足要求之任务,您可通过单击 [Fix & Check Again] 按钮生成修复脚本来轻松解决这一问题。

 

修复脚本是在安装期间生成的。安装程序将提示您以 root 身份在一个单独的终端会话中运行该脚本。当您运行该脚本时,它会将内核值提高到所需最小值,如有必要,会完成其他操作系统配置任务。

 

如果通过了所有的必备条件检查(我的安装就是这样的情况),OUI 继续转到 Summary 屏幕。

Summary

单击 [Finish] 开始安装。

Install Product

安装程序在两个 Oracle RAC 节点上执行 Oracle Database Examples 软件安装过程。

Finish

在安装结束时,单击 [Close] 按钮退出 OUI

 

19. 创建 Oracle 集群数据库

仅应在集群的一个 Oracle RAC 节点 (ilearndb1) 上执行数据库创建过程。

我们将使用 Oracle Database Configuration Assistant (DBCA) 创建集群化数据库。

在执行 DBCA 前,确保为 $ORACLE_BASE/product/11.2.0/dbhome_1 环境正确设置了 $ORACLE_HOME $PATH 环境变量。 13 中讲述了如何在 oracle 用户帐户的登录脚本中设置环境变量。

在开始创建集群化数据库之前,还应确保现已安装的所有服务(Oracle TNS 监听器、Oracle Clusterware 进程等)正在运行。

[oracle@ilearndb1 ~]$ su - grid -c "crs_stat -t -v"

Password: *********

Name           Type           R/RA   F/FT   Target    State     Host        

----------------------------------------------------------------------

ora.CRS.dg     ora....up.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora.FRA.dg     ora....up.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora....ER.lsnr ora....er.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora....N1.lsnr ora....er.type 0/5    0/0    ONLINE    ONLINE    ilearndb1    

ora....DATA.dg ora....up.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora.asm        ora.asm.type   0/5    0/     ONLINE    ONLINE    ilearndb1    

ora.eons       ora.eons.type  0/3    0/     ONLINE    ONLINE    ilearndb1    

ora.gsd        ora.gsd.type   0/5    0/     OFFLINE   OFFLINE               

ora....network ora....rk.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora.oc4j       ora.oc4j.type  0/5    0/0    OFFLINE   OFFLINE               

ora.ons        ora.ons.type   0/3    0/     ONLINE    ONLINE    ilearndb1    

ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    ilearndb1    

ora....E1.lsnr application    0/5    0/0    ONLINE    ONLINE    ilearndb1    

ora....de1.gsd application    0/5    0/0    OFFLINE   OFFLINE               

ora....de1.ons application    0/3    0/0    ONLINE    ONLINE    ilearndb1    

ora....de1.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    ilearndb1    

ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    ilearndb2    

ora....E2.lsnr application    0/5    0/0    ONLINE    ONLINE    ilearndb2    

ora....de2.gsd application    0/5    0/0    OFFLINE   OFFLINE               

ora....de2.ons application    0/3    0/0    ONLINE    ONLINE    ilearndb2    

ora....de2.vip ora....t1.type 0/0    0/0    ONLINE    ONLINE    ilearndb2    

ora....ry.acfs ora....fs.type 0/5    0/     ONLINE    ONLINE    ilearndb1    

ora.scan1.vip  ora....ip.type 0/0    0/0    ONLINE    ONLINE    ilearndb1

19.1验证终端 Shell 环境

在启动 Database Configuration Assistant (DBCA) 之前,先以 Oracle Database 软件所有者的身份(本文为 oracle)登录到 ilearndb1。接下来,如果您使用远程客户端连接到将执行安装的 Oracle RAC 节点(从一个配置了 X 服务器的工作站通过 SSH Telnet 连接到 ilearndb1),请根据使用 X 终端登录远程系统一节所述来验证您的 X11 显示服务器设置。

19.2创建集群化数据库

要开始数据库创建过程,以 oracle 用户身份运行以下命令:

[oracle@ilearndb1 ~]$ dbca &

 

屏幕名称

响应

屏幕截图

Welcome 屏幕

选择 Oracle Real Application Clusters database

Operations

选择 Create a Database

Database Templates

选择 Custom Database

Database Identification

集群数据库配置。

   Configuration Type Admin-Managed

 

数据库命名。

   Global Database Name ilearndb.idevelopment.info

   SID Prefix ilearndb

 

注:对于数据库域,我使用了 idevelopment.info。您可以使用任何数据库域请记住,此域不必为有效的 DNS 域。

节点选择。

单击 [Select All] 按钮选择所有服务器:ilearndb1 ilearndb2

Management Options

保留默认选项 Configure Enterprise Manager / Configure Database Control for local management

Database Credentials

我选择了 Use the Same Administrative Password for All Accounts。输入口令(两次)并确保此口令不是以数字开头。

Database File Locations

指定数据库文件的存储类型和存储位置。

   Storage Type Automatic Storage Management (ASM)

   Storage Locations Use Oracle-Managed Files

     Database Area +ILEARNDB_DATA

Specify ASMSNMP Password

指定 ASM 实例的 ASMSNMP 口令。

Recovery Configuration

选中 Specify Flash Recovery Area 选项。

 

对于 Fast Recovery Area,单击 [Browse] 按钮并选择磁盘组名 +FRA

 

我使用的磁盘组大小约为 33GB。定义快速恢复区大小时,用整个卷的大小减去其 10%(用于开销)— (33-10%=30 GB)。我使用了 30 GB ( 30413 MB) Fast Recovery Area Size

Database Content

我对所有数据库组件(和目标表空间)保留其默认设置,但选择 Sample Schemas 也完全可以。自从我们安装了 Oracle Database 11g Examples,就可以使用该选项了。

Initialization Parameters

根据您的环境更改任意参数。我保留了所有这些参数的默认设置。

Database Storage

根据您的环境更改任意参数。我保留了所有这些参数的默认设置。

Creation Options

保留默认选项 Create Database。我还始终选择 Generate Database Creation Scripts。单击 Finish 启动数据库创建过程。确认数据库创建报告和脚本生成对话框后,开始创建数据库。

“Summary”屏幕上单击 OK

End of Database Creation

在数据库创建结束时,退出 DBCA

完成 DBCA 后,您就启动了一个功能完善的 Oracle RAC 集群!

19.3验证集群化数据库已开启

[oracle@ilearndb1 ~]$ su - grid -c "crsctl status resource -w  \"TYPE co 'ora'\" -t"

 

Password: *********

--------------------------------------------------------------------------------

NAME           TARGET  STATE        SERVER                   STATE_DETAILS       

--------------------------------------------------------------------------------

Local Resources

--------------------------------------------------------------------------------

ora.CRS.dg               

               ONLINE  ONLINE       ilearndb1 

               ONLINE  ONLINE       ilearndb2

ora.FRA.dg               

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

ora.LISTENER.lsnr               

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

ora.ILEARNDB_DATA.dg               

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

ora.asm               

               ONLINE  ONLINE       ilearndb1                 Started               

               ONLINE  ONLINE       ilearndb2                 Started

ora.eons               

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

ora.gsd               

               OFFLINE OFFLINE      ilearndb1               

               OFFLINE OFFLINE      ilearndb2

ora.net1.network

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

ora.ons               

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

ora.registry.acfs               

               ONLINE  ONLINE       ilearndb1               

               ONLINE  ONLINE       ilearndb2

--------------------------------------------------------------------------------

Cluster Resources

--------------------------------------------------------------------------------

ora.LISTENER_SCAN1.lsnr

      1        ONLINE  ONLINE       ilearndb1                                     

ora.oc4j

      1        OFFLINE OFFLINE                                                   

ora.ilearndb.db

      1        ONLINE  ONLINE       ilearndb1                 Open               

      2        ONLINE  ONLINE       ilearndb2                 Open

ora.ilearndb1.vip

      1        ONLINE  ONLINE       ilearndb1                                    

ora.ilearndb2.vip

      1        ONLINE  ONLINE       ilearndb2                                    

ora.scan1.vip

      1        ONLINE  ONLINE       ilearndb1                            

Oracle Enterprise Manager

如果您配置了 Oracle Enterprise Manager (Database Control),可以用它查看数据库的配置和当前状态。

本示例的 URL 为:https://ilearndb1:1158/em

[oracle@ilearndb1 ~]$ emctl status dbconsole

Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 

Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.

https://ilearndb1:1158/em/console/aboutApplication

Oracle Enterprise Manager 11g is running. 

------------------------------------------------------------------

Logs are generated in directory

/u01/app/oracle/product/11.2.0/dbhome_1/ilearndb1_ilearndb/sysman/log

 

18Oracle Enterprise Manager —(数据库控制台)

 

20. 创建/更改表空间

创建集群化数据库时,我们保留了所有表空间的默认大小设置。如果您将一个大型驱动器用作共享存储,则可能想创建一个大小可以调整的测试数据库。

以下是几个可为测试数据库修改和创建所有表空间的可选的 SQL 命令。请记住,此示例中使用的数据库文件名称(OMF 文件)可能与 Oracle Database Configuration Assistant (DBCA) 为您的环境创建的数据库文件名称不同。完成本节后,在适合的地方替换在您的环境中创建的数据文件名。可以使用以下查询确定环境中的文件名:

SQL> select tablespace_name, file_name

  2 from dba_data_files

  3 union

  4 select tablespace_name, file_name

  5 from dba_temp_files; 

 

TABLESPACE_NAME     FILE_NAME

--------------- --------------------------------------------------

EXAMPLE         + DATA/ilearndb/datafile/example.263.703530435

SYSAUX          + DATA/ilearndb/datafile/sysaux.260.703530411

SYSTEM          + DATA/ilearndb/datafile/system.259.703530397

TEMP            + DATA/ilearndb/tempfile/temp.262.703530429

UNDOTBS1        + DATA/ilearndb/datafile/undotbs1.261.703530423

UNDOTBS2        + DATA/ilearndb/datafile/undotbs2.264.703530441

USERS           + DATA/ilearndb/datafile/users.265.703530447 

 

[oracle@ilearndb1 ~]$ sqlplus "/ as sysdba" 

 

 

SQL> create tablespace ilearn_data datafile '+DATA' size 10240m

  2 autoextend on next 100m maxsize unlimited

  3 extent management local autoallocate

  4 segment space management auto; 

 

Tablespace created. 

 

SQL> create tablespace ilearn_index datafile '+DATA' size 10240m

  2 autoextend on next 100m maxsize unlimited

  3 extent management local autoallocate

  4 segment space management auto; 

 

Tablespace created. 

 

21. 验证 Oracle Grid Infrastructure 和数据库配置

21.1检查集群的运行状况 (集群化命令)

grid 用户身份运行以下命令。

[grid@ilearndb1 ~]$ crsctl check cluster

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

21.2所有 Oracle 实例 (数据库状态)

[oracle@ilearndb1 ~]$ srvctl status database -d ilearndb

Instance ilearndb1 is running on node ilearndb1

Instance ilearndb2 is running on node ilearndb2

21.3单个 Oracle 实例 (特定实例的状态)

[oracle@ilearndb1 ~]$ srvctl status instance -d ilearndb -i ilearndb1

Instance ilearndb1 is running on node ilearndb1

21.4节点应用程序 (状态)

[oracle@ilearndb1 ~]$ srvctl status nodeapps

VIP ilearndb1-vip is enabled

VIP ilearndb1-vip is running on node: ilearndb1

VIP ilearndb2-vip is enabled VIP ilearndb2-vip is running on node: ilearndb2

Network is enabled Network is running on node: ilearndb1

Network is running on node: ilearndb2 GSD is disabled

GSD is not running on node: ilearndb1

GSD is not running on node: ilearndb2

ONS is enabled

ONS daemon is running on node: ilearndb1

ONS daemon is running on node: ilearndb2

eONS is enabled eONS daemon is running on node: ilearndb1

eONS daemon is running on node: ilearndb2

21.5节点应用程序 (配置)

[oracle@ilearndb1 ~]$ srvctl config nodeapps

VIP exists.:ilearndb1 VIP exists.: /ilearndb1-vip/192.168.1.251/255.255.255.0/eth0

VIP exists.:ilearndb2

VIP exists.: /ilearndb2-vip/192.168.1.252/255.255.255.0/eth0

GSD exists.

ONS daemon exists. Local port 6100, remote port 6200

eONS daemon exists. Multicast port 24057, multicast IP address 234.194.43.168,

listening port 2016

21.6列出配置的所有数据库

[oracle@ilearndb1 ~]$ srvctl config database –d  ilearndb

Database unique name: ilearndb

Database name: ilearndb

Oracle home: /u01/app/oracle/product/11.2.0/db_1

Oracle user: oracle

Spfile: +DATA/ilearndb/spfileilearndb.ora

Domain:

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Server pools: ilearndb

Database instances: ilearndb1,ilearndb2

Disk Groups: DATA

Mount point paths:

Services:

Type: RAC

Database is administrator managed

21.7数据库 (配置)

[oracle@ilearndb1 ~]$ srvctl config database -d ilearndb -a

Database unique name: ilearndb

Database name: ilearndb

Oracle home: /u01/app/oracle/product/11.2.0/dbhome_1

Oracle user: oracle

Spfile: +ILEARNDB_DATA/ilearndb/spfileilearndb.ora

Domain: idevelopment.info

Start options: open

Stop options: immediate

Database role: PRIMARY

Management policy: AUTOMATIC

Server pools: ilearndb

Database instances: ilearndb1,ilearndb2

Disk Groups: ILEARNDB_DATA,FRA

Services: 

Database is enabled

Database is administrator managed

21.8ASM —(状态)

[oracle@ilearndb1 ~]$ srvctl status asm

ASM is running on ilearndb1,ilearndb2

21.9ASM —(配置)

$ srvctl config asm -a

ASM home: /u01/app/11.2.0/grid

ASM listener: LISTENER

ASM is enabled.

21.10TNS 监听器 (状态)

[oracle@ilearndb1 ~]$ srvctl status listener

Listener LISTENER is enabled

Listener LISTENER is running on node(s): ilearndb1,ilearndb2

21.11TNS 监听器 (配置)

[oracle@ilearndb1 ~]$ srvctl config listener -a

Name: LISTENER

Network: 1, Owner: grid

Home: <crs> 

/u01/app/11.2.0/grid on node(s) ilearndb2,ilearndb1

End points: TCP:1521

21.12SCAN —(状态)

[oracle@ilearndb1 ~]$ srvctl status scan

SCAN VIP scan1 is enabled

SCAN VIP scan1 is running on node ilearndb1

21.13SCAN —(配置)

[oracle@ilearndb1 ~]$ srvctl config scan

SCAN name: ilearndb-cluster-scan, Network: 1/192.168.1.0/255.255.255.0/eth0

SCAN VIP name: scan1, IP: /ilearndb-cluster-scan/192.168.1.187

21.14VIP —(特定节点的状态)

[oracle@ilearndb1 ~]$ srvctl status vip -n ilearndb1

VIP ilearndb1-vip is enabled

VIP ilearndb1-vip is running on node: ilearndb1 

 

[oracle@ilearndb1 ~]$ srvctl status vip -n ilearndb2

VIP ilearndb2-vip is enabled

VIP ilearndb2-vip is running on node: ilearndb2

21.15VIP —(特定节点的配置)

[oracle@ilearndb1 ~]$ srvctl config vip -n ilearndb1

VIP exists.:ilearndb1

VIP exists.: /ilearndb1-vip/192.168.1.251/255.255.255.0/eth0 

 

[oracle@ilearndb1 ~]$ srvctl config vip -n ilearndb2

VIP exists.:ilearndb2

VIP exists.: /ilearndb2-vip/192.168.1.252/255.255.255.0/eth0

21.16节点应用程序配置 VIPGSDONS、监听器)

[oracle@ilearndb1 ~]$ srvctl config nodeapps -a -g -s -l

-l option has been deprecated and will be ignored.

VIP exists.:ilearndb1

VIP exists.: /ilearndb1-vip/192.168.1.251/255.255.255.0/eth0

VIP exists.:ilearndb2

VIP exists.: /ilearndb2-vip/192.168.1.252/255.255.255.0/eth0

GSD exists.

ONS daemon exists. Local port 6100, remote port 6200

Name: LISTENER

Network: 1, Owner: grid

Home: <crs> 

/u01/app/11.2.0/grid on node(s) ilearndb2,ilearndb1

End points: TCP:1521

21.17验证所有集群节点间的时钟同步

[oracle@ilearndb1 ~]$ cluvfy comp clocksync -verbose 

 

Verifying Clock Synchronization across the cluster nodes  

 

Checking if Clusterware is installed on all nodes...

Check of Clusterware install passed 

 

Checking if CTSS Resource is running on all nodes...

Check: CTSS Resource running on all nodes 

  Node Name                             Status                    

  ------------------------------------  ------------------------

  ilearndb1                              passed

                                  

Result: CTSS resource check passed  

 

Querying CTSS for time offset on all nodes...

Result: Query of CTSS for time offset passed 

 

Check CTSS state started...

Check: CTSS state

  Node Name                             State                   

  ------------------------------------  ------------------------

  ilearndb1                              Active                  

CTSS is in Active state. Proceeding with check of clock time offsets on all nodes...

Reference Time Offset Limit: 1000.0 msecs

Check: Reference Time Offset

  Node Name     Time Offset               Status                  

  ------------  ------------------------  ------------------------

  ilearndb1      0.0                       passed

                                   

 

Time offset is within the specified limits on the following set of nodes:  "[ilearndb1]" 

Result: Check of clock time offsets passed  

 

Oracle Cluster Time Synchronization Services check passed 

 

Verification of Clock Synchronization across the cluster nodes was successful.

21.18集群中所有正在运行的实例 — (SQL)

SELECT

    inst_id

  , instance_number inst_no

  , instance_name inst_name

  , parallel

  , status

  , database_status db_status

  , active_state state

  , host_name host

FROM gv$instance

ORDER BY inst_id; 

 

INST_ID  INST_NO INST_NAME  PAR STATUS  DB_STATUS    STATE     HOST

-------- -------- ---------- --- ------- ------------ --------- -------

       1        1 ilearndb1     YES OPEN    ACTIVE       NORMAL    ilearndb1

       2        2 ilearndb2     YES OPEN    ACTIVE       NORMAL    ilearndb2

21.19ASM 磁盘卷 — (SQL)

SELECT path

FROM   v$asm_disk; 

PATH

----------------------------------

ORCL:CRSVOL1

ORCL:DATAVOL1

ORCL:FRAVOL1

 

22. 启动/停止集群

至此,已为 Oracle RAC 11g 2 版进行了所有安装和配置。Oracle Grid Infrastructure 已由 grid 用户安装,Oracle RAC 软件已由 oracle 用户安装。一个名为 ilearndb 的功能完善的集群化数据库正在运行。

完成所有这些艰巨任务之后,您可能会问:那么我怎样来启动和停止服务?。如果您遵循了本指南中的说明,则所有服务(包 Oracle ClusterwareASM、网络、SCANVIPOracle Database 等)应在 Linux 节点每次重新引导时自动启动。

但有时为了进行维护,您可能想在某节点上关闭 Oracle 服务,稍后再重启 Oracle Clusterware 系统。或者,您可能发现 Enterprise Manager 没有运行而需要启动它。本节为在本地服务器 ( ilearndb1) 上停止和启动 Oracle Clusterware 系统提供所需命令。

以下停止/启动操作需要以 root 身份来执行。

22.1在本地服务器上停止 Oracle Clusterware 系统

ilearndb1 节点上使用 crsctl stop cluster 命令停止 Oracle Clusterware 系统:

[root@ilearndb1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster

CRS-2673: Attempting to stop 'ora.crsd' on 'ilearndb1'

CRS-2790: Starting shutdown of Cluster Ready Services-managed resources on

'ilearndb1'

CRS-2673: Attempting to stop 'ora.LISTENER.lsnr' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.CRS.dg' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.ilearndb.db' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.registry.acfs' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.LISTENER_SCAN1.lsnr' on 'ilearndb1'

CRS-2677: Stop of 'ora.LISTENER.lsnr' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.ilearndb1.vip' on 'ilearndb1'

CRS-2677: Stop of 'ora.LISTENER_SCAN1.lsnr' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.scan1.vip' on 'ilearndb1'

CRS-2677: Stop of 'ora.scan1.vip' on 'ilearndb1' succeeded

CRS-2672: Attempting to start 'ora.scan1.vip' on 'ilearndb2'

CRS-2677: Stop of 'ora.ilearndb1.vip' on 'ilearndb1' succeeded

CRS-2672: Attempting to start 'ora.ilearndb1.vip' on 'ilearndb2'

CRS-2677: Stop of 'ora.registry.acfs' on 'ilearndb1' succeeded

CRS-2676: Start of 'ora.ilearndb1.vip' on 'ilearndb2' succeeded           

                               

<-- Notice ilearndb1 VIP moved to ilearndb2

CRS-2676: Start of 'ora.scan1.vip' on 'ilearndb2' succeeded              

                               

<-- Notice SCAN moved to ilearndb2

CRS-2672: Attempting to start 'ora.LISTENER_SCAN1.lsnr' on 'ilearndb2'

CRS-2676: Start of 'ora.LISTENER_SCAN1.lsnr' on 'ilearndb2' succeeded    

                               

<-- Notice LISTENER_SCAN1 moved to ilearndb2

CRS-2677: Stop of 'ora.CRS.dg' on 'ilearndb1' succeeded

CRS-2677: Stop of 'ora.ilearndb.db' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.FRA.dg' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.ILEARNDB_DATA.dg' on 'ilearndb1'

CRS-2677: Stop of 'ora.ILEARNDB_DATA.dg' on 'ilearndb1' succeeded

CRS-2677: Stop of 'ora.FRA.dg' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.asm' on 'ilearndb1'

CRS-2677: Stop of 'ora.asm' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.ons' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.eons' on 'ilearndb1'

CRS-2677: Stop of 'ora.ons' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.net1.network' on 'ilearndb1'

CRS-2677: Stop of 'ora.net1.network' on 'ilearndb1' succeeded

CRS-2677: Stop of 'ora.eons' on 'ilearndb1' succeeded

CRS-2792: Shutdown of Cluster Ready Services-managed resources on 'ilearndb1' has

completed

CRS-2677: Stop of 'ora.crsd' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.cssdmonitor' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.ctssd' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.evmd' on 'ilearndb1'

CRS-2673: Attempting to stop 'ora.asm' on 'ilearndb1'

CRS-2677: Stop of 'ora.cssdmonitor' on 'ilearndb1' succeeded

CRS-2677: Stop of 'ora.evmd' on 'ilearndb1' succeeded

CRS-2677: Stop of 'ora.ctssd' on 'ilearndb1' succeeded

CRS-2677: Stop of 'ora.asm' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.cssd' on 'ilearndb1'

CRS-2677: Stop of 'ora.cssd' on 'ilearndb1' succeeded

CRS-2673: Attempting to stop 'ora.diskmon' on 'ilearndb1'

CRS-2677: Stop of 'ora.diskmon' on 'ilearndb1' succeeded

注:在运行“ crsctl stop cluster”命令之后,如果 Oracle Clusterware 管理的资源中有任何一个还在运行,则整个命令失败。使用 -f 选项无条件地停止所有资源并停止 Oracle Clusterware 系统。

另请注意,可通过指定 -all 选项在集群中所有服务器上停止 Oracle Clusterware 系统。以下命令将在 ilearndb1 ilearndb2 上停止 Oracle Clusterware 系统:

[root@ilearndb1 ~]# /u01/app/11.2.0/grid/bin/crsctl stop cluster -all

22.2在本地服务器上启动 Oracle Clusterware 系统

ilearndb1 节点上使用 crsctl start cluster 命令启动 Oracle Clusterware 系统:

[root@ilearndb1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster

CRS-2672: Attempting to start 'ora.cssdmonitor' on 'ilearndb1'

CRS-2676: Start of 'ora.cssdmonitor' on 'ilearndb1' succeeded

CRS-2672: Attempting to start 'ora.cssd' on 'ilearndb1'

CRS-2672: Attempting to start 'ora.diskmon' on 'ilearndb1'

CRS-2676: Start of 'ora.diskmon' on 'ilearndb1' succeeded

CRS-2676: Start of 'ora.cssd' on 'ilearndb1' succeeded

CRS-2672: Attempting to start 'ora.ctssd' on 'ilearndb1'

CRS-2676: Start of 'ora.ctssd' on 'ilearndb1' succeeded

CRS-2672: Attempting to start 'ora.evmd' on 'ilearndb1'

CRS-2672: Attempting to start 'ora.asm' on 'ilearndb1'

CRS-2676: Start of 'ora.evmd' on 'ilearndb1' succeeded

CRS-2676: Start of 'ora.asm' on 'ilearndb1' succeeded

CRS-2672: Attempting to start 'ora.crsd' on 'ilearndb1'

CRS-2676: Start of 'ora.crsd' on 'ilearndb1' succeeded

注:可通过指定 -all 选项在集群中所有服务器上启动 Oracle Clusterware 系统。

[root@ilearndb1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -all

还可以通过列出服务器(各服务器之间以空格分隔)在集群中一个或多个指定的服务器上启动 Oracle Clusterware 系统:

[root@ilearndb1 ~]# /u01/app/11.2.0/grid/bin/crsctl start cluster -n

ilearndb1 ilearndb2

22.3使用 SRVCTL 启动/停止所有实例

最后,可使用以下命令来启动/停止所有实例及相关服务:

[oracle@ilearndb1 ~]$ srvctl stop database -d ilearndb 

[oracle@ilearndb1 ~]$ srvctl start database -d ilearndb

 

 

创建时间:2022-05-08 20:49
浏览量:0