Oracle10gR2 RAC实时应用集群(二)在Redhat Enterprise Linux5 x86_64下的集群(OCFS篇)
2012-08-13 18:28
579 查看
Oracle10gR2 RAC实时应用集群(二)在Redhat Enterprise Linux5 x86_64下的集群(OCFS篇)
(Oracle10gR2 + ClusterWare + RHEL5 + OCFS2)RAC(Real Application Clusters,实时应用集群),是多台主机组成的集群计算环境,是Oracle数据库支持网格计算环境的核心技术。
普通Oracle数据库,只能在一台主机上运行,数据库的实例和数据库文件都在一台主机上,是单实例单数据库。
RAC实时应用集群,可以在多台主机上运行,每台节点主机上运行一个数据库实例,通过共享存储磁盘访问相同的数据库文件,是多实例单数据库,单一节点故障不影响数据库的使用,负载能力也会随节点主机的增加而加强。
RAC集群的关键点:
1.共享存储
2.节点间需要内部通讯,以协调集群正常运行,所以每个节点需要提供外部网络与内部网络.
3.CRS集群软件: 需要集群软件(Clusterware)协调各节点.
4.集群注册文件(OCR): 需要注册集群,保存在共享磁盘上.
5.仲裁磁盘(Voting Disk): 需要协调各节点决定控制权,做为表决器,保存在共享磁盘上.
6.虚拟IP(Virturl IP): 提供客户端连接,IP由集群软件接管,当集群就绪时,虚拟IP可以连接.
共享存储访问方式(存储系统):
1.集群文件系统(CFS:Cluster File System)
2.自动存储管理(ASM:Automatic Storage Management)
3.网络文件系统(NFS)
4.裸设备(RAW)
单机文件系统FAT32,NTFS,ext3不能作为共享存储
选择以下储存方案来建立集群系统:
项目 存储系统 存储位置
Clusterware软件 本地文件系统ext3 本地磁盘
voting disk OCFS 共享磁盘
OCR OCFS 共享磁盘
数据库软件 OCFS 共享磁盘
数据库 OCFS 共享磁盘
下面说说Oracle RAC在Redhat Enterprise Linux5 x86_64下的安装过程。
一.配置多主机节点环境
主要为学习测试之用,可以使用虚拟机模拟来实现多台主机,比较好的选择是VMware Workstation8.0.4.
1.使用VMware Virtual Network Editor添加网络适配器(VMnet1,VMnet2),生成两个网段,VMnet1的网段用于节点外部通讯(PublicNet),VMnet2网段用于节点间通讯(PrivateNet).
2.使用VMware创建两台主机,在每台主机上安装Redhat Enterprise Linux5 x86_64系统,每台需要虚拟两张网卡,IP分配如下:
节点主机 主机公网IP 虚拟IP 私网IP(内部网络)
RAC01 192.168.89.166 192.168.89.66 192.168.234.166
RAC02 192.168.89.167 192.168.89.67 192.168.234.167
公网与私网IP设置在网卡上,虚拟IP不用设置.
3.设置DNS解析,修改2台虚拟机rac01,rac02上的/etc/hosts文件,添加以下内容:
192.168.89.166 rac01
192.168.89.167 rac02
192.168.89.66 rac01v
192.168.89.67 rac02v
192.168.234.166 rac01p
192.168.234.167 rac02p
4.在各节点上检查和安装需要用到的软件包
根据Oracle官方文档,需要以下软件包:
binutils-2.17.50.0.6-2.el5
compat-db-4.2.52-5.1
compat-gcc-34-3.4.6-4
compat-gcc-34-c++-3.4.6-4
compat-libstdc++-33-3.2.3-61
compat-libstdc++-33-3.2.3-61(i386)
compat-libstdc++-296(i386)
gcc-4.1.1-52.el5.2
gcc-c++-4.1.1-52.el5.2
glibc-2.5-12
glibc-2.5-12(i386)
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-devel-2.5-12(i386)
glibc-headers-2.5-12
libgcc-4.1.1-52.el5(i386)
libXp-1.0.0(i386)
libXt-1.0.2(i386)
libXtst-1.0.1(i386)
libaio-0.3.106-3.2
libaio-devel-0.3.106-3.2
libgcc-4.1.1-52.el5
libstdc++-4.1.1-52.el5.2
libstdc++-devel-4.1.1-52.el5.2
libgomp-4.1.1-52.EL5
make-3.81-1.1
numactl-devel-0.9.8.x86_64
sysstat-7.0.0-3.el5
以root用户登录系统,执行以下语句检查软件包是否安装
# rpm -q binutils compat-db compat-gcc-34 compat-gcc-34-c++ compat-libstdc++-33 compat-libstdc++-296 gcc gcc-c++
# rpm -q glibc glibc-common glibc-devel glibc-headers libgcc libXp libXt libXtst libaio libaio-devel libgcc
# rpm -q libstdc++- libstdc++-devel libgomp make numactl-devel sysstat
找到Redhat Enterprise Linux5 x86_64安装光盘的Server目录,安装没有安装的软件包
# rpm -ivh compat-db-4.2.52-5.1.x86_64.rpm
5.各节点内核参数修改.
修改文件/etc/sysctl.conf,添加以下内容:
# /etc/sysctl.conf
# for oracle
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.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
执行以下语句生效:
# /sbin/sysctl -p
修改文件/etc/security/limits.conf,添加以下内容:
# /etc/security/limits.conf
# for oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
修改文件/etc/pam.d/login
# /etc/pam.d/login
# for oracle
session required pam_limits.so
修改文件/etc/profile,添加以下内容:
# /etc/profile
# for oracle
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
6.在各节点上添加组和用户
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
7.在各节点上创建文件夹
# mkdir -p /u01/crs
# mkdir -p /u01/app/
# mkdir -p /u01/oradata
# chown oracle:oinstall /u01
# chmod -R 775 /u01
# chown -R root:oinstall /u01/crs
# chmod -R 775 /u01/crs
8.配置各节点间ssh通信协议
由于RAC需要互相通信,并且都需要运行在oracle用户下,就需要在各节点oracle用户建立互信机制
<<1>>创建.ssh目录
以oracle用户登录节点,检查/home/oracle/下是否有.ssh目录,如果没有就创建一个.
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
<<2>>生成RSA key
在每个主机节点上执行以下命令创建RSA Key
$ /usr/bin/ssh-keygen -t rsa
全部回车接受默认项,将生成id_rsa.pub文件
<<3>>将生成的RSA Key添加到authorized_keys中
以oracle用户登录节点rac01
$cat id_rsa.pub >> authorized_keys //生成authorized_keys文件
$scp authorized_keys rac02:/home/oracle/.ssh/ //把节点rac01的文件authorized_keys传输到rac02
以oracle用户登录节点rac02
$cat id_rsa.pub >> authorized_keys //添加RSA Key到authorized_keys文件
$scp authorized_keys rac01:/home/oracle/.ssh/ //把节点rac02的文件authorized_keys传回到rac01
<<4>>启用ssh协议
在每个节点上执行以下通信命令,此时需要输入密码.
$ ssh rac01 date
$ ssh rac02 date
$ ssh rac01p date
$ ssh rac02p date
在每个节点上启动ssh代理,并将ssh key装载到内存中
$ exec /usr/bin/ssh-agent $SHELL
$ /usr/bin/ssh-add
再执行上面的通信命令,不再需要密码.
9.创建共享磁盘
关闭主机后建共享磁盘,Disk Mode 选择Independent Persistent,不用缓存,以便多机访问共享.
磁盘总线选择SCSI 1:1或1:x,与本地磁盘(SCSI 0:0)分开
另外需要修改各虚拟机目录中的vmx文件,解除锁并取消缓存,以便多机访问,添加
disk.locking="false"
diskLib.dataCacheMaxSize = "0"
创建后另一台主机也挂载同一个磁盘.
10.磁盘分区
启动主机后使用fdisk命令给共享磁盘分区。
指定为扩展分区,分成两个逻辑分区,一个用于安装Oracle数据库软件,一个用于安装数据库。
# fdisk -l //查看分区
# fdisk /dev/sdb //分区sdb硬盘,逻辑盘sdb5,sdb6
分区后重新启动
11.配置OCFS2集群文件环境
可以参考Oracle集群文件系统(OCFS2)用户指南
<<1>>安装OCFS2软件包
在oracle官方网站下载ocfs2的两个安装包,一个称为核心模块,另一个叫工具包
核心模块可以从以下链接下载:
http://oss.oracle.com/projects/ocfs2/files/
工具包可以从以下链接下载;
http://oss.oracle.com/projects/ocfs2tools/files/
工具包又分为两部分,ocfs2tools命令行工具,ocfs2console 图形工具
<<2>>配置OCFS2
登录节点rac01,执行以下命令.
# ocfs2console
在图形界面中,点菜单Cluster/Configure Node,添加节点rac01,rac02及ip地址.
点菜单Tasks/Format格式化共享磁盘为ocfs2格式.
点菜单Cluster/Propagate Configuration,将rac01的集群配置复制到rac02。
<<3>>启动O2CB集群服务
# /etc/init.d/o2cb enable
# /etc/init.d/o2cb status
# /etc/init.d/o2cb load
# /etc/init.d/o2cb online
<<4>>挂载OCFS2文件系统
# mount -t ocfs2 /dev/sdb5 /u01/app
# mount -t ocfs2 -o datavolume,nointr /dev/sdb6 /u01/oradata
由于ocfs2配置的端口是7777,防火墙需要开放,否则会出现以下错误
mount.ocfs2: Transport endpoint is not connected while mounting /dev/sdb5 on /u01/app. Check 'dmesg' for more information on this error.
挂载后可以通过以下命令查看各节点挂载的情况.
# mounted.ocfs2 -f
配置在系统启动时自动挂载
# cat /etc/fstab
/dev/sdb6 /u01/oradata ocfs2 _netdev,datavolume,nointr 0 0
/dev/sdb5 /u01/app ocfs2 _netdev 0 0
# chkconfig --add ocfs2
# chkconfig --add o2cb
# /etc/init.d/o2cb configure //配置系统启动时加载
二.安装RAC.
1.安装RAC集群服务软件Clusterware
<<1>>首先修改目录权限
# chown -R root:oinstall /u01/crs
# chmod -R 775 /u01/crs
# chown -R oracle:oinstall /u01/app/
# chmod -R 775 /u01/app/
# chown -R oracle:oinstall /u01/oradata
# chmod -R 775 /u01/oradata
将软件包10201_clusterware_linux_x86_64.cpio.gz解压到节点rac01.
# gunzip 10201_clusterware_linux_x86_64.cpio.gz
# cpio -idmv <10201_database_linux_x86_64.cpio
<<2>>以oracle用户执行目录clusterware下的runInstaller命令:
$ export LANG=""
$ ./runInstaller
可能会提示错误
Checking operating system version: must be redhat-3, SuSE-9, redhat-4, UnitedLinux-1.0, asianux-1 or asianux-2
Failed <<<<
这是因为Oracle10gR2发布的时候还没有redhat-5,后来Oracle的官方文档有说明支持redhat-5.
解决方案有两种:
第一种方案是修改/etc/redhat-release文件,修改版本为4.
# /etc/redhat-release
Red Hat Enterprise Linux Server release 5.8 (Tikanga)
第二种方案是修改解压后安装文件clusterware/install/oraparam.ini
# clusterware/install/oraparam.ini
[Certified Versions]
Linux=redhat-3,SuSE-9,redhat-4,UnitedLinux-1.0,asianux-1,asianux-2
添加redhat-5.
但第二种方案好像在后面还是有问题。
然后再执行runInstaller,启动安装图形界面.
<<3>>指定crs位置
/u01/oraInventory
/u01/crs/10.2.0
<<4>>指定集群配置
集群名称 crs
公共节点名 专用节点名 虚拟主机名
RAC01 RAC01P RAC01V
RAC02 RAC02P RAC02V
<<5>>修改网卡eth0接口类型为共用.
<<6>>集群配置存储
指定OCR(Oracle Cluster Registry)位置
OCR Configuration: External Redundancy
OCR Location: /u01/oradata/clusterdata/ocrdata
指定表决磁盘(Voting Disk)位置
Voting Disk Configuration: External Redundancy
Voting Disk Location: /u01/oradata/clusterdata/votedisk
<<7>>执行安装
在Configuration Assistant第4步可能失败,这是在公用接口上使用了私有IP,忽略选择下一步,在退出后手动执行VIPCA就可以了.
在crs的bin目录,运行vipca,指定虚拟主机别名及虚拟IP
rac01v 192.168.89.66
rac02v 192.168.89.67
安装过程中提示在rac01和rac02执行以下脚本,另开一个命令窗口以root用户执行.
/u01/crs/oraInventory/orainstRoot.sh
/u01/crs/10.2.0/root.sh
在执行root.sh时可能出错,此时runInstaller安装界面不要点OK关闭.
可能出现的几个问题.
(1)以root用户在第二个节点执行root.sh时出错,启动vipca失败,需要手动执行vipca,先不要点OK关闭.
Running vipca(silent) for configuring nodeapps
/u01/crs/10.2.0/jdk/jre//bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
这可能是oracle 10201版本的一个bug,修补方法如下:
将文件/u01/crs/10.2.0.1/bin/vipca中的这一段给注释掉
#Remove this workaround when the bug 3937317 is fixed
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
或者在后面添加unset LD_ASSUME_KERNEL
(2)再执行vipca又会出现第二个问题.
[root@rac02 bin]# ./vipca
Error 0(Native: listNetInterfaces:[3])
[Error 0(Native: listNetInterfaces:[3])]
此时需要在节点rac02以root身份执行以下命令来解决
# cd /u01/crs/10.2.0/bin
# ./oifcfg iflist
eth0 192.168.89.0
eth1 192.168.234.0
# ./oifcfg setif -global eth0/192.168.89.0:public
# ./oifcfg setif -global eth1/192.168.234.0:cluster_interconnect
# ./oifcfg getif
eth0 192.168.89.0 global public
eth1 192.168.234.0 global cluster_interconnect
<<8>>执行vipca配置虚拟ip
# cd /u01/crs/10.2.0.1/bin
# export LANG=""
# ./vipca
指定网卡eth0.
设置虚拟主机rac01v,rac02v及ip地址.
<<9>>执行完后检查CRS是否成功
vipca运行完后,安装程序runInstaller界面点OK,即可安装完成,完成后确认是否安装成功:
# cd /u01/crs/10.2.0/bin
# ./olsnodes
rac01
rac02
# ./crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
# ./crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.rac01.gsd application 0/5 0/0 ONLINE ONLINE rac01
ora.rac01.ons application 0/3 0/0 ONLINE ONLINE rac01
ora.rac01.vip application 0/0 0/0 ONLINE ONLINE rac01
ora.rac02.gsd application 0/5 0/0 ONLINE ONLINE rac02
ora.rac02.ons application 0/3 0/0 ONLINE ONLINE rac02
ora.rac02.vip application 0/0 0/0 ONLINE ONLINE rac02
表示CRS已成功.
2.安装Oracle数据库软件.
<<1>>.编辑Oracle用户环境,编辑.bash_profile文件
# su - oracle
$ vi .bash_profile
添加以下内容
# For Oracle
export DISPLAY=:0.0
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_SID=astt;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
<<2>>.将oracle数据库软件解压到节点rac01.
# gunzip 10201_database_linux_x86_64.cpio.gz
# cpio -idmv <10201_database_linux_x86_64.cpio
<<2>>.以oracle登入系统,运行database下的runInstaller文件。
$ export LANG=""
$ ./runInstaller
home默认为.bash_profile中设置.
OraDb10g_home1
/u01/app/oracle/product/10.2.0/db_1
节点全选,
检测过程可能出现网络配置的错误:
Recommendation: Oracle supports installations on systems with DHCP-assigned public IP addresses. However, the primary network interface on the system should be configured with a static IP address in order for the Oracle Software to function properly.
See the Installation Guide for more details on installing the software on systems configured with DHCP.
Oracle默认网络是静态IP的,将/etc/hosts文件中127.0.0.1放在后面可以解决.
选择仅安装数据库软件,后续再通过dbca创建数据库.
3.设置监听程序.
以oracle用户运行netca命令,配置监听程序,选择集群所有节点.
4.创建数据库.
以oracle用户运行dbca.
选择Oracle Real Application Clusters数据库,节点全选.
存储选择使用集群文件系统.
数据库文件位置/u01/oradata/10.2.0.
5.测试数据库
运行sqlplus,以dba权限登录Oracle系统后执行以下语句查询集群节点状态:
$ ./crs_stat -t -v
$ sqlplus system/password@astt;
SQL> select instance_name,host_name,status from v$instance;
SQL> select instance_name,host_name,status from gv$instance;
相关文章推荐
- Oracle10gR2 RAC实时应用集群(三)在Redhat Enterprise Linux5 x86_64下的集群(RAW+ASM篇)
- Oracle10gR2 RAC实时应用集群(一)在Windows2003下的集群(OCFS篇)
- Oracle11gR2 RAC实时应用集群(2)在Windows2003 x86_64下的集群(ASM篇)
- Oracle11gR2 RAC实时应用集群在Redhat Enterprise Linux6.3 x86_64下的集群(ASM篇)
- Oracle11gR2 RAC实时应用集群(3)在Redhat Enterprise Linux6.3 x86_64下的集群(ASM篇)
- Oracle11gR2 RAC实时应用集群(1)在Redhat Enterprise Linux5 x86_64下的集群(ASM篇)
- Oracle11gR2 RAC实时应用集群在Redhat Enterprise Linux5 x86_64下的集群(ASM篇)
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.2.Oracleasm Createdisk ASM磁盘失败:Instantiating disk: failed
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.7.Oracle 11G R2 RAC修改public网络IP
- RedHat6 x86_64 安装Oracle10gR2 软件
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.3.Oracle 集群节点间连通失败
- SUSE linux 10.2 X86_64下部署Oracle10gR2
- Oracle 11gR2 RAC实时应用集群
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.6. 安装Oracle所依赖的必要包
- Oracle10gR2 on RHEL4 x86_64安装技术文档(英文原版)
- Oracle10gR2 On RHEL5 x86_64安装技术文档(原版英文)
- Oracle 10g R2 X86_64在Solaris 10 X86_64上的安装
- Centos 6.5 X86_64 安装oracle 11g rac,采用ASMlib创建asm磁盘
- RedHat 5.6_x86_64 + ASM + RAW+ Oracle 10g RAC (四)
- X86-64内核的RHEL5安装oracle10,执行dbca命令,出现libXp.so.6错误