1.

  Oracle RAC,全称real application clusters,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。Oracle RAC主要支持Oracle9i、10g、11g版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。本文档主要描述Oracle 11gR2 RAC上中标麒麟安全操作系统5U6版本上的安装以及配置。

2. 准备工作

硬件方面:

   至少两台服务器,服务器至少有两块网卡,其中一块网卡用于对外提供服务,别一块网卡用于oracle rac节点之间通信。

   一台存储,oracle rac需要使用共享磁盘,仲裁磁盘等。 存储可以是专业的光纤存储设备,也可以是NAS存储,如iscsi,nfs等。

软件方面:

中标麒麟安全操作系统光盘,用于在服务器上安装操作系统,以及安装好系统后,使用光盘安装oracle 11gR2 依赖的包。

Oracle 11gR2 安装软件包:

Oracle 11gR2 RAC  安装配置-LMLPHP

其中linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip是oracle 11gR2数据库安装包,linux.x64_11gR2_grid.zip是oracle网格基础结构,是oracle rac中非常重要的组件。

  以上软件包从oracle官网下载

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html

检测操作系统依赖包:

在两台服务器上分别执行

#rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common

gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21

查看上述软件包是否都安装,如果没有安装的,把操作系统安装光盘挂载到服务器上,安装缺失的包。

安装操作系统时,两台服务器的主机名分别为rac1和rac2

操作系统设置

设置操作系统IP地址和修改/etc/hosts文件

这样,在两台主机之间可以直接通过主机名进行访问

[root@rac1 ~]# vi /etc/hosts

#Public  对外提供服务的IP

192.168.1.171   rac1   rac1.localdomain

192.168.1.173   rac2   rac2.localdomain

#Private 私有IP地址,用于RAC节点间通讯

172.168.1.191   rac1-priv  rac1-priv.localdomain

172.168.1.192   rac2-priv  rac2-priv.localdomain

#Virtual  虚拟IP地址

192.168.1.172   rac1-vip  rac1-vip.localdomain

192.168.1.174   rac2-vip  rac2-vip.localdomain

#SCAN

192.168.1.176   rac-cluster rac-cluster-scan

创建oracle用户和grid用户

在两台服务器上分别执行下列操作

[root@rac1 ~]# groupadd -g 5000 asmadmin

[root@rac1 ~]# groupadd -g 5001 asmdba

[root@rac1 ~]# groupadd -g 5002 asmoper

[root@rac1 ~]# groupadd -g 6000 oinstall

[root@rac1 ~]# groupadd -g 6001 dba

[root@rac1 ~]# groupadd -g 6002 oper

[root@rac1 ~]# useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash grid

#创建grid用户,这个用户属于oinstall组,附加组有asmadmin,asmdba,asmoper

[root@rac1 ~]# useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash oracle

#创建oracle用户,这个用户属于oinstall组,附加组有asmadmin,asmdba,asmoper

[root@rac1 ~]# mkdir -p /oracle/app/grid

[root@rac1 ~]# mkdir -p /oracle/app/11.2.0/grid

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

[root@rac1 ~]# passwd oracle 

[root@rac1 ~]# passwd grid 

[root@rac1 ~]# chown -R grid:oinstall /oracle/app/grid

[root@rac1 ~]# chmod -R 775 /oracle/app/grid

[root@rac1 ~]# chown -R grid:oinstall /oracle/app/11.2.0/grid

[root@rac1 ~]# chmod -R 775 /oracle/app/11.2.0/grid

[root@rac1 ~]# chown -R oracle:oinstall /oracle/app/oracle

[root@rac1 ~]# chmod -R 775 /oracle/app/oracle

设置oracle用户和grid用户的环境变量

设置oracle用户环境变量,在两个节点上执行下列操作,注意两节点的ORACLE_SID是不同的

[oracle@rac1 ~]# vim .bash_profile

# Oracle Settings

TMP=/tmp; export TMP

TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=rac1.localdomain; export ORACLE_HOSTNAME

ORACLE_UNQNAME=RAC; export ORACLE_UNQNAME

ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE

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

ORACLE_SID=RAC1; export ORACLE_SID  #注意这里,在主机rac1上,它的实例名为RAC1

而在rac2主机,它的实例名RAC2

ORACLE_TERM=xterm; export ORACLE_TERM

BASE_PATH=/usr/sbin:$PATH; export BASE_PATH

PATH=$ORACLE_HOME/bin:$BASE_PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH

CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

export CLASSPATH 

设置grid用户的环境变量,两个节点都要执行下列操作,但ORACLE_SID是不同的

[grid@rac1 ~]# vim .bash_profile

#Grid Settings

CRS_HOME=/oracle/app/11.2.0/grid

ORACLE_BASE=/oracle/app/grid ORACLE_SID=+ASM1  #注意在rac2中,将ORACLE_SID=+ASM2

PATH=$CRS_HOME/bin:$PATH:$Home/bin

export PATH CRS_HOME ORACLE_BASE ORACLE_SID

调整操作系统内核参数

   参数的大小,请根据服务器硬件配置,应用程序访问具体情况进行调整。以下参数仅做参考,分别在两台机器执行。

编辑/etc/sysctl.conf文件

[root@rac1 ~]# vim /etc/sysctl.conf

fs.file-max = 6815744

kernel.msgmni = 2878

kernel.msgmax = 8192

kernel.msgmnb = 65536

kernel.sem = 250 32000 100 142

kernel.shmmni = 4096

物理内存除以pagesize

kernel.shmall = 1073741824

物理内存的一半

kernel.shmmax = 4294967295

kernel.sysrq = 1

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 3145728

net.ipv4.ip_local_port_range = 9000 65500

vm.min_free_kbytes = 51200

编辑/etc/security/limits.conf

[root@rac1 ~]# vi /etc/security/limits.conf

#oracle数据库用户使用资源限制

oracle   soft   nofile    131072

oracle   hard   nofile    131072

oracle   soft   nproc    131072

oracle   hard   nproc    131072

oracle   soft   core    unlimited

oracle   hard   core    unlimited

oracle   soft   memlock    3500000

oracle   hard   memlock    3500000

#grid数据库用户使用资源限制

grid   soft   nofile    131072

grid   hard   nofile    131072

grid   soft   nproc    131072

grid   hard   nproc    131072

grid   soft   core    unlimited

grid   hard   core    unlimited

grid   soft   memlock    3500000

grid   hard   memlock    3500000

设置ntp服务器,确保两个节点的时间一致

登录节点rac1,备份系统原来的ntp.conf配置文件

Oracle 11gR2 RAC  安装配置-LMLPHP

编辑/etc/ntp.conf配置文件

Oracle 11gR2 RAC  安装配置-LMLPHP

再登录节点rac2,

编辑/etc/ntp.conf配置文件

Oracle 11gR2 RAC  安装配置-LMLPHP

配置存储

设置一个iscsi或是光纤存储磁盘,确保这个磁盘可以被rac1和rac2两个节点都发现。

在rac1上执行fdisk命令,对存储磁盘进行分区,注意只分区不进行格式化的操作。

至少划分三个分区,分区只需要在一台机器上操作即可

Oracle 11gR2 RAC  安装配置-LMLPHP

由于oracle rac 不支持在2.6.32上的内核直接使用ASM,因此,在这里,将磁盘设置为裸设备。

编辑/etc/sysconfig/rawdevices,加入如下内容.两个节点上都做相同的操作

Oracle 11gR2 RAC  安装配置-LMLPHP

在中标麒麟安全操作系统5U8版本上,没有raw设备的启动脚本,因此需要创建一个raw设备的启动脚本,

Oracle 11gR2 RAC  安装配置-LMLPHP

[root@host02 ~]# vim  /etc/init.d/rawdevices

#!/bin/bash

#

# rawdevices       This shell script assignes rawdevices to block devices

#

# chkconfig: 345 56 44

# description: This scripts assignes raw devices to block devices \

#              (such as hard drive partitions). This is for the use \

#              of applications such as Oracle. You can set up the \

#              raw device to block device mapping by editing \

#              the file /etc/sysconfig/rawdevices.

# config: /etc/sysconfig/rawdevices

[ -f /bin/raw ] || exit 0

[ -f /etc/sysconfig/rawdevices ] || exit 0

# Exit if the file just has the default comments.

LC_ALL=C

/bin/egrep -q -v "^ *#" /etc/sysconfig/rawdevices 2>/dev/null || exit 0

. /etc/init.d/functions

function assign_raw()

{

   LC_ALL=C egrep -v '^ *#' /etc/sysconfig/rawdevices |

   while read RAW BLOCK; do

     if [ -n "$RAW" -a -n "$BLOCK" ]; then

         rawdirname=${RAW%/*}

         if [ "$rawdirname" = "/dev" -a -d /dev/raw ]; then

           echo $"  Please correct your /etc/sysconfig/rawdevices:"

           echo $"     rawdevices are now located in the directory /dev/raw/ "

           echo $"  If the command 'raw' still refers to /dev/raw as a file."

           echo $"   you'll have to upgrade your util-linux package"

           exit 0

         fi

         if [ "$rawdirname" = "/dev/raw" -a -f /dev/raw ]; then

           echo $"  Please correct your /etc/sysconfig/rawdevices:"

           echo $"     rawdevices are now located in the directory /dev/raw/ "

           echo $"  If the command 'raw' still refers to /dev/raw as a file."

           echo $"   you'll have to upgrade your util-linux package"

           exit 0

         fi

       echo "           $RAW  -->   $BLOCK";

       raw $RAW $BLOCK

     fi

   done

}

# See how we were called.

case "$1" in

  start)

        # Assign devices

        echo $"Assigning devices: "

        assign_raw

#添加以下两行(默认不存在),即默认情况下生成的裸设备为root所有,

#所以必须修改属主,否则oracle用户无法使用裸设备

        sleep 5

        #chown -R oracle:oinstall /dev/raw/

        chown -R oracle /dev/raw/

        echo $"done"

        ;;

  stop)

        # No action to be taken here

        ;;

  status)

        ID=`id -u`

        if [ $ID -eq 0 ]; then

          raw -qa

        else

          echo $"You need to be root to use this command ! "

        fi

        ;;

  restart|reload)

        $0 start

        ;;

  *)

        echo $"Usage: $0 {start|stop|status|restart}"

        exit 1

esac

exit 0

把rawdevices服务加入系统启动项,确保每次开机都自动启动rawdevices服务

#chkconfig rawdevices on

修改raw设备的udev规则

Oracle 11gR2 RAC  安装配置-LMLPHP

把两个节点的rawdevices服务启动,查看两节点是否都已经识别了raw设备。

Oracle 11gR2 RAC  安装配置-LMLPHP

设置libcap.so.1的软链接:

cd /lib64  && ln -s libcap.so.2.16  libpcap.so.1

3. 安装oracle 11g grid

    将oracle 11g grid压缩包解压到/tmp目录,解决完,需要在其安装文件中的all.jdk中加入中文字体,目录是为了解决安装过程乱码的问题

桌面上新建一个文件夹,fallback,将/usr/share/fonts/zh_CN/TrueType/下面的

zysong.ttf 复制到 fallback 目录里.进入 oracle 的安装源目录,

database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/,右击 all.jar,  用归档管理器打开,进入 jdk/jre/lib/fonts/,桌面上的 fallback 文件夹拖到进去,最终目录为jdk/jre/lib/fonts/fallback/zysong.ttf

Oracle 11gR2 RAC  安装配置-LMLPHP

加好中文字体,all.jar包如下

Oracle 11gR2 RAC  安装配置-LMLPHP

安装cvuqdisk-1.0.7-1.rpm

Oracle 11gR2 RAC  安装配置-LMLPHP

在root用户下,执行xhost + ,重新开启一个终端,执行su - grid,运行grid的安装文件,

[grid@host01 grid]$ ./runInstaller

Oracle 11gR2 RAC  安装配置-LMLPHP

点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

选择“典型安装”,点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

填写SCAN的名称,添加两个节点的主机名与虚拟IP地址,配置SSH免密码登录,点击“下一步”,

Oracle 11gR2 RAC  安装配置-LMLPHP

安装程序正在验证两节点是否准备好,验证完毕,点击“下一步”,

Oracle 11gR2 RAC  安装配置-LMLPHP

集群注册表存储类型,选择“自动存储管理”,设置SYSASM用户口令,点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

设置磁盘组名,添加磁盘,点击“下一步”,

Oracle 11gR2 RAC  安装配置-LMLPHP

   选中要添加的磁盘,点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

    正在检查系统安装配置环境,请等待

Oracle 11gR2 RAC  安装配置-LMLPHP

      开始安装

Oracle 11gR2 RAC  安装配置-LMLPHP

在第二个节点上执行第一条脚本,两个节点都执行第二条脚本

4.   Oracle 11gR2 数据库的安装

把oracle 11gR2 两个安装文件解压到/tmp目录,在root用户下打开终端,执行xhost +命令,再su - oracle用户,进行oracle 11gR2 安装文档的解压目录,运行./runInstaller

Oracle 11gR2 RAC  安装配置-LMLPHP

              点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

    点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

       选择“创建和配置数据库”,点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

  选择“服务器类”,点击“下一步”

Oracle 11gR2 RAC  安装配置-LMLPHP

       选择“Real Application  Clusters数据库安装”,点击“下一步”,接下来就不截图了,点击下一步继续安装。

05-07 15:11