一.安装环境规划:

1. 实验环境:

a) 虚拟机:vmware server 2.0

b) 操作系统:RHEL4 2.6.9-55

c) ORACLE:10G R2

d) 主机名:rac1与rac2

2. IP规划:

a) publicIP(nat):
rac1:1.1.1.111
rac2:1.1.1.222

b) privIP(hostonly):
rac1-priv:2.2.2.111
rac2-priv:2.2.2.222

c) VIP:
rac1-vip:1.1.1.11
rac1-vip:1.1.1.22

3. 磁盘规划(添加四块磁盘):

a) /dev/sdb1用裸设备做为OCR磁盘

b) /dev/sdc1用裸设备做为表决磁盘

c) /dev/sdd1、/dev/sde1做为ASM共享磁盘

4. 很多安装文档上是使用先安装好一台机器再使用vmware克隆一个新的节点的方式,但是中心有一些细节比较容易出问题,为保证实验的效果和模拟真实环境下的配置操作,我直接采用安装两台全新虚拟机的方式来完成。

二.CRS安装步骤

1. 按平时的操作创建两台vmware的虚拟机,操作系统安装RHEL4,安装过程中最好把GCC能选上去,把防火墙和selinux关掉,这个很简单,不做过多介绍

2. 安装rac前对rac1虚拟机的配置如下:

a) 将rac1虚拟机init 0关机后对硬件做配置,保证机器上有两块分另属于不同通道的网卡
clip_p_w_picpath002

b) 为虚拟机添加四块scsi磁盘,我直接加了四块1g的scsi磁盘,注意指定不同的scsi通道(scsi1:x)和我们本机使用的磁盘不要在同一通道上,依次添加四块磁盘,分别对应scsi1:0/scsi1:1/scsi1:2/scsi:3,我下面标红的三个地方请注意最好能调整过来
clip_p_w_picpath004

c) 磁盘添加完成后,需要对vmware的.vmx配置文件做修改,取消对磁盘的锁定,使这四个磁盘成为共享磁盘,在虚拟机的vmx文件后添加如下语句:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"
配置完成后将rac1启动

d) 创建rac的安装目录
mkdir –p /u01/oracle/product/10.2/crs/
mkdir –p /u01/oracle/product/10.2/db1/

e) 创建相关组与用户并为用户设置密码
clip_p_w_picpath006

f) 检查用户与组ID,两个rac节点的用户与组id必须一致
clip_p_w_picpath008

g) 将oracle安装目录的所有者改为oracle用户和dba组
[root@rac1 ~]# chown -R oracle:oinstall /u01/

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

h) 检查并安装RAC、oracle程序需要使用的包:

binutils-2.15.92.0.2-18
compat-libstdc++-33.2.3-47.3
elfutils-libelf-0.97-5
elfutils-libelf-devel-0.97-5
glibc-2.3.9.4-2.19
glibc-common-2.3.9.4-2.19
glibc-devel-2.3.9.4-2.19
gcc-3.4.5-2
gcc-c++-3.4.5-2
libaio-devel-0.3.105-2
libaio-0.3.105-2
libgcc-3.4.5
libstdc++-3.4.5-2
libstdc++-devel-3.4.5-2
make-3.80-5
sysstat-5.0.5
unixODBC-2.2.11
unixODBC-devel-2.2.11

openmotif-2.2.3

rsh-0.17-25.4

rsh-server-0.17-25.4

setarch-1.6-1

i) 检查并安装ASM需要使用的包(ASM所使用的包需要到oracle官方网站上根据自己CPU及linux内核的对应版本去选择下载):
oracleasm-support-2.1.4-1.el4.i386.rpm
oracleasm-2.6.9-55.EL-2.0.3-1.i686.rpm
oracleasmlib-2.0.4-1.el4.i386.rpm

oracleasm-2.6.9-55.ELhugemem-2.0.3-1.i686.rpm

oracleasm-2.6.9-55.ELsmp-2.0.3-1.i686.rpm

oracleasm-2.6.9-55.ELxenU-2.0.3-1.i686.rpm

j) 修改主机名,hosts文件,网络配置
改主机名vi /etc/sysconfig/network
改ip与主机名对应关系vi /etc/hosts,按之前的规划将ip与主机名映射进行编辑
(在hosts文件中注意127.0.0.1对应localhost,不要对应主机名~~~)
1.1.1.111 rac1

2.2.2.111 rac1-priv

1.1.1.11 rac1-vip

1.1.1.222 rac2

2.2.2.222 rac2-priv

1.1.1.22 rac2-vip修改网卡配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network-scripts/ifcfg-eth1
修改rac1的内核参数文件vi /etc/sysctl.conf添加如下内容
kernel.shmmax = 4294967295

kernel.shmall = 2097152

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 262144
添加完后执行sysctl -p

k) 修改etc/security/limits.conf,添加如下内容:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

l) Vi /etc/pam.d/login,添加如下内容(64位系统不需要):
session required /lib/security/pam_limits.so
session required pam_limits.so

m) 修改/etc/profile,加入以下内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

n) 配置hangcheck:vi /etc/modprobe.conf
添加options hangcheck-timer hangcheck-tick=30 hangcheck_margin=180
再执行modprobe -v hangcheck-timer
vi /etc/grub.conf
clock=pit nosmp noapic nolapic

o) 开启sshd服务
chkconfig sshd on
service sshd start

p) 使用oracle用户登录后修改修改~/.bash_profile添加如下环境变量:
export ORACLE_SID=racdb
export ORACLE_BASE=/u01/oracle/product
export ORACLE_HOME=/u01/oracle/product/10.2/db1
export ORA_CRS_HOME=/u01/oracle/product/10.2/crs
export ORACLE_ADMIN=$ORACLE_BASE/admin
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jlib
export JAVA_HOME=$ORACLE_HOME/jdk
export ORA_NLS10=$ORACLE_HOME/nls/data
export PATH=$PATH:$ORACLE_HOME/bin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/lib:$JAVA_HOME/bin:$ORA_CRS_HOME/bin

q) 依次为四块共享磁盘创建物理分区
clip_p_w_picpath010

至此rac1的初期配置完成,后面开始rac2的配置

3. 安装rac前对虚拟机rac2的配置过程如下:

a) 在关机状态下为虚拟机rac2添加网卡(两块)与共享磁盘,因为之前rac1已经创建磁盘,所以在rac2上不用创建新磁盘,直接使用rac1上已经建好的四块共享磁盘即可,注意我打标记的地方
clip_p_w_picpath012
clip_p_w_picpath014

b) 四块磁盘加完后,在rac2虚拟机的vmx文件中添加以下内容后开机:
disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
scsi1:0.deviceType = "disk"
scsi1:1.deviceType = "disk"
scsi1:2.deviceType = "disk"
scsi1:3.deviceType = "disk"

c) Rac2的操作请重复rac1前面所做的操作,完全一样,最后一步创建分区可以不用做,在rac1上创建好分区后,rac2上可以用fdisk –l直接看到所有已经创建好的磁盘分区

4. 为rac1与rac2配置时间同步:

a) 在rac1上执行以下命令开启时间服务
[root@rac1 ~]# chkconfig ntpd on

[root@rac1 ~]# service ntpd status

ntpd is stopped

[root@rac1 ~]# service ntpd start

Starting ntpd: [ OK ]

[root@rac1 ~]#

b) 在rac2上输入system-config-date配置,输入rac1的ip后选择add,ok
clip_p_w_picpath016

c) 再vi /etc/rc.local
输入以下内容:
while [ 1 ];do ntpdate rac1 1>/dev/null 2>&1; sleep 2;done&
时间同步配置完成

5. 配置SSH

a) 切换为oracle用户,在rac1与rac2上的用户根目录下分别创建.ssh目录并给与指定权限:
mkdir ~/.ssh/
chmod 700 ~/.ssh

b) 在rac1上分别使用ssh-keygen命令生成rsa与dsa的非对称密钥。
ssh-keygen –t rsa
ssh-keygen –t dsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/authorized_keys >> rac1.authorized_keys

c) 在rac2上分别使用ssh-keygen命令生成rsa与dsa的非对称密钥。
ssh-keygen –t rsa
ssh-keygen –t dsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

cat ~/.ssh/authorized_keys >> rac2.authorized_keys

d) 将rac1与rac2的密钥文件进行交换
在rac1上:
clip_p_w_picpath018
在rac2上:
clip_p_w_picpath020

e) 将rac2的密钥文件合并到rac1的密钥文件中:
在rac1上执行
cat rac2.authorized_keys >>authorized_keys

f) 将rac1的密钥文件合并到rac2的密钥文件中:
在rac2上执行:
cat rac1.authorized_keys >>authorized_keys

g) Chmod 700 authorized_keys(必须要配置,否则会需要密码)

h) 检测ssh配置是否成功:
ssh rac1 date
ssh rac2 date
ssh rac1-priv date
ssh rac2-priv date
如果执行以上命令不需要输入密码则ssh配置成功

6. 在rac1及rac2上配置裸设备与ASM磁盘:

a) 在rac1和rac2上配置裸设备(将/dev/sdb1与/dev/sdc1配置为ocr磁盘与表决磁盘)

Vi /etc/sysconfig/rawdevices

在其中增加两行代码:

/dev/raw/raw1 /dev/sdb1

/dev/raw/raw2 /dev/sdc1
然后vi /etc/udev/permissions.d/50-udev.permissions,将与raw有关的权限选项进行修改
# raw devices

ram*:root:disk:0660

#raw/*:root:disk:0660

raw/*:oracle:dba:0660
再执行检查配置是否成功:
chkconfig --list rawdevices
service rawdevices restart
clip_p_w_picpath022

b) 在rac1与rac2上配置ASM磁盘(确保前面在两台机器上已经安装了asm的相关包)
使用root用户登录:

i. 执行以下命令:/etc/init.d/oracleasm configure
clip_p_w_picpath024

ii. 使用/etc/init.d/oracleasm createdisk vol1 /dev/sdd1创建asm磁盘
clip_p_w_picpath026在rac1与rac2分别进行如上配置后,磁盘配置完成:

7. 执行如下命令,检查安装环境是否匹配安装要求:
/u01/cluster/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2

8. 在rac1上执行安装程序:
. /u01/cluster/runInstall

9. 指定crs的安装目录:
clip_p_w_picpath028

10. 在群集节点中添加rac2的相关信息
clip_p_w_picpath030

11. 指定两个网卡的连接类型,将eth0设置为public,eth1设置为private
clip_p_w_picpath032

12. 将事先配置好的裸设备/dev/raw/raw1与/dev/raw/raw2分别指定为ocr磁盘与表决磁盘后开始执行安装.
clip_p_w_picpath034
clip_p_w_picpath036

13. 使用集群软件在两个节点进行安装,安装完成后按要求分别在rac1与rac2上执行指定脚本:
. /u01/oracle/product/oraInventory/orainstRoot.sh
. /u01/oracle/product/10.2/crs/root.sh
clip_p_w_picpath038
 

rac1:

clip_p_w_picpath040

rac2:

clip_p_w_picpath042

 

15. 在两个节运行完脚本后,修改两个配置文件:
修改vipca文件(需要在两个节点上操作)
[oracle@rac2 bin]$ cp /home/oracle/app/crs/bin/vipca /home/oracle/app/crs/bin/vipca.bak
[oracle@rac2 bin]$ gedit /home/oracle/app/crs/bin/vipca
找到如下内容:
  Remove this workaround when the bug 3937317 is fixed
  arch=`uname -m`
  if [ "$arch" = "i686" -o "$arch" = "ia64" ]
  then
  LD_ASSUME_KERNEL=2.4.19
  export LD_ASSUME_KERNEL
  fi
  #End workaround
在fi后新添加一行:
unset LD_ASSUME_KERNEL
以及srvctl文件 (需要在两个节点上操作)
[oracle@rac2 bin]$ cp /home/oracle/app/crs/bin/srvctl /home/oracle/app/crs/bin/srvctl.bak
[oracle@rac2 bin]$ gedit /home/oracle/app/crs/bin/srvctl
找到如下内容:
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
同样在其后新增加一行:
unset LD_ASSUME_KERNEL

16. 使用root用户登录在rac2上执行:
/u01/oracle/product/10.2/crs/bin/vipca
选择public网卡点next
clip_p_w_picpath044对vip与别名进行相应设置
clip_p_w_picpath046如果在/u01/oracle/product/oraInventory/logs/installActions2011-03-21_11-23-35文件中
报WARNING: RAC2:6200 already configured.WARNING: RAC1:6200 already configured.的错误
请执行
$cd /home/oracle/app/crs/bin
/u01/oracle/product/10.2/crs/bin/racgons remove_config rac1:6200
/u01/oracle/product/10.2/crs/bin/racgons remove_config rac2:6200

17. 在rac2上执行完netca后,在rac1上点击ok,crs安装完成
clip_p_w_picpath048

18. 检查群集资源是否正常启动
clip_p_w_picpath050

三.群集数据库安装

1. 将oracle10g安装软件复制到rac1并进行解压

2. 运行. /u01/database/runInstal选择安装企业版
clip_p_w_picpath052选择安装目录
clip_p_w_picpath054

3. 选择两个节点进行数据库安装
clip_p_w_picpath056

4. 选择只安装数据库软件
clip_p_w_picpath058

5. 安装完成后执行指定脚本后退出,数据库软件安装完成
clip_p_w_picpath060

6. 安装数据库并配置ASM:
在rac1上执行dbca安装群集数据库:
clip_p_w_picpath062

clip_p_w_picpath064

7. 选择在两个节点上安装数据库
clip_p_w_picpath066

8. 选择安装自定义的数据库
clip_p_w_picpath068

9. 指定数据库的实例名
clip_p_w_picpath070

10. 配置em
clip_p_w_picpath072

11. 选择使用ASM管理共享存储
clip_p_w_picpath074

12. 输入asm的管理密码及创建参数文件
clip_p_w_picpath076

13. 点击ok后会提示没有创建监听,直接yes让oracle自动配置监听程序,并开始配置Asm实例
clip_p_w_picpath078

14. 进入ASM磁盘设置,选择create new
clip_p_w_picpath080

15. 选择事先配置好的asm磁盘--ok
clip_p_w_picpath082
clip_p_w_picpath084
clip_p_w_picpath086

16. 使用ASM管理磁盘
clip_p_w_picpath088

17. 是否配置闪回与归档模式
clip_p_w_picpath090

18. 数据库参数配置
clip_p_w_picpath092

19. 配置数据库服务,这里不用设置,直接next
clip_p_w_picpath094

20. 会报一个最小内存要求的信息,不管,直接ok,再next
clip_p_w_picpath096
clip_p_w_picpath098

21. 选择创建数据库
clip_p_w_picpath100

clip_p_w_picpath102

22. 完成安装
clip_p_w_picpath104

23. 检查所有资源的状态, 安装完成!
clip_p_w_picpath106