您的位置:首页 > 数据库 > Oracle

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐