红旗LinuxDCServer安装OracleRAC.docx
《红旗LinuxDCServer安装OracleRAC.docx》由会员分享,可在线阅读,更多相关《红旗LinuxDCServer安装OracleRAC.docx(54页珍藏版)》请在冰点文库上搜索。
红旗LinuxDCServer安装OracleRAC
一、拓扑图
二、安装前准备
1、操作系统
使用一个得到Oracle支持的操作系统很重要,我这里使用的是红旗DCServer5.0forx86;Oracle版本是10gR2。
2、网络准备
引用
主机名:
ora01
公网IP:
219.142.7.143
私网IP:
10.0.0.1
虚拟IP:
219.142.7.201
网关:
219.142.7.100
主机名:
ora02
公网IP:
219.142.7.144
私网IP:
10.0.0.2
网关:
219.142.7.100
虚拟IP:
219.142.7.202
共享磁盘:
/dev/sdb
3、/etc/hosts文件(保证两台机器内容一致)
引用
127.0.0.1 localhost.localdomain localhost
#PublicNetwork-(eth0)
219.142.7.143 ora01
219.142.7.144 ora02
#PrivateInterconnect-(eth1)
10.0.0.1 int-ora01
10.0.0.2 int-ora02
#PublicVirtualIP(VIP)addressesfor-(eth0)
219.142.7.201 vip-ora01
219.142.7.202 vip-ora02
※确保在/etc/hosts文件的回送地址中不包含节点名(ora01或ora02)。
也就是在127.0.0.1条目中,不能出现节点名,应该对应的是localhost。
否则会出现类似下面的错误:
如果RAC节点名出现在回送地址中,您在RAC安装期间将接收到以下错误信息:
引用
ORA-00603:
ORACLEserversessionterminatedbyfatalerror
或
引用
ORA-29702:
erroroccurredinClusterGroupServiceoperation
4、配置系统环境(保证两台机器内容一致)
Oracle强烈建议将默认的和最大的发送缓冲区大小(SO_SNDBUF套接字选项)调整为256KB,并将默认的和最大的接收缓冲区大小(SO_RCVBUF套接字选项)调整为256KB。
查看/etc/sysctl.conf文件是否如下面的内容:
引用
#Defaultsettinginbytesofthesocketreceivebuffer
net.core.rmem_default=262144
#Defaultsettinginbytesofthesocketsendbuffer
net.core.wmem_default=262144
#Maximumsocketreceivebuffersizewhichmaybesetbyusing
#theSO_RCVBUFsocketoption
net.core.rmem_max=262144
#Maximumsocketsendbuffersizewhichmaybesetbyusing
#theSO_SNDBUFsocketoption
net.core.wmem_max=262144
5、建立用户和组(两台机器上都要建立)
我准备使用OCFS2存储Oracle集群件软件需要共享的文件。
(不能使用ASM)使用OCFS2时,集群中所有计算机上的UNIX用户oracle的UID以及UNIX组dba的GID都必须相同。
如果UID或GID不同,则OCFS文件系统中的文件将显示为“unowned”,甚至可能被其他用户所拥有。
对于本文而言,oracleUID使用700,dbaGID使用700:
su-
mkdir-p/u01/app
groupadd-g700dba
useradd-u700-g700-d/u01/app/oracle-s/bin/bash-c"OracleSoftwareOwner"-poracleoracle
chown-Roracle:
dba/u01
passwdoracle
6、配置Oracle用户的环境变量(两台机器分别建立)
su-oracle
vi.bash_profile
增加如下内容:
引用
#Userspecificenvironmentandstartupprograms
exportORACLE_BASE=/u01/app/oracle
exportORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
exportORA_CRS_HOME=$ORACLE_BASE/product/crs
exportORACLE_PATH=$ORACLE_BASE/common/oracle/sql:
.:
$ORACLE_HOME/rdbms/admin
#EachRACnodemusthaveauniqueORACLE_SID.(i.e.orcl1,orcl2,...)
exportORACLE_SID=orcl1
exportPATH=.:
${PATH}:
$HOME/bin:
$ORACLE_HOME/bin
exportPATH=${PATH}:
/usr/bin:
/bin:
/usr/bin/X11:
/usr/local/bin
exportPATH=${PATH}:
$ORACLE_BASE/common/oracle/bin
exportORACLE_TERM=xterm
exportTNS_ADMIN=$ORACLE_HOME/network/admin
exportORA_NLS10=$ORACLE_HOME/nls/data
exportLD_LIBRARY_PATH=$ORACLE_HOME/lib
exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:
$ORACLE_HOME/oracm/lib
exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:
/lib:
/usr/lib:
/usr/local/lib
exportCLASSPATH=$ORACLE_HOME/JRE
exportCLASSPATH=${CLASSPATH}:
$ORACLE_HOME/jlib
exportCLASSPATH=${CLASSPATH}:
$ORACLE_HOME/rdbms/jlib
exportCLASSPATH=${CLASSPATH}:
$ORACLE_HOME/network/jlib
exportTHREADS_FLAG=native
exportTEMP=/tmp
exportTMPDIR=/tmp
※注意,SID必须把两台机器修改为不一样,例如把ora02机器修改为:
引用
exportORACLE_SID=orcl2
7、为OCFS2集群件创建挂载点(保证两台机器内容一致)
su-
mkdir-p/u02/oradata/orcl
chown-Roracle:
dba/u02
8、创建共享磁盘分区(其中一台机器运行即可)
下面是对共享磁盘进行分区,将使用OCFS2来存储Oracle的集群件软件要共享的两个文件。
然后是创建三个ASM卷;两个ASM卷用于所有物理数据库文件(数据/索引文件、联机重做日志文件、控制文件、SPFILE和归档重做日志文件),另一个用于闪回恢复区。
先用fdisk-l查看共享磁盘的设备号,如:
/dev/sdb,然后用
fdisk/dev/sdb
※若你已经划分过分区,则在划分新分区后,用下面的命令告诉核心:
#partprobe
结果如下:
引用
DeviceBoot Start End Blocks Id System
/dev/sdb1 1 62 497983+ 83 Linux
/dev/sdb2 63 185 987997+ 83 Linux
/dev/sdb3 186 308 987997+ 83 Linux
/dev/sdb4 309 522 1718955 83 Linux
9、根据实际需要设置SGA
实际上,红旗DCServer5.0已经把需要的shmmax、shmmni、shmall、file-max等参数都已经设置好,若实际需要的话,请修改/etc/sysctl.conf文件。
必要的时候,可以通过下面的命令查看和修改:
设置SHMMAX
cat/proc/sys/kernel/shmmax
echo"kernel.shmmax=2147483648">>/etc/sysctl.conf
设置SHMMNI
cat/proc/sys/kernel/shmmni
设置SHMALL
cat/proc/sys/kernel/shmall
设置信号
cat/proc/sys/kernel/sem
echo"kernel.sem=25032000100128">>/etc/sysctl.conf
设置文件句柄
cat/proc/sys/fs/file-max
echo"fs.file-max=65536">>/etc/sysctl.conf
10、配置hangcheck-timer内核模块(两台都要配置)
从Oracle9i第2版(9.2.0.2)开始(在Oracle10g第2版中仍然存在),一个称为hangcheck-timer的Linux内核模块取代了监视后台程序,该模块更好地解决了可用性和可靠性问题。
它将hang-check计时器加载到Linux内核中并检查系统是否挂起。
它将设置一个计时器,并在特定的时间量之后检查该计时器。
有一个用于检查挂起情况的可配置阈值,如果超过该阈值,计算机将重新启动。
尽管Oracle集群件(集群管理器)操作不需要hangcheck-timer模块,但Oracle强烈建议使用它。
当然,我们这里也安装上咯。
先看看红旗上是否有该模块:
引用
#find/lib/modules-name"hangcheck-timer.ko"
/lib/modules/2.6.9-11.19AX/kernel/drivers/char/hangcheck-timer.ko
/lib/modules/2.6.9-11.19AXsmp/kernel/drivers/char/hangcheck-timer.ko
好,有就看看hangcheck-timer模块的两个关键参数:
hangcheck-tick:
此参数定义了系统运行状况检查的间隔时间。
默认值为60秒;Oracle建议将它设置为30秒。
hangcheck-margin:
此参数定义了hangcheck-timer在重置RAC节点前所容许的最大挂起延迟。
它定义了以秒为单位的误差幅度。
默认值为180秒;Oracle建议将它设置为180秒。
注意:
这两个hangcheck-timer模块参数表示在该模块重置系统前RAC节点必须挂起的时长。
当以下条件为真时将会重置节点:
引用
系统挂起时间>(hangcheck_tick+hangcheck_margin)
先手动测试一下配置:
[root@ora01~]#echo"optionshangcheck-timerhangcheck_tick=30hangcheck_margin=180">>/etc/modprobe.conf
[root@ora01~]#modprobehangcheck-timer
[root@ora01~]#grepHangcheck/var/log/messages|tail-2
Feb2717:
06:
21ora01kernel:
Hangcheck:
startinghangchecktimer0.5.0(tickis30seconds,marginis180seconds).
上面证明测试没有问题,Oracle会负责在需要时加载hangcheck-timer内核模块,所以我们不需要修改其他配置即可。
当然,为了防止以外,你可以在/etc/rc.local里面增加/sbin/modprobehangcheck-timer命令。
#echo"/sbin/modprobehangcheck-timer">>/etc/rc.local
11、配置RAC节点以允许远程访问(两台都要配置)
在RAC节点上运行OracleUniversalInstaller时,它将使用rsh(或ssh)命令将Oracle软件复制到RAC集群中的所有其他节点上。
运行OracleInstaller(runInstaller)的节点上的oracleUNIX帐户必须为RAC集群中的所有其他节点所信任。
因此,应该能够在将要从中运行OracleInstaller的Linux服务器上,不使用口令对集群中的所有其他Linux服务器运行r*命令(如rsh、rcp和rlogin)。
rsh后台程序使用位于用户(oracle的)主目录中的/etc/hosts.equiv文件或.rhosts文件验证用户。
第一步,就是先把rsh、rlogin等服务打开:
#chkconfigrshon
#chkconfigrloginon
#servicexinetdreload
第二步,是建立信任关系,在每个节点上都建立/etc/host.equiv文件:
#touch/etc/hosts.equiv
#chmod600/etc/hosts.equiv
#chownroot.root/etc/hosts.equiv
修改hosts.equiv文件,添加各个节点:
引用
#cat/etc/hosts.equiv
+ora01oracle
+ora02oracle
+int-ora01oracle
+int-ora02oracle
第三步,去掉系统默认的r*命令:
#mv/usr/kerberos/bin/rsh/usr/kerberos/bin/rsh.original
#mv/usr/kerberos/bin/rcp/usr/kerberos/bin/rcp.original
#mv/usr/kerberos/bin/rlogin/usr/kerberos/bin/rlogin.original
然后用which命令查看更改是否成功:
#whichrsh
/usr/bin/rsh
第四步,进行手动测试,在两个节点上分别用oracle用户测试信任建立是否成功:
#su-oracle
$rshora01ls-l/
$rshora02ls-l/
$rshint-ora01ls-l/
$rshint-ora02ls-l/
如果都不需要验证密码,则信任关系已经建立。
12、在启动安装程序前,再一次验证上述的配置是否已经设置成功!
这很重要!
三、准备共享磁盘
1、准备OCFS2共享磁盘
OCFS2是一个集群文件系统,它允许集群中的所有节点通过标准文件系统接口并发访问设备。
这样便可以对需要在集群中运行的应用程序进行轻松地管理。
红旗DCServer4.1SP1上有OCFS第1版,它使OracleRAC用户可以运行集群化数据库而不必处理RAW设备。
文件系统是为存储数据库相关文件如数据文件、控制文件、重做日志、归档日志等设计的。
而红旗DCServer5.0上已经包括了OCFS第2版,OCFS2则是作为一个通用集群文件系统而设计的。
使用它,用户不但可以在共享磁盘上存储与数据库相关的文件,而且还可以存储Oracle二进制文件和配置文件(共享的OracleHome),从而使RAC的管理变得更简单。
当前,我们将使用OCFS2存储需要由Oracle集群件软件共享的两个文件。
(除了这两个文件以外,还将使用此空间存储所有OracleRAC实例的共享SPFILE。
)
正如[原]红旗DC5.0上安装oracle10gR2RAC写过的,只有采用smp核心的才需要手动添加rpm包。
详细的请参考上面的文章配置。
#rpm-ivhocfs2-2.6.9-11.AXsmp-0.99.14-1.2AX.i386.rpm
然后,启动服务:
#/etc/init.d/o2cbload
◎启动ocfs2console配置工具(两台机器上都要配置)
ocfs2console是用于在集群中的每个节点上生成和配置/etc/ocfs2/cluster.conf文件,而且还可以创建和启动集群堆栈O2CB。
如果/etc/ocfs2/cluster.conf文件不存在,ocfs2console工具将创建该文件以及一个默认集群名为ocfs2的新集群堆栈服务(O2CB)。
该操作以root用户帐户在集群的所有节点上执行:
#ocfs2console&
★选择[Cluster]->[ConfigureNodes...],出现下面的信息后:
★确认后,出现节点的配置信息:
(此时会启动o2cb服务)
★点击[添加],然后根据信息添加节点:
★点击[应用]后,应该看到节点都是在[Active]状态:
★再查看配置文件是否正确:
#cat/etc/ocfs2/cluster.conf
node:
ip_port=7777
ip_address=219.142.7.143
number=0
name=ora01
cluster=ocfs2
node:
ip_port=7777
ip_address=219.142.7.144
number=1
name=ora02
cluster=ocfs2
cluster:
node_count=2
name=ocfs2
※按同样的步骤,在节点2上再重复一次。
(不能直接拷贝配置文件)
◎格式化并挂载ocfs2分区(只在主节点上操作)
在格式化前,需要确认o2cb服务处于联机状态,因为它需要确保在集群的某个节点上未挂载该卷。
查看联机状态可以用:
#serviceo2cbstatus
Module"configfs":
Loaded
Filesystem"configfs":
Mounted
Module"ocfs2_nodemanager":
Loaded
Module"ocfs2_dlm":
Loaded
Module"ocfs2_dlmfs":
Loaded
Filesystem"ocfs2_dlmfs":
Mounted
Checkingclusterocfs2:
Online
Checkingheartbeat:
Notactive
格式化ocfs2分区可以用mkfs.ocfs2命令,或ocfs2console控制台。
★使用ocfs2console进行,使用菜单[Tasks]-[Format],如下:
★命令方式:
#mkfs.ocfs2-b4K-C32K-N4-Loradatafiles/dev/sdb1
★然后是挂载分区
[color=#FF1493](要使用datavolume选项)[/color]
使用图标[mount],输入下面的信息:
成功后看到如下信息:
★同样的,可以使用命令进行:
#mount-tocfs2-odatavolume/dev/sdb1/u02/oradata/orcl
★查看挂载信息:
引用
#mount
/dev/sda1on/typeext3(rw)
noneon/proctypeproc(rw)
noneon/systypesysfs(rw)
noneon/dev/ptstypedevpts(rw,gid=5,mode=620)
noneon/dev/shmtypetmpfs(rw)
noneon/proc/sys/fs/binfmt_misctypebinfmt_misc(rw)
configfson/configtypeconfigfs(rw)
ocfs2_dlmfson/dlmtypeocfs2_dlmfs(rw)
/dev/sdb1on/u02/oradata/orcltypeocfs2(rw,datavolume)
★在节点2上也进行同样的挂载。
(不用再次格式化了)
※注意:
根据Oracle关于OCFS2的说明,Oracle数据库用户必须使用datavolume挂载选项安装任何将包含表决磁盘文件、集群注册表(OCR)、数据文件、重做日志、归档日志以及控制文件的卷,以确保Oracle进程打开包含o_direct标志的文件。
其他作用则不需要该选项。
◎测试并设定自动挂载(两台机器上都进行)
★进行简单测试:
在两个节点上分别建立文件,查看另一节点能否同步看到该文件。
成功即可。
★修改挂载点权限(两台机器上都进行)
#chown-Roracle.dba/u02/oradata/orcl
#chmod775/u02/oradata/orcl
★设定自动挂载
修改/etc/fstab文件,添加:
引用
/dev/sdb1 /u02/oradata/orcl ocfs2 _netdev,datavolume 00
※注意:
_netdev挂载选项是OCFS2卷所必需的;它指示将在网络启动后挂载该卷以及在关闭网络前卸载该卷。
修改完毕后,最后再重复mount一次该分区,以确保一切正常:
#umount/u02/oradata/orcl
#mount/u02/oradata/orcl
★通过o2cb服务可以查看到心跳已经建立成功:
#serviceo2cbstatus
Modul