本文档涉及:VMware workstation + Red Hat Enterprise Linux 5 + Oracle

环境说明:
本文搭建的是Oracle Database 11g的两节点RAC。
操作系统版本:Red Hat Enterprise Linux 5 Update 10

节点一:
主机名:11g-1
公共网卡:192.168.56.141
私有网卡:192.168.10.141

节点二:
主机名:11g-2
公共网卡:192.168.56.142
私有网卡:192.168.10.142

Openfiler – 共享存储:
公共网卡:192.168.56.130

CenterServer – DNS域名解析等基础架构服务:
公共网卡:192.168.56.140

——————————————————————————
VMware workstation中关于节点虚拟机的配置(以Node1为例,Node2是类似的)
Node_VM_Configure
如果采用VMware的自动化光盘安装,那么在RHEL安装完成后,会自动的安装VMware Toolbox:
VM_OS_Installing
(正在安装RHEL的呈现)
Vmwaretool_Installing
(可以看到,在RHEL安装完成后,在系统启动的过程中,会自动的安装VMWARE-TOOLBOX)
最后,系统装好后:
RHEL_Done

一、配置Openfiler,为RAC的共享存储做准备
为Openfiler的虚拟机添加一块20GB的额外磁盘存储:
Openfiler_VM_AddDisk
访问Openfielr的WEB程序配置:
Openfiler_1

Openfiler_2

1)Openfiler —> System:
Openfiler_System_Configure_1

Openfiler_System_Configure_2
如上所示,将即将作为RAC节点的两台主机的信息添加到OPENFILER的“网络访问控制”中。

2)逻辑卷的划分(Openfiler —> Volume —> Block Device —> Volume Groups —> Add Volume —> Manage Volumes)
a.Block Devices
Openfiler_Block_1

Openfiler_Block_2

Openfiler_Block_3
如图所示,通过Openfiler对刚刚加载上来的20GB的磁盘做了分区操作。
所有的空间放在了/dev/sdb1中。
该步骤相当于Linux终端操作中的:fdisk。

b.Volume Groups
Openfiler_VolumeGroups_1

Openfiler_VolumeGroups_2
如上,将刚刚Step.A中创建的/dev/sdb1分给了逻辑卷组:ora11g_rac。
该步骤相当于Linux终端操作中的:pvcreate以及vgcreate。

c.Add Volumes
Openfiler_AddVolume_1

Openfiler_AddVolume_2

Openfiler_AddVolume_3
如上,在逻辑卷组(“ora11g_rac”)中创建了逻辑卷:ora11grac。
该步骤相当于Linux终端操作中的:lvcreate。

3)iSCSI Server配置
Openfiler —> Services
Openfiler_Services_1
如图,启用“iSCSI Target”服务,并运行。

Openfiler —> Volumes —> iSCSI Target
Openfiler_iSCSI_1

Openfiler_iSCSI_2

Openfiler_iSCSI_3

Openfiler_iSCSI_4

Openfiler_iSCSI_5
上面的5步,创建了一个名为“oracle11grac”的iSCSI LUN,它绑定了资源“/dev/ora11g_rac/ora11grac”,即:逻辑卷”ora11grac“,并且,该LUN对于11g RAC的节点主机(11g-1;11g-2)是开放访问的。

这样,Openfiler部分的配置就完成了。

二、Linux节点主机的配置(操作系统预配置
这部分的配置对于两个节点主机来说,基本上是一致的,如果有所差异,会特别标注。
这里,以节点一为主,呈现具体的配置细节,没有特别的说明,节点二需要一致
1)操作系统信息获取
操作系统版本

网卡的配置(双网卡)
当前状态:

配置信息:

公共网卡的GATEWAY(网关)是一定要配置的,否则在Grid Infrastructure安装的过程中,会因此引发一些错误。

防火墙(iptables)与SELinux状态:

内核版本信息:

Yum工具的状态:

VMware-Toolbox工具的时间同步功能的状态

2)操作系统的配置
1.对配置文件的修改
/etc/hosts

/etc/security/limits.conf

/etc/sysctl.conf

立即生效:
Command is:sysctl -p

/etc/pam.d/login

2.新增系统用户和系统组

3.用户(grid、oracle)环境变量的设定
(注意:环境变量中的ORACLE_SID的值是根据不同的节点而不同的

User:grid
节点一:
ORACLE_SID=+ASM1; export ORACLE_SID

节点二:
ORACLE_SID=+ASM2; export ORACLE_SID

User:oracle
节点一:
ORACLE_SID=edendb1; export ORACLE_SID

节点二:
ORACLE_SID=edendb2; export ORACLE_SID

立即生效:

4.创建ORACLE_BASE、ORACLE_HOME需要的目录结构
User:root

User:grid

User:oracle

这样,部署Oracle RAC所需要的目录(Grid Infrastructure和Database Software)结构就准备好了。

5.Oracle需要的操作系统软件包支持
a.标准软件包的安装
Command is:
yum install binutils* compat-libstdc++-* elfutils-libelf-* elfutils-libelf-devel-* elfutils-libelf-devel-static-* gcc-* gcc-c++-* glibc-* glibc-common-* glibc-devel-* glibc-headers-* ksh libaio-* libaio-devel-* libgcc libstdc++-* libstdc++-devel make sysstat unixODBC unixODBC-devel compat-libstdc++-33.i386 compat-libstdc++-296.i386 glibc.i686 glibc-devel.i386 unixODBC.i386 unixODBC-devel.i386 libaio.i386 libaio-devel.i386 libgcc.i386 libstdc++.i386 libstdc++-devel.i386 libaio-devel.i386 libXp.i386

Shell Log:

b.Oracle安装介质提供程序:cvuqdisk
该软件包位于Oracle的安装介质中,所以开始对cvuqdisk的安装的前提是,上传Oracle安装介质到服务器,并解压。
这里只记录如何找到并安装cvuqdisk,该步骤的次序位于“上传介质到服务器”之后,而非上文所述的诸多顺序步骤之一。
Shell Log:

6.关于时间同步
本环境是位于VMware中的,所以时间同步的方案选择:VMware Toolbox。
另一个可以选择的方案是:搭建NTP。

About NTP Configuration
(下面摘录的NTP配置是以前在其他的RAC部署文档中的节选

请特别关注“/etc/sysconfig/ntpd”中的OPTION值中的“-x”参数,这是新增的部分。

More Details about the “-x” Options in NTP Configuration.
NTP_Option_-x
该参数影响了NTP的时钟同步策略,每秒钟调整o.5ms。
—— —— ——
安装NTP服务端(主机一,OracleRAC1)
NTP相关的服务与文件
服务:ntpd
配置文件:/etc/ntp.conf

软件包的安装
[root@OracleRAC1 ~]# rpm -qa | grep ntp
ntp-4.2.2p1-15.el5_7.1
chkfontpath-1.10.1-1.1
[root@OracleRAC1 ~]#

如果没有,使用YUM,通过本地的ISO介质安装:
1. Yum list | grep –color ntp
2. Yum install –y ntp

配置NTP
配置/etc/ntp.conf:
(节点一)
[root@OracleRAC1 ~]# cat /etc/ntp.conf | grep -v “^#”

restrict default nomodify notrap
restrict 128.0.1.0 mask 255.255.255.0 nomodify notrap
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
keys /etc/ntp/keys
[root@OracleRAC1 ~]#
重启NTPD服务,应用/etc/ntp.conf
[root@OracleRAC1 ~]# service ntpd status
ntpd is stopped
[root@OracleRAC1 ~]# service ntpd start
Starting ntpd: [ OK ]
[root@OracleRAC1 ~]#

NTP服务的状态
通过“ntpstat”确认NTP服务的状态。
通常NTP服务restart之后,需要等待64s该服务才能真正的对外提供时间服务,如果在该冷却时间内,将NTP客户端的时间服务指向到该服务,那么会报出有关主机或时间服务不可达的错误。
Command:watch –n 1 ntpstat
NTPstat
NTP服务端,需要注意的
Tool:system-config-date
system-config-date_ntp_Server
当使用“system-config-date”查看的时候,NTP服务端需要确认“Hide advanced options”中勾选了:Use Local Time Source。
NTP服务端的时间获取应该是本机!
NTP客户端的配置(主机二,OracleRAC2)
Tool:system-config-date
system-config-date_ntp_Client
如上配置好了之后,如上文所述,“查看NTP服务的状态”。
正常后,时间服务的相关配置就完成了。

7.SSH等价性
SSH等价性的配置是针对Oracle RAC与操作系统关联的用户(grid、oracle)实施的。
它的目的是:
在主机一上,通过grid用户SSH到主机二,不需要验证密码,反之亦然。
而针对oracle用户,也需要实现同样的策略。

相关命令:
1. ssh-keygen
2. ssh-copy-id

(每个节点的每个用户到各个节点的同一用户都要做出相关操作)
下面,仅通过主机一的grid用户做说明,其他的各个主机的各个用户(grid、oracle)类似的操作。
Grid:
生成一对私钥与公钥
su – grid
ssh-keygen -t rsa

将公钥传递给各个节点
ssh-copy-id -i .ssh/id_rsa.pub 11g-node1
ssh-copy-id -i .ssh/id_rsa.pub 11g-node2
ssh-copy-id -i .ssh/id_rsa.pub 11g-node1-priv
ssh-copy-id -i .ssh/id_rsa.pub 11g-node2-priv

验证
ssh 11g-node1 date
ssh 11g-node2 date
ssh 11g-node1-priv date
ssh 11g-node2-priv date
如果不需要输入口令即可得到“date”命令的反馈,那么SSH等价性就配置成功了。

Shell Log:

8.共享存储
该部分会使用到前面Openfiler制作的iSCSI Lun。

共享存储规划
OCR + Voting Disk:
大小:1GB
磁盘:/dev/sdb1
裸设备:/dev/raw/raw1
ASM Name:+CRS

Data01:
大小:19GB
磁盘:/dev/sdb2
裸设备:/dev/raw/raw2
ASM Name:+DATA01

共享存储的获取(iSCSI Client)
该部分成功执行的前提是:
节点主机安装了软件包:iscsi-initiator-utils.x86_64,并启动了相关服务。
具体如下:

如果上面的确认没问题,那么就可以发现由Openfiler发布的iSCSI Lun了。
下面的LOG以节点一为例,节点二是类似的:

上面的“/dev/sdb”,即:通过Openfiler分发的iSCSI LUN。

共享存储的划分(划分存储的操作只需要在多个节点主机中的一台上操作即可

由于是共享存储,所以在其中一台主机上操作即可,另一台主机应该可以同步状态:
(节点二的“Shell Log”)

至此,共享存储的配置就完成了。

9.Rawdevices服务
Rawdevices服务的相关组件:
服务:rawdevices
文件:/etc/sysconfig/rawdevices

需要注意:
在/etc/sysconfig/rawdevices没有任何内容的时候,rawdevices服务的启动与关闭(“service rawdevices start”与“service rawdevices stop”…等)不会产生任何效用。

Rawdevices服务默认情况下,在系统安装的时候就选择了:

可以看到,“rawdevices”是由软件包:initscripts-8.45.44-3.el5
提供的。

配置Rawdevices
(对/etc/sysconfig/rawdevices的操作要在各个节点间同步)

启动rawdevices服务

为raw配置udev策略
相关命令:start_udev
相关文件:/etc/udev/rules.d/60-raw.rules

Oracle RAC对于RAW设备的权限要求如下:
1. 拥有人:grid
2. 拥有组:asmadmin
3. 权限:0660

Shell Log:

10.环境变量:DISPLAY
启动:Xmanager Passive
DISPLAY_Xmanager_Passive_1
Shell Log:

11.DNS域名解析

至此,为部署Oracle database 11g RAC所要做的操作系统预配置就全部完成了。

三、Oracle 11g RAC,Grid Infrastructure
(该部分描述关于RAC的集群件(GI)的部署的技术细节。)
介质:
Oracle 11g Grid Infrastructure(Zip-3)
介质的准备
本环境中,所有的软件介质会上传服务器的目录“/software”下。
RAC的安装只需要在多个节点中的一个发起即可。
RAC安装过程中会执行自动的推送,将软件分发到其他节点。

上传介质到服务器
Upload_GridInfrastructure_Media
Shell Log:

用grid用户解压
Command is:unzip p13390677_112040_Linux-x86-64_3of7.zip

当前文件系统的空间分布:

Check:剩余空间足够。

调用OUI安装Grid Infrastructure

OUI安装
Grid_Infrastructure_1

Grid_Infrastructure_2

Grid_Infrastructure_3

Grid_Infrastructure_4

Grid_Infrastructure_5

Grid_Infrastructure_6

Grid_Infrastructure_7

Grid_Infrastructure_8

Grid_Infrastructure_9

Grid_Infrastructure_10

Grid_Infrastructure_11

Grid_Infrastructure_12

Grid_Infrastructure_13

Grid_Infrastructure_14

Grid_Infrastructure_15

Grid_Infrastructure_16

Grid_Infrastructure_17

Grid_Infrastructure_18

Grid_Infrastructure_19
根据不同的主机性能,这一步的时间长短不一。

Grid_Infrastructure_20
执行脚本。
先执行/u01/app/oraInventory/orainstRoot.sh,节点一、节点二。
然后执行/u01/app/11.2.0/grid/root.sh,节点一、节点二。
脚本在节点一上执行的情况:

脚本在节点二上的执行情况:

脚本执行完后,“OK”,安装进程继续:
Grid_Infrastructure_21

Grid_Infrastructure_22
(这里的报错可以忽略。)

Grid_Infrastructure_23

Grid_Infrastructure_24
这样,Grid Infrastructure就装完了。

Grid Infrastructure状态

至此,Grid Infrastructure的部分完成。

四、Oracle database 11g:Database Software
上传介质到服务器:
清理空间

上传:
Upload_Database_toServer
Log:

用系统账号oracle解压