一、安装环境
1、实验环境
虚拟机:VMware Workstation 8.0.3_64bit
ORACLE:Oracle Database11g11.2.0.3.0-64bit
操作系统:Red HatEnterprise Linux 6.5
2、节点配置
描述 | 节点一 | 节点二 | 节点三 | ISCSI存储 |
主机名称 | note1 | note2 | note3 | iscsi-asm |
Public IP | 172.16.1.7(vlan3) | 172.16.1.8(vlan3) | 172.16.1.9(vlan3) | 172.16.1.20(vlan3) |
Private IP | 192.168.1.11(vlan5) | 192.168.1.12(vlan5) | 192.168.1.13(vlan5) | |
Virtual IP | 172.16.1.17 | 172.16.1.18 | 172.16.1.19 | |
Scan IP | 172.16.1.10、172.16.1.11、172.16.1.12 | |||
实例名 | racdb1 | racdb2 | racdb3 | |
/etc/hosts | 127.0.0.1 localhost.localdomain localhost 172.16.1.12 cluster-scan | 172.16.1.20 iscis-asm |
以上环境配置过程略,可通过VM的Clone功能克隆多台机器之后变更IP和主机名即可。
二、系统基本配置
1、搭建存储服务器
A、添加磁盘创建软件RAID5
创建软件RAID5,共3块磁盘,无热备,具体请查阅相关资料
[root@iscsi-asm ~] # mdadm –Cv /dev/md0 –l5 –n3/dev/sd[bcd]1
B、配置ISCSI磁盘
安装服务器端使用的scis-target-utils包,安装前先确认以下安装包已安装:kernel-source、kernel、gcc、perl
[root@iscsi-asm~] # rpm –ivh scsi-target-utils*.rpm
// RedHat 6在光盘Packages目录下
// RedHat 5在光盘ClusterStorage目录下
配置服務端/etc/tgt/targets.conf文件
[root@iscsi-asm ~] # cat >> /etc/tgt/targets.conf << EOF
> <targetiqn.2016-04.com.iscsi-asm.raid5:target1>
> backing-store /dev/md0
> </target>
> EOF
启动ISCSI服务
[root@iscsi-asm ~] # service tgtd restart //重启iscsi服务
[root@iscsi-asm ~] # chkconfig --level 2345 tgtd on //设置开机自启动
[root@iscsi-asm ~] # chkconfig --list tgtd //查看自启动项
[root@iscsi-asm ~] # tgt-admin --show target1 //查看tgtd是否配置成功
2、挂载ISCSI磁盘
A、节点一note1 上:
[root@note1 ~] # rpm –ivh iscsi-initiator-utils*.rpm
[root@note1 ~] # service iscsid restart //重启iscsi服务
[root@note1 ~] # chkconfig --level 2345 iscsid on //设置开机自启动
[root@note1 ~] # chkconfig --list iscsid //查看自启动项
[root@note1 ~] # iscsiadm –m node –p 172.16.1.20 –l //登录iscsi存储
B、节点二note2 上:
[root@note2 ~] # rpm –ivh iscsi-initiator-utils*.rpm
[root@note2 ~] # service iscsid restart //重启iscsi服务
[root@note2 ~] # chkconfig --level 2345 iscsid on //设置开机自启动
[root@note2 ~] # chkconfig --list iscsid //查看自启动项
[root@note2 ~] # iscsiadm –m node –p 172.16.1.20 –l //登录iscsi存储
C、节点三note3 上:
[root@note3 ~] # rpm –ivh iscsi-initiator-utils*.rpm
[root@note3 ~] # service iscsid restart //重启iscsi服务
[root@note3 ~] # chkconfig --level 2345 iscsid on //设置开机自启动
[root@note3 ~] # chkconfig --list iscsid //查看自启动项
[root@note3 ~] # iscsiadm –m node –p 172.16.1.20 –l //登录iscsi存储
D、划分ISCSI磁盘
[root@note1 ~] # fdisk /dev/sdb //挂载iscsi存储后的磁盘,请勿格式化
2、UDEV配置ASM
A、ASM磁盘的规划
ASM磁盘组 | 磁盘组大小 | ASM冗余 | ASM磁盘 | ISCSI磁盘路径 | 存储存放规则 |
+CRS | 20G | EXTERN | /dev/asm-crs1 | /dev/sdb1 | OCR、表决磁盘 |
+DATA | 60G | EXTERN | /dev/asm-db1 | /dev/sdb2 | 数据文件 |
+ARCH | 40G | EXTERN | /dev/asm-db2 | /dev/sdb3 | 归档文件 |
若表决磁盘所在磁盘组属性为EXTERNAL,为一块,若为NORMAL,则需要三块,若为HIGH,则需要五块,需要为奇数,这是为了发生脑裂时,用于表决。
B、配置UDEV
[root@note1 ~] # scsi_id –g –u –d /dev/sdb //获取磁盘UUID
1IET_00010001
[root@note1 ~] #vim /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL==”sdb1“, BUS==”scsi”,PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent”,RESULT==” 1IET_00010001”,NAME=”asm-crs″, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660″
KERNEL==”sdb2“, BUS==”scsi”, PROGRAM==”/sbin/scsi_id-g -u -d /dev/$parent”,RESULT==” 1IET_00010001”, NAME=”asm-db1”, OWNER=”grid”,GROUP=”asmadmin”, MODE=”0660″
KERNEL==”sd?1″, BUS==”scsi”,PROGRAM==”/sbin/scsi_id -g -u -d /dev/$parent”,RESULT==” 1IET_00010001”,NAME=”asm-db2″, OWNER=”grid”, GROUP=”asmadmin”, MODE=”0660″
将UDEV配置文件传到其他节点
[root@note1 ~] # rsync –r /etc/udev/rules.d/99-oracle-asmdevices.rules 172.16.1.8: /etc/udev/rules.d/
[root@note1 ~] # rsync –r /etc/udev/rules.d/99-oracle-asmdevices.rules 172.16.1.9: /etc/udev/rules.d/
C、启动UDEV
[root@note1 ~] #start_udev
[root@note2 ~] #start_udev
[root@note3 ~] #start_udev
三、配置ORACLE軟件安裝环境
1、安裝oracle RAC所需的linux軟件包
[root@note1~] # yum –y install binutils* compat-libstdc++* elfutils-libelf* elfutils-libelf-devel* compat-libcap1 * elfutils-libelf-devel-static* gcc* gcc-c++* glibc* glibc-common* glibc-devel* glibc-headers* ksh* libaio* libaio-devel* libgcc*libgomp* libstdc++* libstdc++-devel* make* sysstat* unixODBC * unixODBC-devel*
节点二和节点三上执行相同的命令,将所需的包安装上。
2、配置集群时间同步服务
这里使用集群时间同步服务(CTSS),需要卸载网络时间协议(NTP)
[root@note1 ~] #service ntpd stop
[root@note1 ~] #chkconfig –level 2345 ntpd off
[root@note1 ~] #rm –rf /etc/ntp.conf
节点二和节点三上执行相同的命令,卸载NTP
在集群安装完后,要确认ctssd是否处于活动状态
[grid@note1 ~] #crsctl check ctss
1、 配置内核参数
三个节点执行如下脚本:
#!/bin/bash
prepareSystem(){
# Set SElinux to disabled mode regardless of its initial value
sed -i -e's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
# stop iptables
/etc/init.d/iptables stop
chkconfig --level 0123456 iptables off
chkconfig --level 0123456 ip6tablesoff
}
Configure1(){
cat >> /etc/sysctl.conf<<EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
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
EOF
}
Configure2(){
cat >>/etc/security/limits.conf <<EOF
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
EOF
}
Configure3(){
cat >> /etc/pam.d/login<<EOF
session required pam_limits.so
EOF
}
prepareSystem
Configure1 && sysctl -p
Configure2
Configure3
[root@note1 ~] # sh configure.sh
[root@note2 ~] # sh configure.sh
[root@note3 ~] # sh configure.sh
2、 创建RAC相关权限组,用户和目录
A、 创建相关组(三个节点上执行)
[root@note1 ~] # groupadd oinstall
[root@note1 ~] # groupadd asmadmin
[root@note1 ~] # groupadd asmdba
[root@note1 ~] # groupadd asmoper
[root@note1 ~] # groupadd dba
[root@note1 ~] # groupadd oper
B、 创建grid用户:
节点一ORACLE_SID=+ASM1
[root@note1 ~] # useradd -g oinstall -G asmadmin,asmdba,asmoper grid
[root@note1 ~] # passwd grid
节点二ORACLE_SID=+ASM2
[root@note2 ~] # useradd -g oinstall -G asmadmin,asmdba,asmoper grid
[root@note2 ~] # passwd grid
节点三ORACLE_SID=+ASM3
[root@note3 ~] # useradd -g oinstall -G asmadmin,asmdba,asmoper grid
[root@note3 ~] # passwd grid
编辑grid用户的环境配置文件(~/.bash_profile),加入如下内容
export PS1="`/bin/hostname -s`-> "
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1 #节点二为+ASM2,节点三为+ASM3
export ORACLE_BASE=/u/app/grid
export ORACLE_HOME=/u/app/11.2.0/grid
export ORACLE_TERM=xterm
export NLS_DATE_FORMAT='yyyy/mm/dd hh34:mi:ss'
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
C、 创建ORACLE用户
节点一:ORACLE_SID=racdb1
[root@note1 ~] # usermodd -g oinstall -G dba,oper,asmdba oracle
[root@note1 ~] # passwd oracle
节点二:ORACLE_SID=racdb2
[root@note2 ~] # usermodd -g oinstall -G dba,oper,asmdba oracle
[root@note2 ~] # passwd oracle
节点三:ORACLE_SID=racdb3
[root@note3 ~] # usermodd –g oinstall -G dba,oper,asmdba oracle
[root@note3 ~] # passwd oracle
编辑oracle用户的环境配置文件(~/.bash_profile),加入如下内容
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=racdb1 #节点二为racdb2,节点三为racdb3
export ORACLE_BASE=/u/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=racdb
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/jdbc/lib
exportCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT='yyyy/mm/dd hh34:mi:ss'
umask 022
5、创建软件安装目录
在三个节点上执行以下命令:
[root@note1 ~] # mkdir -p/u/app/grid
[root@note1 ~] # mkdir -p/u/app/11.2.0/grid
[root@note1 ~] # chown -Rgrid:oinstall /u/app
[root@note1 ~] # mkdir -p/u/app/oracle
[root@note1 ~] # chown oracle:oinstall/u/app/oracle
[root@note1 ~] # chmod -R775 /u
四、安装RAC集群软件
1、 安装cvuqdisk包
Cvuqdisk rpm包在grid的rpm目录中
三个节点上执行:
[root@note1 ~] # CVUQDISK_GRP=oinstall;export CVUQDISK_GRP
[root@note1 ~] # rpm -ivh cvuqdisk-1.0.9-1.rpm
[root@note2 ~] # CVUQDISK_GRP=oinstall;export CVUQDISK_GRP
[root@note2 ~] # rpm -ivh cvuqdisk-1.0.9-1.rpm
[root@note3 ~] # CVUQDISK_GRP=oinstall;export CVUQDISK_GRP
[root@note3 ~] # rpm -ivh cvuqdisk-1.0.9-1.rpm
2、 安装Grid软件
许多文档都在安装之前配置了各节点之间oracle和grid用户的SSH信任关系,这里使用软件配置选项进行配置。其实就是使用了grid软件包中sshsetup目录下的sshUserSetup.sh脚本。
[root@note1 ~]#export display=0.0
[root@note1 ~]#xhost +
[root@note1 ~]#su - grid
[grid@note1 grid]#./runInstaller
SCAN Name要/etc/hosts与里面scanname一样,否则报[INS-40718]错误
添加其它两个节点,设置SSH,输入密码之后点击设置
因未配置DNS,此错误可以忽略。忽略报错会弹窗,问是否忽略错误,确认就好。
第一个脚本,在三个节点上依次执行:
[root@note1~]# sh /u/app/oraInventory/orainstRoot.sh
[root@note2~]# sh /u/app/oraInventory/orainstRoot.sh
[root@note3~]# sh /u/app/oraInventory/orainstRoot.sh
第二個腳本,在三个节点上依次執行
[root@note1~]# sh /u/app/11.2.0/grid/root.sh //执行要一定的时间,
[root@note2~]# sh /u/app/11.2.0/grid/root.sh
[root@note3~]# sh /u/app/11.2.0/grid/root.sh
执行以上的脚本,一定要按照顺序来,先在各节点上执行第一脚本,之后再执行第二个,一个节点一个节点执行完之后,再到下个一个节点执行,这个很重要。
接下来还会包一个错误,如下图所示,造成原因是因为没有配置DNS,在这里可以忽略。
在节点一grid用户上:执行crs_stat –t,查看集群服务的开启情况,其中以gsd结尾的为兼容9i的服务,可以不启用。
1、 安装oracle软件
为节省篇幅,我只截了部分较重要的图
配置ORACLE用户的SSH信任关系
ORACLE软件的安装目录
造成原因是因为没有配置DNS,在这里可以忽略
执行脚本:
[root@note1~]# sh/u/app/oracle/product/11.2.0/db_1/root.sh
[root@note2~]# sh /u/app/oracle/product/11.2.0/db_1/root.sh
[root@note3~]# sh /u/app/oracle/product/11.2.0/db_1/root.sh
五、创建ASM磁盘组
[root@note1~]#xhost +
[root@note1~]#su – grid
[grid@note1 ~]#asmca
六、创建数据库
[root@note1~]#xhost +
[root@note1~]#su – oracle
[oracle@note1~]#dbca
至此,基本设置已经完成,接下来就是下一步,下一步的事,相关的参数自行调整。