一、操作环境:
网络配置:
server1和server2上的/etc/hosts文件:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1                localhost.localdomain       localhost
::1                         localhost6.localdomain6    localhost6
# Public Network - (eth0)
192.168.1.12      server2.rhel5.com server2
192.168.1.13      server3.rhel5.com server3
# Private Interconnect - (eth1)
10.0.0.12           server2-priv
10.0.0.13           server3-priv
# Public Virtual IP (VIP) addresses - (eth0)
192.168.1.14     server2-vip
192.168.1.15     server3-vip
# Private Storage Network for Openfiler - (eth1)
192.168.1.10     openfiler
10.0.0.10        openfiler-priv
在此过程中,关闭iptables、禁用selinux.
 
二、网络配置和ISCSI配置:
调整网络设置:
在 Oracle 9.2.0.1 以及更高版本中,Oracle 在 Linux 上使用 UDP 作为进行过程间通信 (IPC) 的默认协议,如在 RAC 集群中实例之间的缓存融合和集群管理器缓冲区传输。
Oracle 强烈建议将默认的和最大的发送缓冲区大小(SO_SNDBUF 套接字选项)调整为 256KB,并将默认的和最大的接收缓冲区大小(SO_RCVBUF 套接字选项)调整为 256KB。
接收缓冲区由 TCP 和 UDP 用于保留所接收的数据,直到应用程序读出这些数据为止。由于不允许对端设备发送超过缓冲区大小窗口的数据,因此接收缓冲区不会溢出。这意味着,不适合套接字接收缓冲区可能导致发送设备发送的信息淹没接收设备的数据报将会被丢弃。
您无需重新引导即可在 /proc 文件系统中更改默认的和最大的窗口大小:
# su - root
# sysctl -w net.core.rmem_default=262144
net.core.rmem_default = 262144
# sysctl -w net.core.wmem_default=262144
net.core.wmem_default = 262144
# sysctl -w net.core.rmem_max=262144
net.core.rmem_max = 262144
# sysctl -w net.core.wmem_max=262144
net.core.wmem_max = 262144
也可以将以上命令加入到/etc/sysctl.conf文件,使之永久生效。   安装配置openfiler: 两张网卡:eth0和eth1 eth0用于连接公网,eth1的网段与server2和server3处于同一网段,ip如下:
192.168.1.10     openfiler
10.0.0.10          openfiler-priv
服务:
要将 Openfiler 用作 iSCSI 存储服务器,我们需要执行三个主要任务:设置 iSCSI 服务、配置网络访问以及创建物理存储。
安装很简单,这里不做具体介绍了。完成后,打开https://192.168.1.10:446,用户名和密码是openfiler,password,如下图所示:
rhel5.4上搭建oracle 10g RAC_休闲
要控制服务,我们使用 Openfiler Storage Control Center 并导航到 [Services] / [Enable/Disable]:
rhel5.4上搭建oracle 10g RAC_RAC_02
要启用 iSCSI 服务,单击“iSCSI target”服务名称下面的“Enable”。之后,“iSCSI target”状态应更改为“Enabled”。
ietd 程序将实现 iSCSI Enterprise Target 软件的用户级部分,以便在 Linux 上构建 iSCSI 存储系统。启用 iSCSI 目标之后,我们应该能够通过 SSH 进入 Openfiler 服务器,并看到 iscsi-target 服务正在运行:
[root@openfiler ~]# /etc/init.d/iscsi-target status
ietd (pid 3932) is running...
网络访问限制
下一步是配置 Openfiler 中的网络访问,使两个 Oracle RAC 节点(server2 和 server3)都有权通过存储(专用)网络访问我们的 iSCSI 卷。(我们将在下一部分中创建 iSCSI 卷!)
此外,该任务还可以使用 Openfiler Storage Control Center 通过导航到 [General] / [Local Networks] 来完成。利用 Local Networks 屏幕,管理员可以设置允许其访问 Openfiler 设备导出的资源的网络和/或主机。就本文而言,我们希望单独添加两个 Oracle RAC 节点,而不是允许整个 10.0.0.0 网络访问 Openfiler 资源。
输入每个 Oracle RAC 节点时,请注意“Name”域只是一个逻辑名称,仅供参考。根据输入节点的惯例,我仅使用了为该 IP 地址定义的节点名称。接下来,在“Network/Host”域中输入实际节点时,始终使用其 IP 地址,即使其主机名已经在 /etc/hosts 文件或 DNS 中定义。最后,在我们的 Class C 网络中输入实际主机时,应使用子网掩码 255.255.255.255。
记住,您要为集群中的每个 RAC 节点输入专用 网络 (eth1) 的 IP 地址,这一点很重要。
rhel5.4上搭建oracle 10g RAC_休闲_03
物理存储:
这里使用的是vmware,添加了一个60G的硬盘:
rhel5.4上搭建oracle 10g RAC_oracle_04
在sda上创建了一个物理分区,格式为Physical Volume:
rhel5.4上搭建oracle 10g RAC_职场_05
卷分组管理:
rhel5.4上搭建oracle 10g RAC_休闲_06
逻辑卷:
现在,我们可以在新创建的卷分组 (rac) 中创建五个逻辑卷。
卷名 卷描述 所需空间(MB) 文件系统类型
crs oracle集群件 2,048 iSCSI
asm1 oracle ASM卷1 10,240 iSCSI
asm2 oracle ASM卷2 10,240 iSCSI
asm3 oracle ASM卷3 10,240 iSCSI
asm4 oracle ASM卷4 10,240 iSCSI
rhel5.4上搭建oracle 10g RAC_休闲_07
授予节点新的逻辑卷的访问权限
需要先授予 iSCSI 客户端相应的权限,它才能访问新创建的 iSCSI 卷。在前面,我们将 Openfiler 配置为具有两个主机(Oracle RAC 节点),这两个主机可以配置为具有访问资源的权限。现在,我们需要授予这两个 Oracle RAC 节点访问每个新创建的 iSCSI 卷的权限。
rhel5.4上搭建oracle 10g RAC_RAC_08
rhel5.4上搭建oracle 10g RAC_休闲_09
完了后,重启iscsi-target服务:
[root@openfiler ~]# service iscsi-target restart
三、oracle RAC两节点上的配置:
安装iscsi-initiator-utils软件包:
[root@server2 ~]# yum –y install iscsi-initiator-utils
[root@server3 ~]# yum –y install iscsi-initiator-utils
两个节点上执行以下命令:
[root@server3 ~]# service iscsi restart
[root@server3 ~]# service iscsid restart
[root@server3 ~]# chkconfig iscsi on
[root@server3 ~]# chkconfig iscsid on
使用 iscsiadm 命令行接口发现网络存储服务器上的所有可用目标。这应该在两个 Oracle RAC 节点上执行,以检验配置是否正常工作:
[root@server2 ~]# iscsiadm -m discovery -t sendtargets -p openfiler-priv
10.0.0.10:3260,1 iqn.2010-01.com.openfiler:tsn.8217a3b5d273
[root@server3 ~]# iscsiadm -m discovery -t sendtargets -p openfiler-priv
10.0.0.10:3260,1 iqn.2010-01.com.openfiler:tsn.8217a3b5d273
手工登录iSCSI目标:
[root@server2 ~]# iscsiadm -m node -T iqn.2010-01.com.openfiler:tsn.8217a3b5d273 -p 10.0.0.10 -l
Logging in to [iface: default, target: iqn.2010-01.com.openfiler:tsn.8217a3b5d273, portal: 10.0.0.10,3260]
Login to [iface: default, target: iqn.2010-01.com.openfiler:tsn.8217a3b5d273, portal: 10.0.0.10,3260]: successful
[root@server3 ~]# iscsiadm -m node -T iqn.2010-01.com.openfiler:tsn.8217a3b5d273 -p 10.0.0.10 -l
Logging in to [iface: default, target: iqn.2010-01.com.openfiler:tsn.8217a3b5d273, portal: 10.0.0.10,3260]
Login to [iface: default, target: iqn.2010-01.com.openfiler:tsn.8217a3b5d273, portal: 10.0.0.10,3260]: successful
配置自动登录:
[root@server2 ~]# iscsiadm -m node -T iqn.2010-01.com.openfiler:tsn.8217a3b5d273 -p 10.0.0.10 --op update -n node.startup -v automatic
[root@server3 ~]# iscsiadm -m node -T iqn.2010-01.com.openfiler:tsn.8217a3b5d273 -p 10.0.0.10 --op update -n node.startup -v automatic
创建永久性本地 SCSI 设备名称:
[root@server2 ~]# /dev/disk/by-path
[root@server2 by-path]# ls -l *openf*
lrwxrwxrwx 1 root root 9 Feb  6 15:58 ip-10.0.0.10:3260-iscsi-iqn.2010-01.com.openfiler:tsn.8217a3b5d273-lun-0 -> ../../sdb
lrwxrwxrwx 1 root root 9 Feb  6 15:58 ip-10.0.0.10:3260-iscsi-iqn.2010-01.com.openfiler:tsn.8217a3b5d273-lun-1 -> ../../sdc
lrwxrwxrwx 1 root root 9 Feb  6 15:58 ip-10.0.0.10:3260-iscsi-iqn.2010-01.com.openfiler:tsn.8217a3b5d273-lun-2 -> ../../sdd
lrwxrwxrwx 1 root root 9 Feb  6 15:58 ip-10.0.0.10:3260-iscsi-iqn.2010-01.com.openfiler:tsn.8217a3b5d273-lun-3 -> ../../sde
lrwxrwxrwx 1 root root 9 Feb  6 15:58 ip-10.0.0.10:3260-iscsi-iqn.2010-01.com.openfiler:tsn.8217a3b5d273-lun-4 -> ../../sdf
使用上述清单的输出,我们可以建立以下当前映射:
iSCSI 目标名称到本地 SCSI 设备名称的当前映射
ip-10.0.0.10:3260-iscsi-iqn.2010-..-lun-0 /dev/sdb
ip-10.0.0.10:3260-iscsi-iqn.2010-..-lun-1 /dev/sdc
ip-10.0.0.10:3260-iscsi-iqn.2010-..-lun-2 /dev/sdd
ip-10.0.0.10:3260-iscsi-iqn.2010-..-lun-3 /dev/sde
ip-10.0.0.10:3260-iscsi-iqn.2010-..-lun-4 /dev/sdf
但是,每次重新引导 Oracle RAC 节点时,该映射都可能有所不同。例如,重新引导后,iSCSI 目标iqn.2010-01.com.openfiler:tsn.8217a3b5d273-lun-0,可能会映射到本地 SCSI 设备 /dev/sdd。因此,如果您无法预测重新引导后的 iSCSI 目标映射,依赖于使用本地 SCSI 设备名称是不现实的。
我们需要的是可以引用的、一致的设备名称(即 /dev/iscsi/asm1),该设备名称在重新引导后将始终指向正确的 iSCSI 目标。这就是引入名为 udev 的动态设备管理 工具的原因。udev 提供了一个动态设备目录,使用一组可配置的规则通过符号链接指向实际设备。当 udev 收到设备事件(例如,客户端登录到 iSCSI 目标)时,就会根据 sysfs 中提供的可用设备属性匹配其配置好的规则以便识别设备。匹配规则可以提供其他设备信息或指定设备节点名和多个符号链接名,并指示 udev 运行其他程序(例如,一个 SHELL 脚本)作为设备事件处理过程的一部分。
第一步是创建一个新的规则文件。该文件将命名为 /etc/udev/rules.d/55-openiscsi.rules,并且只包含一行用于接收我们感兴趣事件的名称-值对。它还将定义一个调出 SHELL 脚本 (/etc/udev/scripts/iscsidev.sh),用于处理事件。
在两个 Oracle RAC 节点上创建以下规则文件 /etc/udev/rules.d/55-openiscsi.rules:
KERNEL=="sd*", BUS=="scsi", PROGRAM="/etc/udev/scripts/iscsidev.sh %b",SYMLINK+="iscsi/%c/part%n"
现在,我们需要创建在接收该事件时将调用的 UNIX SHELL 脚本。我们首先在两个 Oracle RAC 节点上创建一个单独的目录,用于存储 udev 脚本:
#mkdir -p /etc/udev/scripts
接下来,在两个 Oracle RAC 节点上创建 UNIX shell 脚本 /etc/udev/scripts/iscsidev.sh:
#!/bin/sh
# FILE: /etc/udev/scripts/iscsidev.sh
BUS=${1}
HOST=${BUS%%:*}
[ -e /sys/class/iscsi_host ] || exit 1
file="/sys/class/iscsi_host/host${HOST}/device/session*/iscsi_session*/targetname"
target_name=$(cat ${file})
# This is not an open-scsi drive
if [ -z "${target_name}" ]; then
   exit 1
fi
echo "${target_name##*.}"
创建 UNIX SHELL 脚本后,将其更改为可执行文件:
# chmod 755 /etc/udev/scripts/iscsidev.sh
既然已经配置了 udev,下面将在两个 Oracle RAC 节点上重新启动 iSCSI 服务:
#service iscsi stop
#service iscsi start
#fdisk –l
在 iSCSI 卷上创建分区
oracle 共享驱动器配置
文件系统类型 iSCSI目标名称 大小 挂载点 ASM磁盘组名称 文件系统类型
OCFS2 crs 2G /u02/oradata/orcl  
Oracle 集群注册表 (OCR) 文件 — (~100MB)
表决磁盘 — (~20MB)
ASM asm1 10G ORCL:VOL1 +ORCL_DATA1 Oracle 数据库文件
ASM asm2 10G ORCL:VOL2 +ORCL_DATA1 Oracle 数据库文件
ASM asm3 10G ORCL:VOL3 +FLASH_RECOVERY_AREA Oracle 闪回恢复区
ASM asm4 10G ORCL:VOL4 +FLASH_RECOVERY_AREA Oracle 闪回恢复区
合计   42G      
如上表所示,我们需要在每个 iSCSI 卷(共 5 个)上创建一个 Linux 主分区。fdisk 命令在 Linux 中用于创建(和删除)分区。对于每个 iSCSI 卷(共 5 个),您都可以在创建主分区时使用默认值,因为默认操作是使用整个磁盘。您可以安全地忽略指出设备未包含有效 DOS 分区(或 Sun、SGI 或 OSF 磁盘标签)的任何警告。
就本示例而言,我将从 server1运行 fdisk 命令,以便为上一部分中标识的每个本地 SCSI 设备创建一个主分区:
  • /dev/sda
  • /dev/sdb
  • /dev/sdc
  • /dev/sdd
  • /dev/sde
请注意,要在每个 iSCSI 卷上创建分区,只能从 Oracle RAC 集群中的一个节点上运行!
[root@server2 ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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        2349    18763920   8e  Linux LVM
/dev/sda3            2350        2610     2096482+  82  Linux swap / Solaris
Disk /dev/sdb: 2147 MB, 2147483648 bytes
67 heads, 62 sectors/track, 1009 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1009     2095662   83  Linux
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       10240    10485744   83  Linux
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       10240    10485744   83  Linux
Disk /dev/sde: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1       10240    10485744   83  Linux
Disk /dev/sdf: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1       10240    10485744   83  Linux
[root@server3 ~]# fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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        2349    18763920   8e  Linux LVM
/dev/sda3            2350        2610     2096482+  82  Linux swap / Solaris
Disk /dev/sdb: 2147 MB, 2147483648 bytes
67 heads, 62 sectors/track, 1009 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1009     2095662   83  Linux
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       10240    10485744   83  Linux
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       10240    10485744   83  Linux
Disk /dev/sde: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1       10240    10485744   83  Linux
Disk /dev/sdf: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdf1               1       10240    10485744   83  Linux
 
四、创建“oracle”用户和目录:
两个节点上分别执行:
[root@server3 ~]# groupadd oinstall
[root@server3 ~]# groupadd dba
[root@server3 ~]# useradd -g oinstall -G dba -m -d /home/oracle -s /bin/bash oracle
[root@server3 ~]# passwd oracle
创建oracle基本目录:
[root@server2 ~]# mkdir -p /u01/app/oracle
[root@server2 ~]# chown -R oracle:oinstall /u01/app/oracle
[root@server2 ~]# chmod -R 775 /u01/app/oracle
创建oracle集群组建目录:
[root@server2 ~]# mkdir -p /u01/app/crs
[root@server2 ~]# chown -R oracle:oinstall /u01/app/crs
[root@server2 ~]# chmod -R 775 /u01/app/crs
为 OCFS2/ 集群件创建挂载点:
[root@server2 ~]# mkdir -p /u02/oradata/orcl
[root@server2 ~]# chown -R oracle:oinstall /u02/oradata/orcl
[root@server2 ~]# chmod -R 775 /u02/oradata/orcl
为 oracle 用户帐户创建登录脚本:
注:当您为每个 Oracle RAC 节点设置 Oracle 环境变量时,请确保为每个 RAC 节点分配唯一的 Oracle SID!对于此示例,我使用:
  • server2:ORACLE_SID=orcl1
  • server3:ORACLE_SID=orcl2
向oracle用户家目录下的.bash_profile加入以下内容:
# .bash_profile
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi export JAVA_HOME=/usr/local/java
# User specific environment and startup programs
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORA_CRS_HOME=/u01/app/crs
export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin export CV_JDKHOME=/usr/local/java
# Each RAC node must have a unique ORACLE_SID. (i.e. orcl1, orcl2,...)
export ORACLE_SID=orcl1
export PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin
export ORACLE_TERM=xterm export TNS_ADMIN=$ORACLE_HOME/network/admin export ORA_NLS10=$ORACLE_HOME/nls/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export CLASSPATH=$ORACLE_HOME/JRE
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp export TMPDIR=/tmp
为 Oracle 配置 Linux 服务器:
echo "kernel.shmmax=2147483648" >> /etc/sysctl.conf
echo "kernel.sem=250 32000 100 128" >> /etc/sysctl.conf
echo "fs.file-max=65536" >> /etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65000" >> /etc/sysctl.conf
为 Oracle 用户设置 Shell 限制: cat &gt;&gt; /etc/security/limits.conf <&lt;EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
EOF
cat >&gt; /etc/pam.d/login <&lt;EOF
session required /lib/security/pam_limits.so
EOF
cat >&gt; /etc/profile <&lt;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
完了后激活系统的所有内核参数:
#sysctl –p
配置 hangcheck-timer 内核模块:
使用find命令查找hangcheck-timer.ko 模块,是否已安装:
[root@server2 ~]# find /lib/modules -name "hangcheck-timer.ko"
/lib/modules/2.6.18-164.el5/kernel/drivers/char/hangcheck-timer.ko
配置模块:
[root@server2 ~]# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >&gt; /etc/modprobe.conf
[root@server3 ~]# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" &gt;&gt; /etc/modprobe.conf
为远程访问配置 RAC 节点:
切换到oracle帐号下,首先使用ssh-keygen –t dsa生成密钥,然后使用ssh-copy-id 命令复制到其他节点上即可。
为当前 Shell 会话启用 SSH 用户等效性:
[root@server2 ~]# su - oracle
[oracle@server2 ~]$ exec /usr/bin/ssh-agent $SHELL
[oracle@server2 ~]$ /usr/bin/ssh-add
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
[root@server3 ~]# su - oracle
[oracle@server3 ~]$ exec /usr/bin/ssh-agent $SHELL
[oracle@server3 ~]$  /usr/bin/ssh-add
Identity added: /home/oracle/.ssh/id_dsa (/home/oracle/.ssh/id_dsa)
删除所有 stty 命令:
Bourne、Bash 或 Korn shell:
if [ -t 0 ]; then
stty intr ^C
fi
C shell:
test -t 0
if ($status == 0) then
stty intr ^C
endif
完了后,重启两节点,使配置生效。 五、安装和配置 Oracle 集群文件系统 (OCFS2) 下载地址是:http://oss.oracle.com,一共三个软件包: ocfs2-2.6.18-164.el5-1.4.4-1.el5.i686 ocfs2console-1.4.3-1.el5.i386 ocfs2-tools-1.4.3-1.el5.i386 ocfs2-tools-devel-1.4.3-1.el5.i386 两个节点安装ocfs2相关软件包:
[root@server2 ~]# rpm -ivh ocfs2*
warning: ocfs2-2.6.18-164.el5-1.4.4-1.el5.i686.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing...                ########################################### [100%]
   1:ocfs2-tools            ########################################### [ 25%]
   2:ocfs2-2.6.18-164.el5   ########################################### [ 50%]
   3:ocfs2console           ########################################### [ 75%]
   4:ocfs2-tools-devel      ########################################### [100%]
这里要禁用selinux和关闭防火墙。
配置 OCFS2:
在集群中的两个 Oracle RAC 节点上生成和配置 /etc/ocfs2/cluster.conf 文件。完成此操作最简单的方法是运行 GUI 工具 ocfs2console。在本节中,我们不但使用 ocfs2console 创建和配置 /etc/ocfs2/cluster.conf 文件,而且还创建和启动集群堆栈 O2CB。如果 /etc/ocfs2/cluster.conf 文件不存在(本示例中便是这种情况),ocfs2console 工具将创建该文件以及一个默认集群名为 ocfs2 的新集群堆栈服务 (O2CB)。您将需要以 root 用户帐户在集群中的两个 Oracle RAC 节点上执行该操作:
在两个节点的root帐号下,分别执行ocfs2console &命令:
rhel5.4上搭建oracle 10g RAC_休闲_10
1、选择 [Cluster] -&gt; [Configure Nodes...]。这将启动 OCFS2 集群堆栈(下图所示)并显示“Node Configuration”对话框。
rhel5.4上搭建oracle 10g RAC_oracle_11
2、在“Node Configuration”对话框上,单击 [Add] 按钮。
  • 这将显示“Add Node”对话框。
  • 在“Add Node”对话框中,输入集群中第一个节点的 Host nameIP address。将 IP Port 设置为默认值 7777。在我的示例中,我添加了两个节点,即使用 server1 / 192.168.1.12 表示第一个节点,并使用 server3 / 192.168.1.13表示第二个节点。
  • 单击“Node Configuration”对话框上的 [Apply] — 所有节点现在将处于“Active”状态,如下图所示。
  • 单击“Node Configuration”对话框上的 [Close]。
rhel5.4上搭建oracle 10g RAC_RAC_12
退出 ocfs2console 后,将获得一个类似如下所示的 /etc/ocfs2/cluster.conf。需要在集群中的两个 Oracle RAC 节点上完成该过程,并且所有节点的 OCFS2 配置文件必须完全相同:
node:
        ip_port = 7777
        ip_address = 192.168.1.12
        number = 0
        name = server2
        cluster = ocfs2
node:
        ip_port = 7777
        ip_address = 192.168.1.13
        number = 1
        name = server3
        cluster = ocfs2
cluster:
        node_count = 2
        name = ocfs2
O2CB 集群服务
在使用 OCFS2 执行任何操作(如格式化或挂载文件系统)之前,我们需要先运行 OCFS2 的集群堆栈 O2CB(它将是以上执行的配置过程的结果)。此堆栈包含以下服务:
  • NM:用于跟踪 cluster.conf 中的所有节点的节点管理器
  • HB:当节点加入或离开集群时向上/向下发出通知的心跳服务
  • TCP:处理节点之间的通信
  • DLM:用于跟踪所有锁、这些锁的所有者和状态的分布式锁管理器
  • CONFIGFS:在 /config 中挂载的用户空间驱动的配置文件系统
  • DLMFS:用户空间与内核空间 DLM 的接口
配置 O2CB 在引导时启动并调整 O2CB 心跳阈值
两个节点都运行以下命令:
# /etc/init.d/o2cb offline ocfs2
# /etc/init.d/o2cb unload
# /etc/init.d/o2cb configure
Configuring the O2CB driver.
This will configure the on-boot properties of the O2CB driver.
The following questions will determine whether the driver is loaded on
boot.  The current values will be shown in brackets ('[]').  Hitting
<ENTER> without typing an answer will keep that current value.  Ctrl-C
will abort.
Load O2CB driver on boot (y/n) [n]: y
Cluster stack backing O2CB [o2cb]: ocfs2
Invalid answer: ocfs2
Cluster stack backing O2CB [o2cb]: o2cb
Cluster to start on boot (Enter "none" to clear) [ocfs2]:
Specify heartbeat dead threshold (&gt;=7) [31]: 61
Specify network idle timeout in ms (&gt;=5000) [30000]: 30000
Specify network keepalive delay in ms (&gt;=1000) [2000]: 2000
Specify network reconnect delay in ms (&gt;=2000) [2000]: 2000
Writing O2CB configuration: OK
Loading filesystem "configfs": OK
Mounting configfs filesystem at /sys/kernel/config: OK
Loading filesystem "ocfs2_dlmfs": OK
Mounting ocfs2_dlmfs filesystem at /dlm: OK
Starting O2CB cluster ocfs2: OK
格式化 OCFS2 文件系统:
这个部分只在一个节点上执行即可。
[root@server2 ~]# mkfs.ocfs2 -b 4K -C 32K -N 4 -L oracrsfiles /dev/sdb1
mkfs.ocfs2 1.4.3
Cluster stack: classic o2cb
Filesystem label=oracrsfiles
Block size=4096 (bits=12)
Cluster size=32768 (bits=15)
Volume size=2145943552 (65489 clusters) (523912 blocks)
3 cluster groups (tail covers 977 clusters, rest cover 32256 clusters)
Journal size=67108864
Initial number of node slots: 4
Creating bitmaps: done
Initializing superblock: done
Writing system files: done
Writing superblock: done
Writing backup superblock: 1 block(s)
Formatting Journals: done
Formatting slot map: done
Writing lost+found: done
mkfs.ocfs2 successful
挂载 OCFS2 文件系统:
在已经创建了此文件系统,接下来我们便可以载入它了。首先,使用命令行进行挂载,然后我将介绍如何将它包含在 /etc/fstab 中以在每次引导时挂载它。
注:需要使用 OCFS2 标签 oracrsfiles 以 root 用户帐户在两个 Oracle RAC 节点上执行集群文件系统挂载!
首先,此处介绍了如何从命令行手动挂载 OCFS2 文件。注意,需要以 root 用户帐户执行该操作:
[root@server2 ~]# mount -t ocfs2 -o datavolume,nointr -L "oracrsfiles" /u02/oradata/orcl
编辑/etc/fstab文件,加入以下内容,使系统在启动的时候自动挂在:
LABEL=oracrsfiles /u02/oradata/orcl ocfs2 _netdev,datavolume,nointr 0 0
检查新 OCFS2 文件系统的权限:
[root@server2 ~]# ls -ld /u02/oradata/orcl
drwxr-xr-x 3 root root 3896 Feb  6 18:25 /u02/oradata/orcl
[root@server2 ~]# chown oracle:oinstall /u02/oradata/orcl
[root@server2 ~]# chmod 775 /u02/oradata/orcl
[root@server2 ~]# ls -ld /u02/oradata/orcl
drwxrwxr-x 3 oracle oinstall 3896 Feb  6 18:25 /u02/oradata/orcl
安装和配置自动存储管理 (ASMLib 2.0)
主要是以下三个软件包:
oracleasm-support
oracleasm-2.6.18-164(对应当前系统的内核,否则在配置时会出错的)
oracleasmlib
配置和加载 ASMLib 2.0 程序包:
两个节点上以root身份执行:
[root@server2 ~]# /etc/init.d/oracleasm configure
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 [oracle]:
Default group to own the driver interface [oinstall]:
Start Oracle ASM library driver on boot (y/n) [y]:
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [  OK  ]
Scanning the system for Oracle ASMLib disks: [  OK  ]
[root@server3 ~]# /etc/init.d/oracleasm configure
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 [oracle]:
Default group to own the driver interface [oinstall]:
Start Oracle ASM library driver on boot (y/n) [y]:
Scan for Oracle ASM disks on boot (y/n) [y]:
Writing Oracle ASM library driver configuration: done
Initializing the Oracle ASMLib driver: [  OK  ]
Scanning the system for Oracle ASMLib disks: [  OK  ]
为 Oracle 创建 ASM 磁盘:
[root@server2 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
Marking disk "VOL2" as an ASM disk: [  OK  ]
[root@server2 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdd1
Marking disk "VOL2" as an ASM disk: [  OK  ]
[root@server2 ~]# /etc/init.d/oracleasm createdisk VOL3 /dev/sde1
Marking disk "VOL3" as an ASM disk: [  OK  ]
[root@server2 ~]# /etc/init.d/oracleasm createdisk VOL4 /dev/sdf1
Marking disk "VOL4" as an ASM disk: [  OK  ]
[root@server2 ~]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
这步只需在一个节点上执行就可以了。
在其他节点上扫描磁盘,使其能够识别:
[root@server3 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [  OK  ]
[root@server3 ~]# /etc/init.d/oracleasm listdisks
VOL1
VOL2
VOL3
VOL4
五、安装oracle软件:
rhel5.4上搭建oracle 10g RAC_oracle_13
rhel5.4上搭建oracle 10g RAC_职场_14
rhel5.4上搭建oracle 10g RAC_RAC_15
rhel5.4上搭建oracle 10g RAC_oracle_16
这里还会提示指定Specify OCR LocationVoting Disk Location,这个就在/u02/oradata/orcl目录下以oracle身份执行以下命令:
dd if=/dev/zero of=/u02/oradata/orcl/ocr bs=4096k count=50
dd if=/dev/zero of=/u02/oradata/orcl/vote bs=4096k count=5
rhel5.4上搭建oracle 10g RAC_职场_17 
rhel5.4上搭建oracle 10g RAC_oracle_18
到这里执行完脚本后,Vip没有成功配置,提示以下错误:
/u01/app/crs/jdk/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
查了半天,说是一个bug,要安装补丁,可是oracle官方不让下载,再说了,等下载下来要好几个小时呢,这么冷的天不愿意等,于是乎就继续google,后来查找了以下信息,说是把vipca脚本里的以下内容注释掉,再次运行vipca就ok了。
      #arch=`uname -m`
      #if [ "$arch" = "i686" -o "$arch" = "ia64" ]
      #then
      #     LD_ASSUME_KERNEL=2.4.19
      #     export LD_ASSUME_KERNEL
      #fi
还有一个程序在执行时也会报类似的错误,它就是srvctl,同样编辑这个脚本,注释掉以下内容:
#LD_ASSUME_KERNEL=2.4.19
#export LD_ASSUME_KERNEL
rhel5.4上搭建oracle 10g RAC_RAC_19
rhel5.4上搭建oracle 10g RAC_oracle_20
完了后,重启两个节点再做如下验证:
检查集群节点:
[oracle@server2 bin]$ olsnodes -n
server3 1
server2 2
配置 Oracle 集群件功能:
[oracle@server3 bin]$ ./crs_stat -t -v
Name           Type           R/RA   F/FT   Target    State     Host       
----------------------------------------------------------------------
ora....er2.gsd application    0/5    0/0    ONLINE    ONLINE    server2    
ora....er2.ons application    0/3    0/0    ONLINE    ONLINE    server2    
ora....er2.vip application    0/0    0/0    ONLINE    ONLINE    server2    
ora....er3.gsd application    0/5    0/0    ONLINE    ONLINE    server3    
ora....er3.ons application    0/3    0/0    ONLINE    ONLINE    server3    
ora....er3.vip application    0/0    0/0    ONLINE    ONLINE    server3
检查 CRS 状态
[oracle@server2 bin]$ crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
检查 Oracle 集群件自动启动脚本
[oracle@server2 bin]$ ls -l /etc/init.d/init.*
-r-xr-xr-x 1 root root  1951 Feb  6 19:42 /etc/init.d/init.crs
-r-xr-xr-x 1 root root  4699 Feb  6 19:42 /etc/init.d/init.crsd
-r-xr-xr-x 1 root root 35379 Feb  6 19:42 /etc/init.d/init.cssd
-r-xr-xr-x 1 root root  3175 Feb  6 19:42 /etc/init.d/init.evmd
下来就是安装oracle数据库软件了。
rhel5.4上搭建oracle 10g RAC_职场_21
先安装数据库软件,之后再创建数据库:
rhel5.4上搭建oracle 10g RAC_休闲_22
rhel5.4上搭建oracle 10g RAC_休闲_23
 
rhel5.4上搭建oracle 10g RAC_休闲_24
创建TNS监听器进程:
rhel5.4上搭建oracle 10g RAC_oracle_25
rhel5.4上搭建oracle 10g RAC_oracle_26
这里要选中全部节点,一路下一步即可。
执行以下命令验证下,两个节点是否有监听器存在:
rhel5.4上搭建oracle 10g RAC_RAC_27
rhel5.4上搭建oracle 10g RAC_职场_28
创建集群数据库:
rhel5.4上搭建oracle 10g RAC_oracle_29
rhel5.4上搭建oracle 10g RAC_RAC_30
选中全部节点,然后下一步。
rhel5.4上搭建oracle 10g RAC_RAC_31
rhel5.4上搭建oracle 10g RAC_RAC_32
这里要保留默认选项,下一步。
rhel5.4上搭建oracle 10g RAC_RAC_33
这里定义oracle用户的统一口令;
rhel5.4上搭建oracle 10g RAC_休闲_34
选择ASM,下一步:
rhel5.4上搭建oracle 10g RAC_休闲_35
从 Oracle 10g 第 2 版开始,ASM 实例服务器参数文件 (SPFILE) 需要位于共享磁盘上。您将需要修改“Create server parameter file (SPFILE)”的默认条目以驻留在 OCFS2 分区上,如下所示:/u02/oradata/orcl/dbs/spfile+ASM.ora。所有其他选项可以保留其默认值。
然后将有一个对话框询问您是否要创建并启动 ASM 实例。选择 OK 按钮确认此对话框。
首先,单击 Create New 按钮。这将弹出“Create Disk Group”窗口,其中显示了我们在前面使用 ASMLib 创建的四个卷。
rhel5.4上搭建oracle 10g RAC_RAC_36
如果在本文前面部分创建的卷没有显示在“Select Member Disks”窗口中:(ORCL:VOL1、ORCL:VOL2、ORCL:VOL3 和 ORCL:VOL4),则单击“Change Disk Discovery Path”按钮并输入“ORCL:VOL*”。
对于第一个“Disk Group Name”,我使用了字符串“ORCL_DATA1”。在“Select Member Disks”窗口中选择前两个 ASM 卷(ORCL:VOL1 和 ORCL:VOL2)。将“Redundancy”设置为“Normal”。
rhel5.4上搭建oracle 10g RAC_休闲_37
确认此窗口中的所有值均正确后,单击 [OK] 按钮。这将显示“ASM Disk Group Creation”对话框。完成 ASM 磁盘组创建过程时,您将返回到“ASM Disk Groups”窗口。
再次单击 Create New 按钮。对于第二个“Disk Group Name”,我使用了字符串“FLASH_RECOVERY_AREA”。在“Select Member Disks”窗口中选择后两个 ASM 卷(ORCL:VOL3 和 ORCL:VOL4)。将“Redundancy”设置为“Normal”。
rhel5.4上搭建oracle 10g RAC_RAC_38
确认此窗口中的所有值均正确后,单击 [OK] 按钮。这将显示“ASM Disk Group Creation”对话框。
完成 ASM 磁盘组创建过程后,您将返回到“ASM Disk Groups”窗口,其中创建并选择了两个磁盘组。使用新建的磁盘组名称“ORCL_DATA1”旁边的复选框选择一个磁盘组(确保未选择“FLASH_RECOVERY_AREA”的磁盘组),然后单击 [Next] 继续。
rhel5.4上搭建oracle 10g RAC_休闲_39
rhel5.4上搭建oracle 10g RAC_职场_40
这里使用默认值,下一步:
选中“Specify Flash Recovery Area”选项。
对于“Flash Recovery Area”,单击 [Browse] 按钮并选择磁盘组名“+FLASH_RECOVERY_AREA”。
我使用的磁盘组的大小约为 20GB。定义快速恢复区大小时,使用整个卷减去 10% — (20-10%=18GB)。我使用了 18GB 的“Flash Recovery Area Size”。
rhel5.4上搭建oracle 10g RAC_休闲_41
下一步:
rhel5.4上搭建oracle 10g RAC_RAC_42 
这步保留默认值,下一步:
rhel5.4上搭建oracle 10g RAC_RAC_43
对于此测试配置,单击 Add,然后输入 orcl_taf 作为“Service Name”。将这两个实例设置为 Preferred,并为“TAF Policy”选择“Basic”。
rhel5.4上搭建oracle 10g RAC_休闲_44
下一步:
rhel5.4上搭建oracle 10g RAC_oracle_45
下一步:
rhel5.4上搭建oracle 10g RAC_职场_46
下一步:
rhel5.4上搭建oracle 10g RAC_休闲_47
保留默认选项 Create Database。我还始终选择“Generate Database Creation Scripts”。单击 Finish 启动数据库创建过程。出现数据库创建报表和脚本生成对话框后,数据库创建将启动。
rhel5.4上搭建oracle 10g RAC_oracle_48 
rhel5.4上搭建oracle 10g RAC_oracle_49
rhel5.4上搭建oracle 10g RAC_职场_50
rhel5.4上搭建oracle 10g RAC_职场_51
在数据库创建结束时,退出 DBCA。
注:退出 DBCA 后,在大约 30-60 秒内,您不会收到来自对话框窗口的任何反馈。一段时间之后,将弹出另一对话框,指示它正在启动所有 Oracle 实例以及 HA 服务“orcl_taf”。这可能需要几分钟的时间才能完成。完成时,所有窗口和对话框将关闭。
创建 orcl_taf 服务
在创建 Oracle 集群化数据库的过程中,您添加了一个名为 orcl_taf 的服务,我们将用它来连接启用了 TAF 的数据库。在我的多个安装中,均将此服务添加到了 tnsnames.ora 中,但从未将其作为每个 Oracle 实例的服务更新过。
使用以下命令来验证已成功添加 orcl_taf 服务:
SQL&gt; show parameter service NAME TYPE VALUE -------------------- ----------- -------------------------------- service_names string orcl.idevelopment.info, orcl_taf 如果定义的唯一服务是用于 orcl.idevelopment.info 的,则您将需要手动将此服务添加到两个实例中: SQL&gt; show parameter service NAME TYPE VALUE -------------------- ----------- -------------------------- service_names string orcl.idevelopment.info SQL&gt; alter system set service_names = 2 'orcl.idevelopment.info, orcl_taf.idevelopment.info' scope=both;
在 RAC 环境中启用存档日志:
  1. 登录到一个节点(即 server3),通过在当前实例中将 cluster_database 设置为 FALSE 来禁用集群实例参数: $ sqlplus "/ as sysdba" SQL&gt; alter system set cluster_database=false scope=spfile sid='orcl1';
  2. 关闭所有 访问集群化数据库的实例: $ srvctl stop database -d orcl
  3. 使用本地实例,挂载 数据库: $ sqlplus "/ as sysdba" SQL&gt; startup mount
  4. 启用存档: SQL&gt; alter database archivelog;
  5. 通过在当前实例中将实例参数 cluster_database 修改为 TRUE,重新启用对集群的支持: SQL&gt; alter system set cluster_database=true scope=spfile sid='orcl1';
  6. 关闭本地实例: SQL&gt; shutdown immediate
  7. 使用 srvctl 备份所有 实例: $ srvctl start database -d orcl
  8. (可选)使用 srvctl 备份所有服务(即 TAF): $ srvctl start service -d orcl
  9. 登录到本地实例,验证存档日志模式已启用: $ sqlplus "/ as sysdba" SQL&gt; archive log list
启用存档日志模式后,RAC 配置中的每个实例都可以自动存档重做日志!
[oracle@server3 ~]$ crs_stat -t -v
Name           Type           R/RA   F/FT   Target    State     Host       
----------------------------------------------------------------------
ora.orcl.db    application    0/1    0/1    ONLINE    ONLINE    server3    
ora....l1.inst application    0/5    0/0    ONLINE    ONLINE    server3    
ora....l2.inst application    0/5    0/0    ONLINE    ONLINE    server2    
ora...._taf.cs application    0/1    0/1    ONLINE    ONLINE    server2    
ora....cl1.srv application    0/1    0/0    ONLINE    ONLINE    server3    
ora....cl2.srv application    0/1    0/0    ONLINE    ONLINE    server2    
ora....SM2.asm application    0/5    0/0    ONLINE    ONLINE    server2    
ora....R2.lsnr application    0/5    0/0    ONLINE    ONLINE    server2    
ora....er2.gsd application    0/5    0/0    ONLINE    ONLINE    server2    
ora....er2.ons application    0/3    0/0    ONLINE    ONLINE    server2    
ora....er2.vip application    0/0    0/0    ONLINE    ONLINE    server2    
ora....SM1.asm application    0/5    0/0    ONLINE    ONLINE    server3    
ora....R3.lsnr application    0/5    0/0    ONLINE    ONLINE   server3    
ora....er3.gsd application    0/5    0/0    ONLINE    ONLINE    server3    
ora....er3.ons application    0/3    0/0    ONLINE    ONLINE    server3    
ora....er3.vip application    0/0    0/0    ONLINE    ONLINE    server3    
六、验证 RAC 集群和数据库配置
所有实例和服务的状态
[oracle@server3 dbs]$ srvctl status database -d orcl
Instance orcl1 is running on node server3
Instance orcl2 is running on node server2
单个实例的状态
[oracle@server3 dbs]$ srvctl status instance -d orcl -i orcl2
Instance orcl2 is running on node server2
在数据库全局命名服务的状态
[oracle@server3 dbs]$ srvctl status service -d orcl -s orcl_taf
Service orcl_taf is running on instance(s) orcl2, orcl1
特定节点上节点应用程序的状态
[oracle@server3 dbs]$ srvctl status nodeapps -n server2
VIP is running on node: server2
GSD is running on node: server2
Listener is running on node: server2
ONS daemon is running on node: server2
ASM 实例的状态
[oracle@server3 dbs]$ srvctl status asm -n server3
ASM instance +ASM1 is running on node server3.
列出配置的所有数据库
[oracle@server3 dbs]$ srvctl config database
orcl
显示 RAC 数据库的配置
[oracle@server3 dbs]$ srvctl config database -d orcl
server3 orcl1 /u01/app/oracle/product/10.2.0/db_1
server2 orcl2 /u01/app/oracle/product/10.2.0/db_1
显示指定集群数据库的所有服务
[oracle@server3 dbs]$ srvctl config service -d orcl
orcl_taf PREF: orcl2 orcl1 AVAIL:
显示节点应用程序的配置 —(VIP、GSD、ONS、监听器)
[oracle@server3 dbs]$ srvctl config nodeapps -n server3 -a -g -s -l
VIP exists.: /server3-vip/192.168.1.15/255.255.255.0/eth0
GSD exists.
ONS daemon exists.
Listener exists.
显示 ASM 实例的配置
[oracle@server3 dbs]$ srvctl config asm -n server3
+ASM1 /u01/app/oracle/product/10.2.0/db_1
集群中所有正在运行的实例
rhel5.4上搭建oracle 10g RAC_oracle_52
位于磁盘组中的所有数据文件
rhel5.4上搭建oracle 10g RAC_休闲_53
属于“ORCL_DATA1”磁盘组的所有 ASM 磁盘
rhel5.4上搭建oracle 10g RAC_职场_54
启动/停止集群
停止 Oracle RAC 10g 环境
第一步是停止 Oracle 实例。当此实例(和相关服务)关闭后,关闭 ASM 实例。最后,关闭节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。
$ export ORACLE_SID=orcl1
$ emctl stop dbconsole
$ srvctl stop instance -d orcl -i orcl1
$ srvctl stop asm -n server3
$ srvctl stop nodeapps -n server3
启动 Oracle RAC 10g 环境
第一步是启动节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS)。当成功启动节点应用程序后,启动 ASM 实例。最后,启动 Oracle 实例(和相关服务)以及企业管理器数据库控制台。
$ export ORACLE_SID=orcl1
$ srvctl start nodeapps -n server3
$ srvctl start asm -n server3
$ srvctl start instance -d orcl -i orcl1
$ emctl start dbconsole
使用 SRVCTL 启动/停止所有实例
启动/停止所有实例及其启用的服务。我只是觉得有意思就把此步骤作为关闭所有实例的一种方法加进来了!
$ srvctl start database -d orcl
$ srvctl stop database -d orcl