Oracle RAC,全称real application clusters,译为“实时应用集群”, 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。Oracle RAC主要支持Oracle9i、10g、11g版本,能够支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,而且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户下降了应用成本。当应用规模须要扩充时,用户能够按需扩展系统,以保证系统的性能。本文档主要描述Oracle 11gR2 RAC上中标麒麟安全操做系统5U6版本上的安装以及配置。html
硬件方面:linux
至少两台服务器,服务器至少有两块网卡,其中一块网卡用于对外提供服务,别一块网卡用于oracle rac节点之间通讯。 c++
一台存储,oracle rac须要使用共享磁盘,仲裁磁盘等。 存储能够是专业的光纤存储设备,也能够是NAS存储,如iscsi,nfs等。shell
软件方面:数据库
中标麒麟安全操做系统光盘,用于在服务器上安装操做系统,以及安装好系统后,使用光盘安装oracle 11gR2 依赖的包。vim
Oracle 11gR2 安装软件包:安全
其中linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip是oracle 11gR2数据库安装包,linux.x64_11gR2_grid.zip是oracle网格基础结构,是oracle rac中很是重要的组件。bash
以上软件包从oracle官网下载服务器
检测操做系统依赖包:
在两台服务器上分别执行
#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配置文件
编辑/etc/ntp.conf配置文件
再登陆节点rac2,
编辑/etc/ntp.conf配置文件
配置存储
设置一个iscsi或是光纤存储磁盘,确保这个磁盘能够被rac1和rac2两个节点都发现。
在rac1上执行fdisk命令,对存储磁盘进行分区,注意只分区不进行格式化的操做。
至少划分三个分区,分区只须要在一台机器上操做便可
因为oracle rac 不支持在2.6.32上的内核直接使用ASM,所以,在这里,将磁盘设置为裸设备。
编辑/etc/sysconfig/rawdevices,加入以下内容.两个节点上都作相同的操做
在中标麒麟安全操做系统5U8版本上,没有raw设备的启动脚本,所以须要建立一个raw设备的启动脚本,
[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规则
把两个节点的rawdevices服务启动,查看两节点是否都已经识别了raw设备。
设置libcap.so.1的软连接:
cd /lib64 && ln -s libcap.so.2.16 libpcap.so.1
将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
加好中文字体,all.jar包以下
安装cvuqdisk-1.0.7-1.rpm
在root用户下,执行xhost + ,从新开启一个终端,执行su - grid,运行grid的安装文件,
[grid@host01 grid]$ ./runInstaller
点击“下一步”
选择“典型安装”,点击“下一步”
填写SCAN的名称,添加两个节点的主机名与虚拟IP地址,配置SSH免密码登陆,点击“下一步”,
安装程序正在验证两节点是否准备好,验证完毕,点击“下一步”,
集群注册表存储类型,选择“自动存储管理”,设置SYSASM用户口令,点击“下一步”
设置磁盘组名,添加磁盘,点击“下一步”,
选中要添加的磁盘,点击“下一步”
正在检查系统安装配置环境,请等待
开始安装
在第二个节点上执行第一条脚本,两个节点都执行第二条脚本
把oracle 11gR2 两个安装文件解压到/tmp目录,在root用户下打开终端,执行xhost +命令,再su - oracle用户,进行oracle 11gR2 安装文档的解压目录,运行./runInstaller
点击“下一步”
点击“下一步”
选择“建立和配置数据库”,点击“下一步”
选择“服务器类”,点击“下一步”
选择“Real Application Clusters数据库安装”,点击“下一步”,接下来就不截图了,点击下一步继续安装。