`

在 Linux x86 上安装 Oracle RAC 10g

阅读更多

作者:John Smiley

了解在 Red Hat Enterprise Linux 或 Novell SUSE Enterprise Linux 上从头安装 Oracle RAC 10g 的基础知识(仅用于评估)

目录
概述
背景
第 1 部分: 安装 Linux
第 2 部分: 为 Oracle 配置 Linux
第 3 部分: 准备共享磁盘
第 4 部分: 安装 Oracle RAC 软件
结论


概述

这是在 Linux 上安装 Oracle 数据库 10g 软件主要组件指南系列的第二部分。这些指南详细介绍了 Linux 的所有五个已认证的英语发行版本(未介绍 Asianux),并假设使用廉价的 Intel x86 硬件。这些指南逐步演示了为评估主要 Oracle 10g 产品而在常见硬件上进行安装和配置的过程。 本系列的最终目的是帮助您安装和配置 Oracle 10g 网格的所有组件。

本指南将提供最简单的方法(步骤数最少)来完成任务。该方法通常意味着所选择的配置将只适用于评估。因此,本指南既不适用于构建生产品质的环境,也不反映最佳实践。

所讨论的五个已通过 Oracle 数据库 10g 认证的 Linux 发行版本是:

  • Red Hat Enterprise Linux 4 (RHEL4)
  • Red Hat Enterprise Linux 3 (RHEL3)
  • Red Hat Enterprise Linux 2.1 (RHEL2.1)
  • Novell SUSE Linux Enterprise Server 9
  • Novell SUSE Linux Enterprise Server 8
如果您是初次接触 Linux 和/或 Oracle,则本指南特别适合您。它首先介绍基础知识,然后逐步引导您从头安装 Oracle 数据库 10g

本指南分为四个部分: 第 1 部分介绍 Linux 操作系统的安装,第 2 部分介绍为 Oracle 配置 Linux,第 3 部分讨论分区共享磁盘的要点,第 4 部分介绍 Oracle 软件的安装。


背景

下图显示了 Oracle RAC 10g 配置的主要组件。 集群中的节点通常是单独的服务器(主机)。

硬件
在硬件级别上,RAC 集群中的各节点共享三种功能:

  1. 对共享磁盘存储的访问
  2. 与专用网络的连接
  3. 对公共网络的访问。

共享磁盘存储
Oracle RAC 依赖于一个共享磁盘体系结构。 数据库文件、联机重做日志和数据库的控制文件必须都能为集群中的每个节点所访问。 共享磁盘还存储 Oracle Cluster Registry 和 Voting Disk(稍后讨论)。 配置共享存储有多种方法,包括直接连接磁盘(通常是使用铜缆或光纤的 SCSI)、存储区域网 (SAN) 和网络连接存储 (NAS)。

专用网络
每个集群节点通过专用高速网络连接到所有其他节点,这种专用高速网络也称为集群互联或高速互联 (HSI)。 Oracle 的 Cache Fusion 技术使用这种网络将每个主机的物理内存 (RAM) 有效地组合成一个高速缓存。 Oracle Cache Fusion 通过在专用网络上传输某个 Oracle 实例高速缓存中存储的数据允许其他任何实例访问这些数据。 它还通过在集群节点中传输锁定和其他同步信息保持数据完整性和高速缓存一致性。

专用网络通常是用千兆以太网构建的,但是对于高容量的环境,很多厂商提供了专门为 Oracle RAC 设计的低延迟、高带宽的专有解决方案。 Linux 还提供一种将多个物理 NIC 绑定为一个虚拟 NIC 的方法(此处不涉及)来增加带宽和提高可用性。

公共网络
为维持高可用性,为每个集群节点分配了一个虚拟 IP 地址 (VIP)。 如果主机发生故障,则可以将故障节点的 IP 地址重新分配给一个可用节点,从而允许应用程序通过相同的 IP 地址继续访问数据库。

配置集群硬件
配置 Oracle RAC 集群硬件的方法有很多。 我们此处的配置使用了两台服务器、两个 CPU、1GB RAM、两个千兆以太网 NIC、一个双通道 SCSI 主机总线适配器 (HBA) 和八个 SCSI 磁盘,这些磁盘通过铜缆连接到每台主机(每通道四个磁盘)。 这些磁盘被配置为一个磁盘组 (JBOD) — 没有硬件 RAID 控制器。

软件
在软件级别上,RAC 集群中的每个节点需要:

  1. 一个操作系统
  2. Oracle 集群就绪服务
  3. Oracle RAC 软件,可选
  4. 一个 Oracle 自动存储管理实例。

操作系统
很多不同操作系统都支持 Oracle RAC。 本指南重点介绍 Linux。 必须为 OS 正确地配置操作系统,包括安装必需的软件包、设置内核参数、配置网络、建立具有适当安全性的帐户、配置磁盘设备以及创建目录结构。 本指南将介绍所有这些任务。

Oracle 集群就绪服务
Oracle RAC 10g 引进了 Oracle 集群就绪服务 (CRS) — 一组用于集群环境的与平台无关的系统服务。 在 RAC 和 Oracle 并行服务器先前版本中,Oracle 依靠厂商提供的集群管理软件来提供这些服务。 虽然 CRS 与厂商供应的集群件协同工作,但 Oracle RAC 10g 所需组件只是 CRS。 实际上,必须在安装 RAC 之前安装 CRS。

CRS 维护着两个文件: Oracle Cluster Registry (OCR) 和 Voting Disk。 OCR 和 Voting Disk 必须以原始分区或集群文件系统文件的形式存在于共享磁盘上。 本指南说明了使用这两种方法创建 OCR 和 Voting Disk 的过程,并逐步演示了 CRS 的安装。

Oracle RAC 软件
Oracle RAC 10g 软件是 RAC 数据库的核心,每个集群节点上都必须安装。 幸运的是,Oracle Universal Installer (OUI) 可以完成在每个节点上安装 RAC 软件的大部分工作。 您只需在一个节点上安装 RAC — OUI 会完成其余的工作。

Oracle 自动存储管理 (ASM)
ASM 是 Oracle 数据库 10g 中的一个新特性,它以一种与平台无关的方式提供文件系统服务、逻辑容量管理器和软件 RAID。Oracle ASM 可以条带化和镜像磁盘,从而实现了在数据库被加载的情况下添加或移除磁盘以及自动平衡 I/O 以删除“热点”。它还支持直接和异步的 I/O,并使用 Oracle9i 中引入的 Oracle 数据管理器 API(简化的 I/O 系统调用接口)。

Oracle ASM 不是通用的文件系统,只能用于 Oracle 数据文件、重做日志、控制文件和 RMAN 快速恢复区。ASM 中的文件既可以由数据库自动创建和命名(使用 Oracle 管理文件特性),也可以由 DBA 手动创建和命名。由于操作系统无法访问 ASM 中存储的文件,因此对使用 ASM 文件的数据库执行备份和恢复操作的唯一途径就是使用恢复管理器 (RMAN)。

ASM 作为单独的 Oracle 实例实施,只有它在运行时其他数据库才能访问它。ASM 需要的内存不多: 对大部分系统来说只需 64MB。 在 Oracle RAC 环境中,ASM 实例必须运行在每个集群节点上。


第 1 部分:安装 Linux

按照本系列第一篇指南中的说明安装和配置 Linux。 您需要为每台服务器提供三个 IP 地址: 一个用于专用网络,一个用于公共网络,一个用于虚拟 IP 地址。 使用操作系统的网络配置工具来分配专用的和公共的网络地址。 不要使用操作系统的网络配置工具来分配虚拟 IP 地址;这项工作将会在 Oracle RAC 软件安装期间由 Oracle 虚拟 IP 配置助手 (VIPCA) 来完成。

(关于 Novell SUSE 环境中 orarun.rpm 的一个说明: Novell 提供一个名为 orarun.rpm 的程序包,旨在简化 SLES 上 Oracle 产品的安装和管理。 尽管它是一个优秀的工具,但使用它需要一组不同的安装步骤。 本指南不使用 orarun.rpm,以便提供一套既适用于 SUSE 又适用于 Red Hat 的统一安装说明。)

Red Hat Enterprise Linux 4 (RHEL4)

所需内核:
2.6.9-5.EL 或更高版本

验证内核版本:

# uname -r
2.6.9-5.ELsmp
其他所需程序包的版本(或更高版本):
make-3.80-5
gcc-3.4.3-9.EL4
compat-db-4.1.25-9

验证已安装的程序包:

# rpm -q make gcc compat-db
make-3.80-5
gcc-3.4.3-9.EL4
compat-db-4.1.25-9
Red Hat Enterprise Linux 3 (RHEL3)

所需内核:
2.4.21-4.EL 或更高版本

验证内核版本:

# uname -r
2.4.21-4.0.1.ELsmp
其他所需程序包的版本(或更高版本):
make-3.79
binutils-2.11.90.0.8-12
gcc-3.2.3-2
compat-db-4.0.14.5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
openmotif21-2.1.30-8
setarch-1.3-1

验证已安装的程序包:

# rpm -q make binutils gcc compat-db compat-gcc compat-gcc-c++ compat-libstdc++ 
  compat-libstdc++-devel openmotif setarch
make-3.79.1-17
binutils-2.14.90.0.4-26
gcc-3.2.3-20
compat-db-4.0.14-5
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
openmotif-2.2.2-16
setarch-1.3-1
Red Hat Enterprise Linux 2.1
所需内核:
2.4.9-e.25 或更高版本
验证内核版本:
# uname -r
2.4.9-e.27smp
其他所需程序包的版本(或更高版本):
gcc-2.96.108.1
make-3.79
binutils-2.11.90.0.8-12
openmotif-2.1.30-11
glibc-2.2.4-31

验证已安装的程序包:

# rpm -q gcc make binutils openmotif glibc
gcc-2.96.2-38
make-3.79.1-8
binutils-2.11.90.0.8-12
openmotif-2.1.30-11
glibc-2.2.4-32.8
SUSE Linux Enterprise Server 9 (SLES9)

所需程序包集:
基本运行时系统
YaST
图形基本系统
Linux 工具
KDE 桌面环境
C/C++ 编译器和工具(默认情况下未选择)

不要安装:
认证服务器(NIS、LDAP、Kerberos)

所需内核:
2.6.5-7.5 或更高版本

验证内核版本:

# uname -r
2.6.5-7.97-smp
其他所需程序包的版本(或更高版本):
make-3.8
gcc-3.3.3-43
gcc-c++=3.3.3-43
libaio-0.3.98-18
libaio-devel-0.3.98-18
openmotif-libs-2.2.2-519

验证已安装的程序包:

# rpm -q make gcc gcc-c++ libaio libaio-devel openmotif-libs
make-3.80-184.1
gcc-3.3.3-43.24
gcc-c++-3.3.3-43.24
libaio-0.3.98-18.3
libaio-devel-0.3.98-18.3
openmotif-libs-2.2.2-519.1
SUSE Linux Enterprise Server 8 (SLES8)

所需内核的最低版本取决于您选择的共享存储选项:

存储选项 内核版本
原始 2.4.21-138 或更高版本
使用原始设备的 ASM 2.4.21-138 或更高版本
具有 ASMLib 的 ASM 2.4.21-251 或更高版本
OCFS v1 (1.0.14-1) 2.4.21-266 或更高版本

验证内核版本:

# uname -r
k_smp-2.4.21-215
其他所需程序包的版本(或更高版本):
make-3.79
binutils-2.11.90.0.8-12
gcc-3.2.2-38
openmotif-2.2.2-124

为了安装集群就绪服务,您还需要从 rpmfind.net ncompress-4.2.4-24.i386.rpm(或更新版本)获得以下程序包

ncompress 程序包与 gzip 程序包冲突,因此使用 rpm 的 --force 命令行选项。

例如:

# rpm -ivh --force ncompress-4.2.4-36.i386.rpm
验证已安装的程序包:
# rpm rpm -q gcc make binutils openmotif ncompress
gcc-3.2.2-38
make-3.79.1-407
binutils-2.12.90.0.15-50
openmotif-2.2.2-124
ncompress-4.2.4-36

第 2 部分: 为 Oracle 配置 Linux

创建 Oracle 组和用户帐户

接下来我们将创建用于安装和维护 Oracle 10g 软件的 Linux 组和用户帐户。 用户帐户名是‘oracle’,组是‘oinstall’和‘dba’。 仅在一个集群主机上以 root 用户身份执行以下命令:

/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -m -g oinstall -G dba oracle
id oracle
例如:
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -m -g oinstall -G dba oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
用户 ID 和组 ID 在所有集群主机上必须相同。 使用从 id oracle 命令得到的信息,在其余集群主机上创建 Oracle 组和用户帐户:
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/useradd -m -u 501 -g oinstall -G dba oracle
例如:
# /usr/sbin/groupadd -g 501 oinstall
# /usr/sbin/groupadd -g 502 dba
# /usr/sbin/useradd -m -u 501 -g oinstall -G dba oracle
# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
设置 oracle 帐户的口令:
# passwd oracle
Changing password for user oracle.
New password:
Retype new password:
passwd:all authentication tokens updated successfully.
创建挂载点

现在创建存储 Oracle 10g 软件的挂载点。本指南在创建目录结构时所用的命名惯例将遵循最佳灵活体系结构 (OFA)。有关 OFA 标准的更多信息,请参见 Oracle 数据库 10g 安装指南 的附录 D。

以 root 用户身份执行以下命令:

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
例如:
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
配置内核参数

以 root 用户身份登录并在每个主机上配置 Linux 内核参数。
cat >> /etc/sysctl.conf >>EOF
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024     65000
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
EOF
/sbin/sysctl -p
对于 Novell SUSE 版本,在完成以上步骤之后运行以下命令:
/sbin/chkconfig boot.sysctl on
为 oracle 用户设置 Shell 限制

Oracle 建议对每个 Linux 帐户可以使用的进程数量和打开文件的数量设置限制。要进行这些更改,以 root 用户身份剪切和粘贴下列命令。
cat >> /etc/security/limits.conf >>EOF
oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536
EOF

cat >> /etc/pam.d/login >>EOF
session    required     /lib/security/pam_limits.so
EOF
对于 Red Hat Enterprise Linux 版本,使用以下命令:
cat >> /etc/profile >>EOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF

cat >> /etc/csh.login >>EOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
对于 Novell SUSE 版本,使用以下命令:
cat >> /etc/profile.local >>EOF
if [ \$USER = "oracle" ]; then
if [ \$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
EOF

cat >> /etc/csh.login.local >>EOF
if ( \$USER == "oracle" ) then
limit maxproc 16384
limit descriptors 65536
umask 022
endif
EOF
SLES8 和 SLES9:避免错误!

在 SLES8 和 SLES9 上安装 Oracle Enterprise Manager 10g 的一个错误将导致安装因网络端口不可用而失败。OEM DBConsole 需要端口 1830,而在 SLES 环境中,此端口已经预留给 /etc/services。此错误在 MetaLink 上的错误号为 3513603。

要避免安装过程中出现问题,以 root 用户身份登录,并在安装 Oracle 10g 软件之前将 /etc/services 文件中的端口 1830 至 1849 对应的行注释掉。 配置 Hangcheck 计时器

所有 RHEL 版本:

modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
cat >> /etc/rc.d/rc.local >>EOF
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
EOF
所有 SLES 版本:
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
cat >> /etc/init.d/boot.local >>EOF
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
EOF
配置 /etc/hosts 有些 Linux 发行版本将主机名与回送地址 (127.0.0.1) 相关联。 如果出现这种情况,则从回送地址中删除主机名。 用于此指南的 /etc/hosts 文件:
127.0.0.1        localhost.localdomain   localhost

192.168.100.51    ds1-priv.orademo.org    ds1-priv        # ds1 private
192.168.100.52    ds2-priv.orademo.org    ds2-priv        # ds1 private
192.168.200.51    ds1.orademo.org         ds1             # ds1 public
192.168.200.52    ds2.orademo.org         ds2             # ds2 public
192.168.200.61    ds1-vip.orademo.org     ds1-vip         # ds1 virtual
192.168.200.62    ds2-vip.orademo.org     ds2-vip         # ds2 virtual
为用户等效性配置 SSH 在安装 Oracle RAC 10g 期间,OUI 需要把文件复制到集群中的其他主机上并在其上执行程序。 为了允许 OUI 完成此任务,必须配置 SSH 以启用用户等效性。 用 SSH 建立用户等效性就提供了一种在集群中其他主机上复制文件和执行程序时不需要口令提示的安全方式。 第一步是生成 SSH 的公共密钥和专用密钥。 SSH 协议有两个版本;版本 1 使用 RSA,版本 2 使用 DSA,因此我们将创建这两种类型的密钥,以确保 SSH 能够使用任一版本。 ssh-keygen 程序将根据传递给它的参数生成任一类型的公共密钥和专用密钥。 当您运行 ssh-keygen 时,将提示您输入一个用于保存密钥的位置。 当提示时只需按 Enter 接受默认值。 随后将提示您输入一个口令短语。 输入您能记住的口令,然后再次输入该口令进行确认。 当您完成以下步骤后,在 ~/.ssh 目录中将会有四个文件: id_rsa、id_rsa.pub、id_dsa 和 id_dsa.pub。 id_rsa 和 id_dsa 文件是您的专用密钥,千万不要告诉任何人。 id_rsa.pub 和 id_dsa.pub 文件是您的公共密钥,必须将其复制到集群中其他每个主机上。 在每个主机上,以 oracle 用户身份登录:
mkdir ~/.ssh
chmod 755 ~/.ssh
/usr/bin/ssh-keygen -t rsa
分别剪切和粘贴以下各行:
/usr/bin/ssh-keygen -t dsa
例如:
$ mkdir ~/.ssh
$ chmod 755 ~/.ssh
$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
4b:df:76:77:72:ba:31:cd:c4:e2:0c:e6:ef:30:fc:37 oracle@ds1.orademo.org

$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
af:37:ca:69:3c:a0:08:97:cb:9c:0b:b0:20:70:e3:4a oracle@ds1.orademo.org
现在,必须将每个主机上的公共密钥文件 id_rsa.pub 和 id_dsa.pub 的内容复制到其他每个主机的 ~/.ssh/authorized_keys 文件中。 使用 ssh 将每个文件的内容复制到 ~/.ssh/authorized_keys 文件。 请注意,当您使用 ssh 第一次访问远程主机时,其 RSA 密钥将是未知的,从而将提示您确认是否希望连接该主机。 SSH 将记录该远程主机的 RSA 密钥,并在以后连接该主机时不再做出相关提示。 只需在第一个主机上,以 oracle 用户身份登录(复制本地帐户的密钥,以便连接本地主机的 ssh 能够起作用):
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle@ds2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
(如果您要剪切和粘贴这些命令,则分别运行它们。 SSH 每次会提示输入 oracle 的口令,如果同时粘贴这些命令,则第一个命令在提示输入口令之前刷新输入缓冲区,从而导致其他命令将会丢失。)
ssh oracle@ds2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 644 ~/.ssh/authorized_keys
例如:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh oracle@ds2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'ds2 (192.168.200.52)' can't be established.
RSA key fingerprint is d1:23:a7:df:c5:fc:4e:10:d2:83:60:49:25:e8:eb:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ds2,192.168.200.52' (RSA) to the list of known hosts.
oracle@ds2's password: 
$ ssh oracle@ds2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
oracle@ds2's password:
$ chmod 644 ~/.ssh/authorized_keys
现在对第二个主机做同样的处理。 请注意,这次 SSH 会提示您输入在创建密钥时所使用的口令短语而非 oracle 的口令。 这是因为第一个主机 (ds1) 现在知道了第二个主机的公共密钥,而 SSH 现在使用的是一种不同的认证协议。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ssh oracle@ds1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

ssh oracle@ds1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 644 ~/.ssh/authorized_keys
例如:
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh oracle@ds1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host 'ds1 (192.168.200.51)' can't be established.
RSA key fingerprint is bd:0e:39:2a:23:2d:ca:f9:ea:71:f5:3d:d3:dd:3b:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ds1,192.168.200.51' (RSA) to the list of known hosts.
Enter passphrase for key '/home/oracle/.ssh/id_rsa':
$ ssh oracle@ds1 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
Enter passphrase for key '/home/oracle/.ssh/id_rsa':
$ chmod 644 ~/.ssh/authorized_keys
建立用户等效性 最后,在生成密钥、复制文件并重复地输入口令和口令短语(安全性有意思吧?)所有这些工作完成之后,您就可以建立用户等效性了。 在建立用户等效性时,不会再提示您输入口令。 以 oracle 用户身份在将要安装 Oracle 10g 软件的节点 (ds1) 上:
exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add
例如:
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
Enter passphrase for /home/oracle/.ssh/id_rsa:
Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
(请注意,用户等效性仅为当前会话建立。 如果您切换到其他会话或注销并重新登录,则必须再次运行 ssh-agent 和 ssh-add 才能重新建立用户等效性。) 测试连通性 如果一切均设置正确,则您现在就可以使用 ssh 在其他集群主机上不必输入口令而登录、执行程序和复制文件了。 通过在远程集群主机上运行诸如 date 等简单命令来验证用户等效性:
$ ssh ds2 date
Sun Jun 27 19:07:19 CDT 2004
测试每个方向上所有服务器的连通性是非常重要的。 这样会确保当 OUI 在 CRS 和数据库软件安装期间试图复制文件时不会出现类似以下的消息。 该消息只有在远程节点上第一次执行操作时才会出现,因此通过测试连通性,您不仅确保了远程操作的正常运行,还完成了初始的安全密钥交换。
The authenticity of host 'ds2 (192.168.200.52)' can't be established.
RSA key fingerprint is 8f:a3:19:76:ca:4f:71:85:42:c2:7a:da:eb:53:76:85.
Are you sure you want to continue connecting (yes/no)? yes

第 3 部分: 准备共享磁盘

这一部分介绍了三种准备共享磁盘以用于 RAC 的方法:

1. Oracle 集群文件系统 (OCFS)
2. 自动存储管理器 (ASM)
3. 原始设备

Oracle 集群文件系统 (OCFS) 第 1 版

OCFS 第 1 版是原始设备的一个优秀替代品。 它不仅更易于管理和维护,而且克服了 255 个原始设备的限制。 但是,它并不是一个通用集群文件系统。 它只能用于存储以下类型的文件:
  • Oracle 数据文件
  • 联机重做日志
  • 归档重做日志
  • 控制文件
  • Spfile
  • CRS 共享文件(Oracle Cluster Registry 和 CRS voting disk)。
有关 OCFS 的更多背景知识,请阅读 OTN 技术文章“Linux 集群文件系统简介”。 获取 OCFS 转到 http://oss.oracle.com/projects/ocfs 并下载适于您的 Linux 版本的 OCFS RPM。 您需要三个 RPM: ocfs-support、ocfs-tools 和 ocfs-kernel-specific 模块。 要确定您所需要的内核专用模块,可使用 uname -r。
# uname -r
2.4.21-15.0.2.ELsmp
对于本示例,我下载了:

ocfs-support-1.0.10-1.i386.rpm
ocfs-tools-1.0.10-1.i386.rpm
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm

安装 OCFS

# rpm -Uvh ocfs-support-1.0.10-1.i386.rpm \
ocfs-tools-1.0.10-1.i386.rpm \
ocfs-2.4.21-EL-smp-1.0.12-1.i686.rpm
Preparing...                ########################################### [100%]
1:ocfs-support           ########################################### [ 33%]
2:ocfs-tools             ########################################### [67%]
3:ocfs-2.4.21-EL-smp     ########################################### [100%]
Linking OCFS module into the module path [  OK  ]
配置 OCFS 以 root 用户身份运行 ocfstool:
# ocfstool
选择 Tasks → Generate Config
选择与 RAC 专用网络相对应的接口
单击 OK 生成 /etc/ocfs.conf 文件,然后退出 ocfstool
对集群中的每个节点重复这些操作。

在每个节点上装载 OCFS:

# /sbin/load_ocfs
/sbin/insmod ocfs node_name=ds1.orademo.org ip_address=192.168.100.51 
   cs=1795 guid=2FB60EDD8B872FC4216C00010324C023 comm_voting=1 ip_port=7000
Using /lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o
Warning:kernel-module version mismatch
/lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o was compiled for kernel version 2.4.21-4.ELsmp
while this kernel is version 2.4.21-15.0.2.ELsmp
Warning:loading /lib/modules/2.4.21-EL-smp-ABI/ocfs/ocfs.o will taint the kernel:forced load
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module ocfs loaded, with warnings
不必担心关于不同内核版本和损坏模块的警告。 这仅仅是模块实用工具让我们了解该 ocfs 模块是为 Linux 内核较早版本编译的。 只要我们的内核版本与该 ocfs 模块相同或者比它更新,ocfs 就会正常工作。 为 OCFS 文件系统创建一个挂载点:
mkdir /u02
创建 OCFS 文件系统:
mkfs.ocfs -b 128 -L /u02 -m /u02 -p 0775 \
-u root -g root /dev/sdb1 -F
神奇的挂载 mkfs.ocfs 只完成 OCFS 文件系统初始化工作的一部分。其余的初始化工作在第一次挂载文件系统时进行。 因此,对于新创建的文件系统,您必须在创建它的同一主机上挂载它。
mount -t ocfs -L /u02 /u02
请注意,mount 命令使用了在创建文件系统期间所使用的文件系统标签 (-L /u02)。 这是一种既引用文件系统又不必记住设备名的便利方法。 要验证已挂载 OCFS 文件系统,可执行 mount 命令或运行 df:
mount -t ocfs
/dev/sdb1 on /u02 type ocfs (rw)

df /u02
Filesystem       1K-blocks  Used     Available  Use%   Mounted on
/dev/sdb1             35557856     36064  35521792   1% /u02
在其他节点上挂载 OCFS 文件系统之前,最好在创建该文件系统的节点上进行卸下并再次挂载该文件系统的“循环”挂载操作:
umount /u02
mount -t ocfs -L /u02 /u02
现在就可以在其他集群节点上挂载 OCFS 文件系统了。 要在系统启动时自动挂载 OCFS 文件系统,可以在 /etc/fstab 中添加类似以下的一行:
LABEL=/u02         /u02           ocfs    _netdev         0 0
我再次选择了使用设备标签 (LABEL=/u02) 而非设备名 (/dev/sdb1)。 这在设备名在每个节点上均不同时尤其有用。 在我的示例中,OCFS 设备在节点 ds1 名为 /dev/sdb1,而在节点 ds2 上名为 /dev/sdf1。 通过使用设备标签而非设备名,我可以在每个节点上使用相同的 /etc/fstab 项。 为共享文件创建目录:
CRS 文件
mkdir /u02/oracrs
chown oracle:oinstall /u02/oracrs
chmod 775 /u02/oracrs

数据库文件
mkdir /u02/oradata
chown oracle:oinstall /u02/oradata
chmod 775 /u02/oradata
对每个将要用于 ocfs 的磁盘分区重复这一过程。 Oracle 自动存储管理器 (ASM) 安装 ASMLib
在 Linux 平台上,ASM 可以使用原始设备或通过 ASMLib 接口管理的设备。出于易于使用和性能方面的原因,Oracle 建议使用通过 ASMLib 接口管理的设备而非原始设备。 可以从 OTN 免费获得 ASMLib。这一部分将逐步讲解使用 ASMLib 配置一个简单 ASM 实例并构建一个使用 ASM 进行磁盘存储的数据库的全过程。 (注意: 到 2005 年 3 月为止,ASMLib 还不能用于 RHES4 或 SLES9。 预计 AMLib 将包含在从 10.1.0.4 版开始的补丁集中。) 确定您需要哪个版本的 ASMLib;ASMLib 以一套共三个 Linux 程序包的形式提供:
oracleasmlib — ASM 库
oracleasm-support — 管理 ASMLib 所需的实用程序
oracleasm — 用于 ASM 库的内核模块 每个 Linux 发行版本都有其自己的一套 ASMLib 程序包,并且在每个发行版本中,每个内核版本都有一个相应的 oracleasm 程序包。以下部分介绍如何确定您需要哪套程序包。 使用下表来帮助确定适用于您环境的正确 oracleasmlib 模块。
Linux 发行版本 所支持的内核
RHES 2.1 2.4.9-e.25 或更高版本
RHES 3 2.4.21-15 或更高版本
RHES 4 N/A
SLES 8 2.4.21-138
2.4.21-190
2.4.21-198
2.4-21-215
SLES 9 N/A
以 root 用户身份登录并运行以下命令来确定您正在使用的内核:
# uname -rm
2.4.9-e.27smp i686
该示例表明,这是一个使用 Intel i686 CPU 的 SMP(多处理器)系统的 2.4.9 内核。 使用此信息在 OTN 上查找相应的 ASMLib 程序包:
  1. 将您的 Web 浏览器指向 http://otn.oracle.com/tech/linux/asmlib/index.html。
  2. 选择适用于您 Linux 版本的链接。
  3. 下载适用于您 Linux 版本的 oracleasmlib 和 oracleasm-support 程序包。
  4. 下载与您的内核相对应的 oracleasm 程序包。
对于以上示例,我下载了 oracleasm-2.4.9-e-smp-1.0.0-1.i686.rpm 程序包。 接下来,通过以 root 用户身份执行以下命令,在每个集群主机上安装这些程序包:
rpm -Uvh oracleasm-kernel_version-asmlib_version.cpu_type.rpm \
oracleasmlib-asmlib_version.cpu_type.rpm \
oracleasm-support-asmlib_version.cpu_type.rpm
例如:
# rpm -Uvh \
> oracleasm-2.4.9-e-smp-1.0.0-1.i686.rpm \
> oracleasmlib-1.0.0-1.i386.rpm \
> oracleasm-support-1.0.0-1.i386.rpm
Preparing...                ########################################### [100%]
1:oracleasm-support      ########################################### [ 33%]
2:oracleasm-2.4.9-e-smp  ########################################### [ 66%]
Linking module oracleasm.o into the module path [  OK  ]
3:oracleasmlib           ########################################### [100%]
配置 ASMLib 使用 ASMLib 之前,必须运行配置脚本来准备驱动程序。 以 root 用户身份在每个集群主机上运行以下命令并回应提示,如下例所示。
# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver.
这将配置 Oracle ASM 库驱动程序的启动时属性。以下问题将确定在启动时是否加载驱动程序以及它将拥有的权限。当前值将显示在方括号(“[]”)中。按 <ENTER> 而不键入回应将保留该当前值。按 Ctrl-C 将终止。
Default user to own the driver interface []:oracle
Default group to own the driver interface []:dba
Start Oracle ASM library driver on boot (y/n) [n]:y
Fix permissions of Oracle ASM disks on boot (y/n) [y]:y
Writing Oracle ASM library driver configuration            [  OK  ]
Creating /dev/oracleasm mount point                        [  OK  ]
Loading module "oracleasm"                                 [  OK  ]
Mounting ASMlib driver filesystem                          [  OK  ]
Scanning system for ASM disks                              [  OK  ]
现在,如下所示启用 ASMLib 驱动程序。
# /etc/init.d/oracleasm enable
Writing Oracle ASM library driver configuration            [  OK  ]
Scanning system for ASM disks                              [  OK  ]
为 ASM 配置磁盘 接下来告诉 ASMLib 驱动程序要使用哪些磁盘。请注意,这些磁盘是不包含任何内容(甚至不包含分区)的空磁盘。 也可以将磁盘分区用于 ASM,但不建议这样做。 通过以 root 用户身份运行以下命令来标记由 ASMLib 使用的磁盘。 仅从一个集群主机上执行此操作。
/etc/init.d/oracleasm createdisk DISK_NAME device_name
提示: 以大写字母输入 DISK_NAME。当前版本中有一个错误,即如果使用小写字母,ASM 实例将无法识别磁盘。
# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb
Marking disk "/dev/sdb" as an ASM disk                     [  OK  ]
# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc
Marking disk "/dev/sdc" as an ASM disk                     [  OK  ]
.
.
.
以下示例演示了如何列出标记为由 ASMLib 使用的所有磁盘。
# /etc/init.d/oracleasm listdisks
VOL1
VOL2
.
.
.
在所有其他集群主机上,以 root 用户身份运行以下命令,扫描所配置的 ASMLib 磁盘:
/etc/init.d/oracleasm scandisks
原始分区 在集群文件系统和 ASM 可用之前,原始分区是为 Oracle RAC 配置共享磁盘存储的唯一选择。 由于这种技术经历长时间的考验,因此它们构成了一个构建 RAC 集群的非常坚实的平台。 但是,原始分区有很多缺点。 主要是它们必须接受每个磁盘可使用 15 个分区的限制、Linux 强制的 255 个原始设备的限制以及额外的管理任务和所需计划。 对于单实例环境而言,逻辑卷管理器 (LVM) 可以减少管理工作并在存储布局方面提供更多灵活性。 不幸的是,LVM 不能识别集群,因此在 RAC 环境中不支持它的使用。 在使用原始分区时,通常最好选择一组标准的分区大小,即某个基本大小的倍数。 这就在存储布局方面提供了更大的灵活性,并且在需要重新调整 I/O 时便于将分区重新配给其他磁盘。我为本示例选择了标准的分区大小 50MB、200MB、600MB 和 1200MB。 为进一步简化管理,每个共享磁盘将拥有相同的分区布局,其中包含某种标准化的分区大小。 在单个磁盘上能够创建的可用分区的最大数量是 15,因此要谨慎地计划分区布局。 下表显示了本指南中用于原始分区示例的分区布局。

分区 类型 大小
1 主分区 50
2 主分区 50
3 主分区 200
4 扩展分区 -
5 逻辑型 200
6 逻辑型 200
7 逻辑型 200
8 逻辑型 200
9 逻辑型 200
10 逻辑型 600
11 逻辑型 600
12 逻辑型 600
13 逻辑型 1200
14 逻辑型 1200
15 逻辑型 任意
16 逻辑型 任意
使用 fdisk(或者您喜爱的磁盘分区工具)为每个共享磁盘创建分区。 以下示例显示了用于本指南所使用磁盘之一的部分过程:
# fdisk /dev/sdb

The number of cylinders for this disk is set to 4427.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):p

Disk /dev/sdb:36.4 GB, 36420075008 bytes
255 heads, 63 sectors/track, 4427 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-4427, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-4427, default 4427):+50m

Command (m for help):n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (8-4427, default 8):
Using default value 8
Last cylinder or +size or +sizeM or +sizeK (8-4427, default 4427):+50m

Command (m for help):n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (15-4427, default 15):
Using default value 15
Last cylinder or +size or +sizeM or +sizeK (15-4427, default 4427):+200m

Command (m for help):n
Command action
e   extended
p   primary partition (1-4)
e
Selected partition 4
First cylinder (40-4427, default 40):
Using default value 40
Last cylinder or +size or +sizeM or +sizeK (40-4427, default 4427):
Using default value 4427

Command (m for help):n
First cylinder (40-4427, default 40):
Using default value 40
Last cylinder or +size or +sizeM or +sizeK (40-4427, default 4427):+200m

.
.
.

Command (m for help):p

Disk /dev/sdb:36.4 GB, 36420075008 bytes
255 heads, 63 sectors/track, 4427 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/sdb1             1      7  56196   83  Linux
/dev/sdb2             8        14     56227+  83  Linux
/dev/sdb3            15        39    200812+  83  Linux
/dev/sdb4            40      4427  35246610    5  Extended
/dev/sdb5            40        64    200781   83  Linux
/dev/sdb6            65        89    200781   83  Linux
/dev/sdb7            90       114    200781   83  Linux
/dev/sdb8           115       139    200781   83  Linux
/dev/sdb9           140       164    200781   83  Linux
/dev/sdb10          165       238    594373+  83  Linux
/dev/sdb11          239       312    594373+  83  Linux
/dev/sdb12          313       386    594373+  83  Linux
/dev/sdb13          387       533   1180746   83  Linux
/dev/sdb14          534       680   1180746   83  Linux

Command (m for help):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
在其他主机上运行 partprobe 使内核与所做的更改同步:
# partprobe
下表列出了最小的 RAC 数据库所需的每个分区。 最小分区大小已经映射到为本示例所选择的标准分区大小。 在本示例中,使用了两个共享磁盘 (/dev/sdb and /dev/sdc)。 (请注意,SLES8 为原始设备使用了一种不同的命名标准。 Red Hat 中的 dev/raw/raw1 在 SLES8 中为 /dev/raw1。 )
目的 最小大小 (MB) 标准化大小 (MB) 磁盘设备 原始设备
Oracle Cluster Registry 100 200 /dev/sdb3 /dev/raw/raw1
Oracle CRS Voting 20 50 /dev/sdb1 /dev/raw/raw2
SYSTEM 表空间 500 600 /dev/sdb11 /dev/raw/raw3
SYSAUX 表空间 800 1200 /dev/sdc13 /dev/raw/raw4
UNDOTBS1 表空间 500 600 /dev/sdb10 /dev/raw/raw5
UNDOTBS2 表空间 500 600 /dev/sdc10 /dev/raw/raw6
EXAMPLE 表空间 160 200 /dev/sdb5 /dev/raw/raw7
USERS 表空间 120 200 /dev/sdb6 /dev/raw/raw8
TEMP 表空间 250 600 /dev/sdc11 /dev/raw/raw9
SPFILE 5 50 /dev/sdb2 /dev/raw/raw10
口令文件 5 50 /dev/sdc1 /dev/raw/raw11
控制文件 1 110 200 /dev/sdb7 /dev/raw/raw12
控制文件 2 110 200 /dev/sdb7 /dev/raw/raw13
重做日志 1_1 120 200 /dev/sdb8 /dev/raw/raw14
重做日志 1_2 120 200 /dev/sdb9 /dev/raw/raw15
重做日志 2_1 120 200 /dev/sdb8 /dev/raw/raw16
重做日志 2_2 120 200 /dev/sdb9 /dev/raw/raw17
磁盘空间总计: 3,660 5,550
将原始设备映射到表中的每个分区: RHEL 版本 将以下各行添加到每个集群节点上的 /etc/sysconfig/rawdevices:
/dev/raw/raw1	/dev/sdb3
/dev/raw/raw2	/dev/sdb1
/dev/raw/raw3	/dev/sdb11
/dev/raw/raw4	/dev/sdc13
/dev/raw/raw5	/dev/sdb10
/dev/raw/raw6	/dev/sdc10
/dev/raw/raw7	/dev/sdb5
/dev/raw/raw8	/dev/sdb6
/dev/raw/raw9	/dev/sdc11
/dev/raw/raw10	/dev/sdb2
/dev/raw/raw11	/dev/sdc1
/dev/raw/raw12	/dev/sdb7
/dev/raw/raw13	/dev/sdc7
/dev/raw/raw14	/dev/sdb8
/dev/raw/raw15	/dev/sdb9
/dev/raw/raw16	/dev/sdc8
/dev/raw/raw17	/dev/sdc9
SLES 8 和 SLES9 将以下各行添加到每个集群节点上的 /etc/raw:
raw1:sdb3
raw2:sdb1
raw3:sdb11
raw4:sdc13
raw5:sdb10
raw6:sdc10
raw7:sdb5
raw8:sdb6
raw9:sdc11
raw10:sdb2
raw11:sdc1
raw12:sdb7
raw13:sdc7
raw14:sdb8
raw15:sdb9
raw16:sdc8
raw17:sdc9
为每个节点上的 CRS 原始设备设置所有权和权限。 这些文件的所有权和权限必须按照所示内容进行准确地设置(安装指南和版本说明都是不正确的)。 如果不这样做,则导致 CRS 安装失败。 如果需要在 CRS 安装失败后进行清理,请参见 MetaLink 说明:239998.1。
chown root:oinstall /dev/raw/raw[12]
chmod 660 /dev/raw/raw[12]
为每个节点上的数据库原始设备设置所有权和权限:
chown oracle:oinstall /dev/raw/raw[3-9]
chown oracle:oinstall /dev/raw/raw1[0-7]
chmod 660 /dev/raw/raw[3-9]
chmod 660 /dev/raw/raw1[0-7]
(注意: RHEL4 对原始设备的实施方法与以前的版本不同。 每次启动原始设备服务时,都会重新创建 /dev/raw/raw* 设备文件,删除任何现有的非默认所有权或权限。 当原始设备与 Oracle 搭配使用时,有几种方法可以解决这个问题。 最简单的方法是将 oracle 帐户添加到 disk 组(例如: usermod –G dba,disk oracle)。 或者,您可以创建一个启动脚本,在系统启动时更改原始设备的所有权和权限。)

重新启动原始设备服务。

RHEL2/3
/sbin/service rawdevices restart

SLES8/9
/etc/init.d/raw start
chkconfig raw on
现在,可以不再考虑这件事而继续完成剩下的安装,但是如果您象我一样必须记住每个原始设备所完成的工作就有许多问题要问了。 如果我们能够根据每个原始设备的用途来命名就好了。 这就是为什么要使用符号链接了。 下表显示了每个原始设备以及我们要为其关联的文件名。 (实际上,我希望将 spfile 和口令文件与 $ORACLE_HOME/dbs 中的位置相关联,但是由于在安装的这个阶段该目录尚不存在,因此我暂时选择了 /u01/oradata/dbname 中的位置。 在安装完成后,如果您愿意,可以将这些原始设备的符号链接重新定位到 $ORACLE_HOME/dbs 目录。)
目的 原始设备 文件名
Oracle Cluster Registry /dev/raw/raw1 /u02/oracrs/ocr.crs
Oracle CRS Voting /dev/raw/raw2 /u02/oracrs/vote.crs
SYSTEM 表空间 /dev/raw/raw3 /u02/oradata/gemni/system_01.dbf
SYSAUX 表空间 /dev/raw/raw4 /u02/oradata/gemni/sysaux_01.dbf
UNDOTBS1 表空间 /dev/raw/raw5 /u02/oradata/gemni/undo1_01.dbf
UNDOTBS2 表空间 /dev/raw/raw6 /u02/oradata/gemni/undo2_01.dbf
EXAMPLE 表空间 /dev/raw/raw7 /u02/oradata/gemni/example_01.dbf
USERS 表空间 /dev/raw/raw8 /u02/oradata/gemni/users_01.dbf
TEMP 表空间 /dev/raw/raw9 /u02/oradata/gemni/temp_01.dbf
SPFILE /dev/raw/raw10 u01/oradata/gemni/spfilegemni.ora
口令文件 /dev/raw/raw11 /u01/oradata/gemni/orapwgemni
控制文件 1 /dev/raw/raw12 /u01/oradata/gemni/control.ctl
控制文件 2 /dev/raw/raw13 /u02/oradata/gemni/control.ctl
重做日志 1_1 /dev/raw/raw14 /u01/oradata/gemni/redo1_1.log
重做日志 1_2 /dev/raw/raw15 /u01/oradata/gemni/redo1_2.log
重做日志 2_1 /dev/raw/raw16 /u01/oradata/gemni/redo2_1.log
重做日志 2_2 /dev/raw/raw17 /u01/oradata/gemni/redo2_2.log
现在只需创建目录和链接即可: 以 root 用户身份创建用于符号链接的目录。 在本示例中,数据库名是 gemni。
CRS 文件
mkdir -p /u02/oracrs
chown -R oracle:oinstall /u02/oracrs
chmod -R 775 /u02/oracrs

数据库文件
mkdir -p /u01/oradata/gemni /u02/oradata/gemni
chown -R oracle:oinstall /u0[12]/oradata
chmod -R 775 /u0[12]/oradata
以 oracle 用户身份创建符号链接。
ln -s /dev/raw/raw1 /u02/oracrs/ocr.crs
ln -s /dev/raw/raw2 /u02/oracrs/vote.crs
ln -s /dev/raw/raw3 /u02/oradata/gemni/system_01.dbf
ln -s /dev/raw/raw4 /u02/oradata/gemni/sysaux_01.dbf
ln -s /dev/raw/raw5 /u02/oradata/gemni/undo1_01.dbf
ln -s /dev/raw/raw6 /u02/oradata/gemni/undo2_01.dbf
ln -s /dev/raw/raw7 /u02/oradata/gemni/example_01.dbf
ln -s /dev/raw/raw8 /u02/oradata/gemni/users_01.dbf
ln -s /dev/raw/raw9 /u02/oradata/gemni/temp_01.dbf
ln -s /dev/raw/raw10 /u01/oradata/gemni/spfilegemni.ora 
ln -s /dev/raw/raw11 /u01/oradata/gemni/orapwgemni 
ln -s /dev/raw/raw12 /u01/oradata/gemni/control.ctl
ln -s /dev/raw/raw13 /u02/oradata/gemni/control.ctl
ln -s /dev/raw/raw14 /u01/oradata/gemni/redo1_1.log
ln -s /dev/raw/raw15 /u01/oradata/gemni/redo1_2.log
ln -s /dev/raw/raw16 /u02/oradata/gemni/redo2_1.log
ln -s /dev/raw/raw17 /u02/oradata/gemni/redo2_2.log
最后,我们需要为数据库配置助手 (DBCA) 创建原始设备映射文件。 此文件将您已创建的原始设备与 DBCA 将要用于创建数据库的名称相关联。 剪切和粘贴以下各行,为本示例创建映射文件:
cat > $HOME/gemni_raw.conf << EOF
system=/u02/oradata/gemni/system_01.dbf
sysaux=/u02/oradata/gemni/sysaux_01.dbf
example=/u02/oradata/gemni/example_01.dbf
users=/u02/oradata/gemni/users_01.dbf
temp=/u02/oradata/gemni/temp_01.dbf
undotbs1=/u02/oradata/gemni/undo1_01.dbf
undotbs2=/u02/oradata/gemni/undo2_01.dbf
redo1_1=/u01/oradata/gemni/redo1_1.log
redo1_2=/u01/oradata/gemni/redo1_2.log
redo2_1=/u02/oradata/gemni/redo2_1.log
redo2_2=/u02/oradata/gemni/redo2_2.log
control1=/u01/oradata/gemni/control.ctl
control2=/u02/oradata/gemni/control.ctl
spfile=/u01/oradata/gemni/spfilegemni.ora
pwdfile=/u01/oradata/gemni/orapwgemni
EOF
然后将 DBCA_RAW_CONFIG 环境变量导出并指向此文件:
export DBCA_RAW_CONFIG=$HOME/gemni_raw.conf

现在您已准备就绪,可以安装 Oracle CRS、安装 Oracle 数据库软件并创建 Oracle RAC 数据库了。


第 4 部分: 安装 Oracle 软件

建立用户等效性

如果您尚未完成此工作,则以 oracle 用户身份登录并建立节点间的用户等效性:
exec /usr/bin/ssh-agent $SHELL
/usr/bin/ssh-add
Enter passphrase for /home/oracle/.ssh/id_rsa:
Identity added: /home/oracle/.ssh/id_rsa (/home/oracle/.ssh/id_rsa)
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
设置 ORACLE_BASE 和 ORACLE_HOME 环境变量:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/crs_1

RHEL4 and SLES9 Only
export LD_ASSUME_KERNEL=2.4.21
安装 Oracle CRS 在安装 Oracle RAC 10g 数据库软件之前,必须先安装 CRS。 CRS 需要在集群的所有主机中共享两个文件: Oracle Cluster Registry (100MB) 和 CRS Voting Disk (20MB)。 这些文件可能存储在原始设备或集群文件系统上。 (还支持将 NFS 用于认证的 NAS 系统,但这超出了本指南的范围。) Oracle ASM 不能用于这些文件,这是因为 ASM 依赖于 CRS 所提供的服务。 在单实例环境中,OUI 自动安装一个专门用于 Oracle ASM 的 CRS 简化版本。 对于 RAC 安装,需要进行单独的安装以便配置 CRS 的完整版本。 CRS 的完整版本存放在一张单独的安装 CD 上,称为 CRS CD。 在安装 CRS 软件之前必须使用原始设备或 OCFS 创建 CRS 文件。 在原始设备上创建 Oracle CRS 文件 请参阅第 3 部分中关于原始设备的章节,获得一个在原始设备上创建 Oracle CRS 文件的示例。 在集群文件系统上创建 CRS 文件 请参阅第 3 部分中关于 OCFS 的章节,获得关于安装和配置集群文件系统的说明。 请注意,OCFS 和 Oracle ASM 可以共同存在于同一系统中,使 OCFS 能够支持 Oracle CRS 文件、Oracle ASM 能够支持数据库。 安装 Oracle CRS 挂载包含 CRS 介质的 CD 或文件系统,并执行 runInstaller。 虽然在安装 Oracle 10g 期间不再需要更换 CD,但是建议您在使用 CD 时从目录中而不是从 CD 挂载点来完成这些工作。
  1. Welcome;单击 Next
  2. Specify Inventory Directory and Credentials — 默认值应该就是正确的;确保 inventory 目录位于 ORACLE_BASE 目录中(例如: /u01/app/oracle/oraInventory)并且操作系统组是“oinstall”,在安装节点 (ds1) 上运行 orainstRoot.sh(确保在 /etc/hosts 中而不仅仅是在 DNS 中配置了您的主机)
  3. Specify File Locations — 确认默认值后继续
  4. Language Selection — 确认默认值后继续
  5. Cluster Configuration — 输入集群名(或接受默认的“crs”);

  6. Private Interconnect Enforcement — 为每个接口指定接口类型(公共、专用或“不使用”)

  7. Oracle Cluster Registry — 在 clusterSpecify OCR Location 中(例如: /u02/oracrs/ocr.crs)为每个节点输入公共节点名和专用节点名
  8. Voting Disk — 输入 voting disk 名(例如: /u02/oracrs/vote.crs)
  9. 在集群的其余节点上运行 orainstRoot.sh
  10. Summary — 在出现提示时单击 Install,从安装节点开始,每次在一个节点上运行 Oracle CRS 主目录中的 root.sh(例如: /u01/app/oracle/product/10.1.0/crs_1/root.sh)。 不要同时运行这些脚本。 等一个脚本结束后再启动另一个。
CRS 安装结束

从 $ORACLE_BASE/product/10.1.0/crs_1/bin 目录中运行 olsnodes 验证安装已成功;例如:

$ cd $ORACLE_BASE/product/10.1.0/crs_1/bin
$ olsnodes
ds1
ds2
Once CRS 已安装并运行;现在可以安装 Oracle RAC 软件的其余部分了。 安装 Oracle 数据库软件 设置 ORACLE_BASE 和 ORACLE_HOME 环境变量:
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1

仅针对 RHES4 和 SLES9
export LD_ASSUME_KERNEL=2.4.21
仅针对 RHEL4: Oracle 10g OUI 将检查操作系统版本以确认是否支持该版本。 到 Oracle 数据库 10.1.0.3 为止,安装程序尚不支持 RHEL4。 作为一种变通方法,在运行 runInstaller 之前,按照以下步骤操作。
cp /etc/redhat-release /etc/redhat-release.orig
cat > /etc/redhat-release << EOF
Red Hat Enterprise Linux AS release 3 (Taroon)
EOF
  1. 从 db CD 运行 runInstaller
  2. Welcome — 单击 Next
  3. Specify File Locations — 确认默认值后继续
  4. Specify Hardware Cluster Installation Mode — 选择 Cluster Installation 并选择集群中的其他节点
  5. Select Installation Type — Enterprise Edition
  6. Product-specific Prerequisite Checks — 全部选 OK;SLES9 选 OK 以忽略 openmotif-2.1.30-11 警告
  7. 选择数据库配置 — 选择“Do not create a starter database”。 (我们将在一个单独的步骤中使用数据库配置助手 (DBCA) 来创建数据库。)
总结

在以 root 用户身份登录时,从安装节点开始,每次在一个主机上运行 Oracle 数据库主目录中的 root.sh(例如: /u01/app/oracle/product/10.1.0/db_1/root.sh)。 不要同时运行这些脚本。 等一个脚本结束后再启动另一个。

在安装节点上执行 root.sh 脚本期间,将会出现虚拟 IP 配置助手。
  1. Welcome — 单击 Next
  2. Network Interfaces — 只选择用于公共网络的接口(在本示例中为 eth0)。 集群中所有主机上的这个接口必须相同。 (如果在安装主机上该接口是 eth0,则在集群中所有其他主机上都必须是 eth0。)
  3. Virtual IPs for cluster nodes — 输入在 DNS 中所配置的每个主机的虚拟 IP 别名(主机名)和虚拟 IP 地址。

  4. Summary — 单击 Finish。 VIP 配置助手创建并启动 VIP、GSD 和 ONS 应用程序资源

  5. Configuration Results — 检查结果并单击 Exit。 在其他节点上依次运行 root.sh。
  6. 安装结束

创建 Oracle RAC 数据库

DBCA — 集群文件系统
在以 oracle 用户身份登录时,设置环境并运行 dbca。

例如:
$ . oraenv
ORACLE_SID = [oracle] ? *
$ dbca
  1. Welcome — 选择“Oracle Real Application Clusters database”
  2. Operations — 创建数据库
  3. Node Selection — 单击 Select All(ds1 和 ds2)
  4. Database Templates — 通用
  5. Database Identification — 全局数据库名: gemni.orademo.org
  6. Management Options — 利用 Enterprise Manager 配置数据库;使用数据库控制进行数据库管理
  7. Database Credentials — 为所有帐户使用相同的口令;输入口令并再次确认
  8. Storage Options — 集群文件系统
  9. Database File Locations — 为所有数据库文件使用相同的位置 (/u02/oradata)
  10. R
    分享到:
    评论

相关推荐

Global site tag (gtag.js) - Google Analytics