有个客户想升级到RAC的生产系统,所以逼着自己又去装RAC,同时有一次在回顾一下RAC中的一些知识了,感觉对自己对RAC的认识是相当的有帮助。
两台机器情况如下
主机1
Hostname:RHEL4-1
OS software RHEL4 As(2.6.9.0.78 ELSmp版本)
memory:1024MB
主机2
Hostname:RHEL4-2
OS software RHEL4 As(2.6.9.0.78 ELSmp版本)
memory:1024MB
没有拿到生产环境,所以自己先在VMWare做了,既然是VMware就取巧了一下,安装好一个虚拟机,然后把准备工作都做好在clone一个到另一个系统下了。
第一步
首先当然是安装RHEL了,手头上有RHEL4 32bit的,就用这个了。
第二步
设置网络配置了,需要两个网卡,配置public,private和virtual ip叻
这回就更仔细的研究了,没有按别人的步骤来,只添加了pri host和vip host。
real ip是192.168.2.206
hostname rhel4-1
192.168.3.206 rhel4-priv1
192.168.2.106 rhel4-vip1
vip必须和public在同一个Ip段上,vip是提供给oracle使用的,这里我们两个网卡分别对应着public和private
第三步
创建用户
#groupadd dba
#groupadd oinstall
#useradd -g oinstall -G dba oracle
#passwd oracle
#mkdir /u01/app/oracle/product/10.2.0.2/db_1 -p
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
第四步
修改相关参数文件
环境变量参数/home/oracle/.bash_profile
export PATH
unset USERNAME
export LANG=zh_CN.EUC
ORACLE_BASE=/u01/app/oracle;
export ORACLE_BASE
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0.2/db_1
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0.2/crs_1
export ORACLE_SID=rac1
#export NLS_LANG=’SIMPLIFIED CHINESE_CHINA.ZHS16GBK’
PATH=$ORACLE_HOME/bin:/bin:/sbin:/usr/bin:/usr/ccs/bin:/usr/local/bin:/usr/ucb;
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:$ORACLE_HOME/oracm/lib:/usr/local/lib:/usr/lib;
export LD_LIBRARY_PATH
export ORACLE_TERM=xterm
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
配置内核参数/etc/sysctl.conf
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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=262144
net.core.wmem_default=262144
net.core.rmem_max=262144
net.core.wmem_max=262144
#/sbin/sysctl -p 生效
Linux 帐户可以使用的进程数量和打开文件的数量设置限制 /etc/security/limits.conf和/etc/pam.d/login
/etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
/etc/pam.d/login
session required /lib/security/pam_limits.so
Disable SELinux /etc/grub.conf
在行kernel /vmlinuz-2.6.9-42.ELlargesmp ro root=LABEL=/ rhgb quiet后
加入
selinux=0
第五步
加载hangcheck-timer
在/etc/rc.d/rc.local加入
modprobe hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
第六步
等效性配置,用oracle用户登录
#ssh-keygen -t rsa
一路回车
#ssh-keygen -t dsa
一路回车
在`/.ssh下将生成密匙和公匙
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
其他机器安装好以后运行
ssh oracle@rhel4-2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
第七步安装ocfs2和asm
下载ocfs2和asm软件,我这里的RAC规划是ocfs2加上Asm,asm相对于row device来说便于管理,相对于ocfs2来说性能更好,至于使用ocfs2主要是做crs和voting disk部分的storage,数据文件以及其他数据库的文件都在asm上做storage。
ocfs2可以从oss下载 注意是ocfs第二版的哟http://oss.oracle.com/projects/ocfs2/files/RedHat/
asm可以从otn下载http://www.oracle.com/technology/software/tech/linux/asmlib/rhel4.html
现在前用uname -r查看自己的内核。找和自己内核一致的版本下载。
我这里下载的分别是
ocfs2
ocfs2-2.6.9-78.ELsmp-1.2.9-1.el4.i686.rpm
ocfs2console-1.2.7-1.el4.i386.rpm
ocfs2-tools-1.2.7-1.el4.i386.rpm
asm
oracleasm-2.6.9-78.ELsmp-2.0.5-1.el4.i686.rpm
oracleasmlib-2.0.4-1.el4.i386.rpm
oracleasm-support-2.1.3-1.el4.i386.rpm
安装
# rpm ‐ivh ocfs2-tools-1.2.7-1.el4.i386.rpm
# rpm ‐ivh ocfs2-2.6.9-78.ELsmp-1.2.9-1.el4.i686.rpm
# rpm ‐ivh ocfs2-tools-1.2.7-1.el4.i386.rpm
# rpm ‐ivh oracleasm-support-2.1.3-1.el4.i386.rpm
# rpm ‐ivh oracleasmlib-2.0.4-1.el4.i386.rpm
# rpm ‐ivh oracleasm-2.6.9-78.ELsmp-2.0.5-1.el4.i686.rpm
第八步
格式化硬盘
加一块硬盘10g上去,/dev/sdb
fdisk /dev/sdb
分两个区,一个作为ocfs管理的需要给600M就够了,crs和voting disk的,剩下的都个asm了
ocfs2的部署
#ocfs2console
<1>在OCFS2控制台中,点击“TASKS”下的“FORAMT”菜单对要格式化为OCFS2文件系统的分区进行格式化,在UI下,选择/dev/sdb1,
<2>在OCFS2控制台程序中选择“Cluster”菜单下的“Configure Nodes”菜单,配置使用OCFS2文件系统的集群节点,在“Node Configuration”对话框中,点击“Add”来连接集群节点
<3>Apply, 如果有错,删除/etc/ocfs2目录下的 cluster.conf文件,重新用UI创建。
最后的cluster.conf是
node:
ip_port = 7777
ip_address = 192.168.3.202
number = 0
name = rhel4-2
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.3.201
number = 1
name = rhel4-1
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
<4>在节点1 上利用界面上传配置文件到其它节点
# ocfs2console
然后选择 Cluster ‐> Propagate Configuration
所有都finished, 然后File‐>Quit
在节点2上可以看到一样的cluster.conf
<5>配置O2CB
[root@rhel4-2 crs]# /etc/init.d/o2cb enable
Writing O2CB configuration: OK
O2CB cluster ocfs2 already online
[root@rhel4-1 crs]# /etc/init.d/o2cb enable
Writing O2CB configuration: OK
Starting O2CB cluster ocfs2: OK
[root@rhel4-2 crs]# /etc/init.d/o2cb configure
Specify heartbeat dead threshold (>=7) [31]:61 根据自己的需要来设置
同样在节点2 上配置。
[root@rhel4-2 crs]# /etc/init.d/o2cb start
[root@rhel4-2 crs]# /etc/init.d/o2cb status
Module “configfs”: Loaded
Filesystem “configfs”: Mounted
Module “ocfs2_nodemanager”: Loaded
Module “ocfs2_dlm”: Loaded
Module “ocfs2_dlmfs”: Loaded
Filesystem “ocfs2_dlmfs”: Mounted
Checking O2CB cluster ocfs2: Online
Heartbeat dead threshold: 61
Network idle timeout: 30000
Network keepalive delay: 2000
Network reconnect delay: 2000
Checking O2CB heartbeat: Active
加载OCFS2 文件系统
mount -t ocfs2 -o _netdev,datavolume,nointr /dev/sdb1 /crsdata
如果有问题先执行一下
mkfs.ocfs2 -b 4k -C 32k -N 4 -L ora_home /dev/sdb1 –fs-feature-level=max-compat
asm的部署
查看volumn
#/etc/init.d/oracleasm listdisks
配置
#/etc/init.d/oracleasm configure
Default user to own the driver interface []: oracle
Default group to own the driver interface []: dba
其他默认值
据文件创建 ASM 磁盘
# /etc/init.d/oracleasm createdisk oradata /dev/sdb2 — oradata disk volumn
#/etc/init.d/oracleasm listdisks
ORADATA
#/etc/init.d/oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
#mount
oracleasmfs on /dev/oracleasm type oracleasmfs (rw)
接下来就可以安装clusterware了
常见故障排除
安装时到最后需要root执行CRS_HOME/root.sh, 这时有错误
PROT-1: Failed to initialize ocrconfig
Failed to upgrade Oracle Cluster Registry configuration
原因是没有mount好,对于ocfs2来说,可以store,datafile,control file,redo file,archive file和crs和voting disk,但是必须在mount时加上datavolume
#mount -t ocfs2 -o datavolume /dev/sdb1 /crsdata
在执行root.sh时有时会挂在那里 ,是crs和voting disk没有format好,重新format好,然后装载
#ocfs2conosole
先umount,然后format,接着用上面的方式装载。
在root.sh install deamon是有时会告知如下信息
Running vipca(silent) for configuring nodeapps
The given interface(s), “eth2″ is not public. Public interfaces should be used to
configure virtual IPs.
重新用$CRS_HOME/bin/vipca执行,设置vip即可。
注意
有时RAC安装失败了,一定要把crs删除干净了才能安装,要不有些怪异的错误,ocr和votingdisk要格式化以后再重新mount才行。