Oracle 11g RAC在OEL5上的部署

1         Oracle 11g RAC在OEL5上的部署

如本章标题所述,以下的安装将在OEL5.4上完成,且并未使用所有11gR2 RAC的新功能,比如GNS与SCAN。操作系统环境使用VirtualBox模拟,每台主机分配了1.5g的物理内存和足够的物理磁盘空间。

1.1            配置操作系统

1.1.1      创建操作系统用户

首先使用操作系统root用户(以下操作系统配置部分,如无特殊说明,均需要root用户来完成)来创建需要的操作系统用户组,命令如下:

groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 504 asmadmin
groupadd -g 506 asmdba
groupadd -g 507 asmoper

接着再创建安装维护RAC所需的操作系统用户:

useradd -u 501 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 502 -g oinstall -G dba,asmdba oracle

在这里需要注意的是:

  • 11gR2开始,Oracle建议多创建一个grid用户,专门用来管理GI软件与ASM;
  • 在所有节点上创建所需的用户与用户组,且所有用户与用户组的ID在所有节点上要保持一致

1.1.2      配置网络

网络配置包括以下几方面:

1.1.2.1        确定集群名字

集群名字需要满足以下要求:

  • 该集群的名字在主机所处的域中是唯一的;
  • 集群名字必须控制在1~15个字符长;
  • 集群名字可以包含的字符与主机名一样:a~z、A~Z、0~9还有“-”。

1.1.2.2        确定public主机名

使用操作系统上hostname命令的输出来作为public主机名,在本次安装中是:racdb1、racdb2。

1.1.2.3        确定public虚拟主机名

Oracle建议虚拟主机名定为:public主机名-vip,也就是说这次安装使用racdb1-vip与racdb2-vip,与虚拟网络相关几点注意事项:

  • VIP(Virtual IP,虚拟IP)与虚拟主机名不能已经在网络上被使用;
  • VIP必须与public IP在同一网段;

1.1.2.4        确定private主机名

通常,private主机名会被定义为:public主机名-pvt,于是本次安装的private主机名将定义为:racdb1-pvt、racdb2-pvt。与私有网络相关的几点注意事项:

  • Private IP不能被不在集群里的其他服务器访问;
  • 私有网络必须使用独立的交换机(本次安装使用了虚拟机,这点就无需考虑了);
  • 私有网络不能是一个负载过高的巨大网络的一部分;
  • 私有网络须是千M网络甚至更佳;
  • Oracle建议为私有网络配置冗余的网卡。

1.1.2.5        编辑/etc/hosts

将下面的内容添入每个节点的/etc/hosts:

192.168.56.8    racdb1
192.168.56.9    racdb2
192.168.56.18   racdb1-vip
192.168.56.19   racdb2-vip
10.10.10.8      racdb1-pvt
10.10.10.9      racdb2-pvt
192.168.56.188  racdb-scan

注意:这里将SCAN IP也添入了/etc/hosts文件,只是为了安装方便,如果想真正使用11gR2 RAC的这个新功能,有两种方法:一是用DNS来实现;二是安装GNS,并使用DHCP来实现,这时候都无需在/etc/hosts中定义SCAN IP。本文这部分只是介绍一个简单的安装过程,且即使固定SCAN IP,集群仍旧可以实现该实现的重要功能,因为SCAN IP只是方便客户端配置的一个小小新功能而已,且使用它也意味着额外的故障点,实际环境中不使用它也未尝不可。

 

1.1.3      配置时间同步

11gR2中Oracle引入了ctssd服务来同步集群内各节点的时间,因此这里也不再使用NTP等方法来进行同步了,因此使用service ntpd stop命令将NTP服务关闭,并使用chkconfig ntpd off配置ntpd不再随机启动,将其配置文件/etc/ntpd.conf改名保存。

1.1.4      配置内核参数

编辑/etc/sysct.conf文件,添入如下内容:

kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 6553600
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

然后使用sysctl -p命令来使这些设置生效,并在各个节点上都执行如上操作。

 

1.1.5      配置Shell limits

编辑/etc/security/limits.conf文件,添入如下内容:

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

编辑/etc/pam.d/login文件,添入如下内容:

 

session    required     pam_limits.so

编辑/etc/profile文件,添入如下内容:

 

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

 

 

在各个节点上都执行如上操作。

1.1.6      创建目录

1.1.6.1        创建Oracle Inventory目录

在各个节点上执行如下命令来创建Oracle Inventory目录,并正确地设置属主以及权限:

mkdir -p /opt/app/oraInventory
chown -R grid:oinstall /opt/app/oraInventory
chmod -R 775 /opt/app/oraInventory

 

1.1.6.2        创建Oracle GI Home目录

在各个节点上执行如下命令来创建Oracle GI Home目录,并设置属主与权限:

mkdir -p /opt/11.2.0/grid
chown -R grid:oinstall /opt/11.2.0/grid
chmod -R 775 /opt/11.2.0/grid

 

1.1.6.3        创建Oracle Base目录

在各个节点上执行如下命令来创建Oracle Base目录,并设置属主与权限:

mkdir -p /opt/app/oracle
mkdir /opt/app/oracle/cfgtoollogs
chown -R oracle:oinstall /opt/app/oracle
chmod -R 775 /opt/app/oracle

1.1.6.4        创建Oracle RDBMS Home目录

在各个节点上执行如下命令来创建Oracle RDBMS Home目录,并设置属主与权限:

mkdir -p /opt/app/oracle/product/11.2.0/db_1
chown -R oracle:oinstall /opt/app/oracle/product/11.2.0/db_1
chmod -R 775 /opt/app/oracle/product/11.2.0/db_1

 

1.1.7      检查系统RPM包

虽然在后续OUI的安装过程中,会自动检查系统的RPM包的安装情况,那时候也有机会再去进行安装,不过本次安装在这里就先行检查并安装完毕。在两个节点都进行检查,检查命令如下:

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \

compat-libstdc++-33 \

elfutils-libelf-devel \

elfutils-libelf-devel-static \

gcc \

gcc-c++ \

glibc-devel \

glibc-headers \

kernel-headers \

libacl-devel \

libaio-devel \

libgomp \

libstdc++-devel \

sysstat \

unixODBC \

unixODBC-devel

 

使用rpm -ivh libaio-devel-0.3.106-3.2.i386.rpm(在RPM包所在的目录执行rpm命令)这样的命令就可以安装缺失的RPM包,如果有依赖关系,处理之。

操作系统的配置至此完成,可以看到与以前版本的RAC安装一个很大的区别:没有再强制配置用户等效性,在后续的安装过程中可自动配置。

1.1.8      配置环境变量

为了方便安装以及后续的管理和维护工作,在grid用户的初始化文件.bash_profile中添入如下内容,并使其生效:

export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=/opt/11.2.0/grid
PATH=$ORACLE_HOME/bin:$PATH

在oracle用户的初始化文件中填入如下内容,并使其生效:

 

export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH

 

1.2            配置共享存储

共享存储的配置可以说是RAC安装过程中最重要的一个步骤,它的配置成功与否,直接关乎着RAC安装的成败。对于RAC环境中的共享磁盘,需要满足如下要求:

  • 同一个ASM Diskgroup中的磁盘设备应该有同样的尺寸和性能;
  • ASM Diskgroup中的磁盘设备不能包含多于一个的分区;
  • ASM Diskgroup中的磁盘设备不能是LV(Logic volume,逻辑卷);
  • 安装用户需要在这些ASM备选磁盘上拥有写权限。

1.2.1      创建并分配共享磁盘

因为使用了VirtualBox,因此创建共享磁盘的步骤相对简单,且本文并不是VirtualBox的使用指南,因此只是简单地提下步骤:

  • 关闭两台虚拟机racdb1和racdb2;
  • 在racdb1的存储设备中添加scsi控制器,并在之下创建一个虚拟硬盘,注意必须选择固定分配(因为动态分配的虚拟硬盘无法被共享);
  • 在VirtualBox主界面的管理菜单下选择“虚拟介质管理”,选择刚刚创建的硬盘,修改为“可共享”;
  • 在racdb2的存储设备中添加共享磁盘;
  • 可以勾选使用主机I/O缓存来提升性能;
  • 启动两台虚拟主机。

为本次安装划分共享磁盘设备以及他们计划用途如下表所示:

Block Device ASM Disk Name Size Comments
/dev/sdb OCR_VOTE01 1GB ASM Diskgroup for OCR and Voting Disks
/dev/sdc OCR_VOTE02 1GB ASM Diskgroup for OCR and Voting Disks
/dev/sdd OCR_VOTE03 1GB ASM Diskgroup for OCR and Voting Disks
/dev/sde ASM_DATA01 4GB ASM Data Diskgroup
/dev/sdf ASM_DATA02 4GB ASM Data Diskgroup
/dev/sdg ASM_RECOVERY01 4GB ASM Flash Recovery Area Diskgroup
/dev/sdh ASM_RECOVERY02 4GB ASM Flash Recovery Area Diskgroup

*在划分这些共享磁盘的时候发现:当挂载到系统的磁盘比较多的时候,经常发生最后一个磁盘不能再被系统识别的情况,不知道是什么原因造成?也许是VirtualBox的BUG?

1.2.2      分区共享磁盘

在racdb1上,使用fdisk命令来对上面的各个LUN进行分区,注意空出1M左右的offset进行分区,具体操作如下:

# fdisk /dev/sde

Device contains neither a valid DOS partition table, nor Sun, SGI or SF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): u
Changing display/entry units to sectors
Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (63-8388607, default 63): 2048
Last sector or +size or +sizeM or +sizeK (2048-8388607, default 8388607):
Using default value 8388607
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

 

 

在racdb1上将所有磁盘分区后,在racdb2上执行partprobe命令来同步分区信息。

1.2.3      安装并配置ASMLib

ASMLib为ASM使用的存储提供了永久的路径和权限,其实这个还可以通过udev来实现,但本次安装还是使用了ASMLib。

1.2.3.1        安装ASMLib

http://www.oracle.com/technetwork/topics/linux/asmlib/index-101839.html可以下载到oracleasm-support、oracleasmlib和对应内核版本的oracleasm RPM包,其中前两者是所有内核公用一个统一的版本,注意最后面那个包是要与内核版本严格一致的,本次安装使用的是:oracleasm-2.6.18-164.el5-2.0.5-1.el5.i686.rpm。

1.2.3.2        配置ASMLib

接下来就可以对ASMLib进行配置:

# /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 []: 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]:

Writing Oracle ASM library driver configuration: done

Initializing the Oracle ASMLib driver: [  OK  ]

Scanning the system for Oracle ASMLib disks: [  OK  ]

 

在所有的节点上进行ASMLib的安装与配置,也就是前面的两个步骤。

1.2.4      创建备选ASM磁盘

仍旧还是使用配置ASMLib时候的脚本来创建ASM磁盘:

/etc/init.d/oracleasm createdisk OCR_VOTE01 /dev/sdb1
/etc/init.d/oracleasm createdisk OCR_VOTE02 /dev/sdc1
/etc/init.d/oracleasm createdisk OCR_VOTE03 /dev/sdd1
/etc/init.d/oracleasm createdisk ASM_DATA01 /dev/sde1
/etc/init.d/oracleasm createdisk ASM_DATA02 /dev/sdf1
/etc/init.d/oracleasm createdisk ASM_RECOVERY01 /dev/sdg1
/etc/init.d/oracleasm createdisk ASM_RECOVERY02 /dev/sdh1

 

只需要在一个节点(本次安装在racdb1上)执行上述命令,在另外的其他节点上执行如下命令即可:

/etc/init.d/oracleasm scandisks

补充两个可能用到的命令,实际上直接输入/etc/init.d/oracleasm就可以得到一个简单的使用列表:

  • /etc/init.d/oracleasm listdisks,列出备选的ASM磁盘;
  • /etc/init.d/oracleasm deletedisk OCR_VOTE01,删除名为OCR_VOTE01的ASM磁盘。

至此,准备工作已经完成,与以前版本的一个重大差异:OCR与Voting Disk现在可以放置于ASM上了。

1.3            安装Grid Infrastructure

这部分的安装包含了大量的截图,详见附件安装Grid Infrastructure中。

1.4            安装Oracle RDBMS软件

这部分的安装包含了大量的截图,详见附件安装Oracle RDBMS软件中。

1.5            使用asmca创建ASM磁盘组

这部分的安装包含了大量的截图,详见附件使用asmca创建ASM磁盘组中。

1.6            使用dbca创建RAC数据库

这部分的安装包含了大量的截图,详见附件使用dbca创建RAC数据库中。

THE END