1、软硬件准备环境
硬件环境
虚拟机环境:VMware workstations 11
4核8G内存 虚拟机*2
hostname:rac1,rac2
软件环境
操作系统:Centos 6 .5 64位
集群软件GRID:11.2.0.1
Database:Oracle database 11gR2
注意:关闭防火墙、selinux等
1.1.1 IP地址规划
IP设定如下:
#Public IP
10.7.8.11 rac1
10.7.8.12 rac2
#Private IP
192.168.1.123 racpriv1
192.168.1.124 racpriv2
#Virtual IP
10.7.8.123 racvip1
10.7.8.124 racvip2
#Scan IP
10.7.8.200 racscan
127.0.0.1 localhost.localdomain localhost
用 ping检查连通性 除了vip和 sanip
扫盲:何为SCAN(Single Client Access Name)
定义的一个网络名及IP地址,这样所有客户端均能够通过它访问RAC数据库。通过
SCAN,当集群环境发生变化时,就不需要再修改客户端的配置。SCAN同样允许客户端通
过简易连接串的方式,也能够利用到RAC的负载平衡及故障切换特性。
不管是否使用GNS都需要SCAN。如果使用GNS,那么ORACLE会自动创建SCAN。
如果不使用GNS,那就必须在DNS中定义SCAN。
我们先配置DNS,DNS是什么我就不多说了,这里主要的作用在于引入一个新的特性,11g R2后引入SCAN IP的概念,就是在客户端和数据库之间增加一层虚拟网络服务层,即是SCAN IP和SCAP IP Listener。在客户端的tnsnames.ora配置文件中,只需要配置SCAN IP的配置信息即可,客户端通过SCAN IP、SCAN IP Listener来访问数据库。同之前各版本的RAC相比,使用SCAN IP的好处就是,当后台RAC数据库添加、删除节点时,客户端配置信息无需修改。可以通过配置DNS服务器或GNS来配置SCAN,我们这里以DNS为例来进行配置。
2、安装oracle 11g所需要的环境包两台机器都要装
[root@rac1~]# yum -y install compat-libstdc++-33 elfutils-libelf-devel gcc gcc-c++glibc-devel glibc-headers libaio-devel libstdc++-devel sysstat unixODBC unixODBC-devel
3、参数配置
以下操作需在两个节点上进行配置
[root@rac1 ~]# vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 8589934592 (8G内存)
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
注意上述参数中,需要根据实际情况修改kernel.shmmax参数的值,可以直接设置为物
理内存大小。
使内核参数生效
[root@rac1 ~]# sysctl -p
[root@rac1 ~]# vi/etc/security/limits.conf
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 2047
grid hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
[root@rac1 ~]# vi/etc/pam.d/login
session required /lib64/security/pam_limits.so
4、添加用户和组以及oracle、grid用户ssh的对等性 以下操作需要两个节点同样进行
groupadd-g 1000 oinstall
groupadd -g 1300 dba
groupadd -g 1301 oper
groupadd -g 1201 asmdba
groupadd -g 1200 asmadmin
groupadd -g 1202 asmoper
useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper -d /home/grid -s/bin/bash -c "Grid Infrastructure Owner" grid
passwd grid
useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash-c "Oracle Software Owner" oracle
passwd oracle
5、设置互信关系,这里记住oracle和grid用户都要设置互信
su- grid
mkdir ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
以下操作在一个节点上执行即可
cat~/.ssh/id_rsa.pub>>./.ssh/authorized_keys --公钥存在authorized_keys文件中,写到本机
cat ~/.ssh/id_dsa.pub>>./.ssh/authorized_keys
ssh rac2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys --第二个节点的公钥写到本机
ssh rac2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys
两个节点上分别验证(很重要)
ssh rac1 date
ssh rac2 date
ssh rac1-priv date
ssh rac2-priv date
6、创建目录和授权
mkdir-p /u01/app/grid
mkdir -p /u01/app/11.2.0/grid
chown -R grid:oinstall /u01
mkdir -p /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
7、环境变量如下操作也需要在两个节点上同样进行,这里需要注意的是grid用户的SID和oracle用户的SID,是不一样的
[root@rac1~]# su - grid
[grid@rac1 ~]$ less .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
ORACLE_SID=+ASM1; export ORACLE_SID
JAVA_HOME=/usr/local/java;export JAVA_HOME
ORACLE_BASE=/u01/app/grid; export ORACLE_BASE
ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME
ORACLE_PATH=/u01/app/oracle/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm;export ORACLE_TERM
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
export NLS_LANG=american_america.ZHS16GBK
alias sqlplus="rlwrap sqlplus"
umask 022
[grid@rac1~]$ su - oracle
Password:
[oracle@rac1 ~]$ less .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
ORACLE_SID=test1; export ORACLE_SID
ORACLE_UNQNAME=test; export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_PATH=/u01/app/common/oracle/sql; export ORACLE_PATH
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
PATH=${PATH}:/u01/app/common/oracle/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRA