`
tianshibaijia
  • 浏览: 1125148 次
文章分类
社区版块
存档分类
最新评论

Redhat 5.4 Oracle 10g RAC Openfiler+Multipath + RAW+ ASM 安装文档

 
阅读更多

在Redhat平台上RAC装过多次。本来也没打算整理这篇文章。但是在搭建这个环境的过程中有了一下新的体会。而且RAC架构也不一样。搭建之后对RAC也有更深的理解。

实验平台配置信息:

存储:openfiler

服务器:2套虚拟机,内存900M,硬盘15GB

操作系统:radhat 5.4

用iscsi和Multipath将存储连接到服务器上。

服务器主机名

rac1

rac2

公共IP地址(eth0)

10.85.10.1

10.85.10.2

虚拟IP地址(eth0)

10.85.10.3

10.85.10.4

私有IP地址(eth1)

192.168.1.200

192.168.1.201

ORACLE RAC SID

orcl1

orcl1

集群实例名称

orcl

OCR

/dev/raw/raw1/dev/mapper/ocrp1200M

/dev/raw/raw2/dev/mapper/ocrp2200M

voting disk

/dev/raw/raw3/dev/mapper/ocrp3200M

/dev/raw/raw4/dev/mapper/ocrp4200M

/dev/raw/raw5/dev/mapper/ocrp5200M

ASM

/dev/mapper/DATAp110GOracle Data

/dev/mapper/FRAp25GFRA

相关文档参考:

RAC 的一些概念性和原理性的知识

http://blog.csdn.net/xujinyang/article/details/6837273

RAW+ASM 的RAC 安装文档

http://blog.csdn.net/xujinyang/article/details/6829656

Redhat 5.4 + ASM + RAW+ Oracle 10g RAC安装文档

http://blog.csdn.net/xujinyang/article/details/6837265

一.准备工作

1.1安装操作系统

按设计配置好IP,机器名,网关等信息。

1.2连接存储,配置Multipath

参考:

openfiler搭建虚拟存储并配置服务端

http://blog.csdn.net/xujinyang/article/details/6933090

Multipath实现LUN设备名称的持久化

http://blog.csdn.net/xujinyang/article/details/6933103

在Oracle raw配置的文章中也有Multipath配置的方法,参考:

Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5-OEL5 [ID 564580.1]

http://blog.csdn.net/xujinyang/article/details/6834880

1.3同步时间:

1)在rac1上启动time-stream服务,并设置为自动动

[root@rac1 ~]# chkconfig time-stream on

在redhat 4中,是: #chkconfig time on

2)在rac2上添加任务,每一分钟和rac1进行一次时间同步。

[root@rac2 ~]# crontab -l

*/1 * * * * rdate -s 10.85.10.1

rac对节点间时间较敏感,RAC不能容忍节点间时钟不同步,否则RAC会Down掉,而且在安装vipca的时候也会报错。具体时间同步参考我的blog:

Linux时间同步配置

http://blog.csdn.net/xujinyang/article/details/6924299

linux下修改日期和时间

http://blog.csdn.net/xujinyang/article/details/6925658

1.4设置IP

修改解析文件:/etc/hosts .两个node都要一样.注意,机器名和public名要一样。

127.0.0.1 localhost (必须要这样)

# Public Network - (eth0)

10.85.10.1 rac1

10.85.10.2 rac2

# Private Interconnect - (eth1)

192.168.1.200 rac1-priv

192.168.1.201 rac2-priv

# Public Virtual IP (VIP) addresses - (eth0:1)

10.85.10.3 rac1-vip

10.85.10.4 rac2-vip

1.5.建立用户等效性

建立等效用户之后,2个结点直接Oracle用户互相访问就不在需要密码了,

1)在RAC1,RAC2两个节点上添加group add dba oinstall组,创建oracle用户,主组oinstall,附加组是dba.

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

passwd oracle

2)建立等效用户

在rac1:

[oracle@rac1 ~]$ mkdir ~/.ssh

[oracle@rac1 ~]$ chmod 700 ~/.ssh

[oracle@rac1 ~]$ ssh-keygen -t rsa

[oracle@rac1 ~]$ ssh-keygen -t dsa

在rac2:

[oracle@rac2 ~]$ mkdir ~/.ssh

[oracle@rac2 ~]$ chmod 700 ~/.ssh

[oracle@rac2 ~]$ ssh-keygen -t rsa

[oracle@rac2 ~]$ ssh-keygen -t dsa

3)切换回rac1,接着执行:

[oracle@raw1 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[oracle@raw1 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

提示:下列命令会提示你输入rac2的oracle密码,按照提示输入即可,如果失败可重新尝试执行命令。

Rac1节点:

[oracle@rac1 ~]$ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys

Rac2节点:

[oracle@rac2 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[oracle@rac2 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

[oracle@rac2 ~]$scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys

4)确保2个node都有相互的结点信息。两机相互执行。

[oracle@rac1 ~]$ ssh rac1 date

[oracle@rac1~]$ ssh rac2 date

[oracle@rac1 ~]$ ssh rac1-priv date

[oracle@rac1 ~]$ ssh rac2-priv date

切换至rac2执行

[oracle@rac2 ~]$ ssh rac1 date

[oracle@rac2~]$ ssh rac2 date

[oracle@rac2 ~]$ ssh rac1-priv date

[oracle@rac2 ~]$ ssh rac2-priv date

1.6.在2个结点上创建目录

[root@rac1 ~]# mkdir -p /u01/app/oracle

[root@rac1 ~]# chown -R oracle:oinstall /u01

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

1.7.修改/etc/sysctl.conf,添加这些kernel参数

net.core.rmem_default=262144

net.core.wmem_default=262144

net.core.rmem_max=262144

net.core.wmem_max=262144

kernel.shmall = 131072000

kernel.shmmax =544288000 -官网提供的524288000.这个值小了。检查时通不过

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

# sysctl -p立刻生效

具体内容参考我的blog:

Linux内核参数及Oracle相关参数调整

http://blog.csdn.net/xujinyang/article/details/6830493

1.8.设置用户资源限制,2个节点都要执行

vi /etc/sysconfig/limits.conf

Oracle soft memlock 5242880

Oracle hard memlock 524280

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 65536

oracle hard nofile 65536

将下面一行添加到/etc/pam.d/login文件中:

session required /lib/security/pam_limits.so

1.9.配置hangcheck-timer模块,2个节点都要执行

Hangcheck-timer是Linux提供的一个内核级的IO-Fencing模块,这个模块会监控Linux内核运行状态,如果长时间挂起,这个模块会自动重启系统。这个模块在Linux内核空间运行,不会受系统负载的影响。这个模块会使用CPU的Time Stamp Counter(TSC)寄存器,这个寄存器的值会在每个时钟周期自动增加,因此使用的是硬件时间,所以精度更高。

配置这个模块需要2个参数: hangcheck_tick和hangcheck_margin。

hangcheck_tick用于定义多长时间检查一次,缺省值是30秒。有可能内核本身很忙,导致这个检查被推迟,该模块还允许定义一个延迟上限,就是hangcheck_margin,它的缺省值是180秒。

Hangcheck-timer模块会根据hangcheck_tick的设置,定时检查内核。只要2次检查的时间间隔小于hangcheck_tick + hangchec_margin,都会认为内核运行正常,否则就意味着运行异常,这个模块会自动重启系统。

CRS本身还有一个MissCount参数,可以通过crsctl get css miscount命令查看。

当RAC结点间的心跳信息丢失时,Clusterware必须确保在进行重构时,故障结点确实是Dead状态,否则结点仅是临时负载过高导致心跳丢失,然后其他结点开始重构,但是结点没有重启,这样会损坏数据库。因此MissCount必须大于hangcheck_tick+hangcheck_margin的和。

1)查看模块位置:

[root@rac1 ~]#find /lib/modules -name "hangcheck-timer.ko"

/lib/modules/2.6.18-164.el5/kernel/drivers/char/hangcheck-timer.ko

/lib/modules/2.6.18-164.el5xen/kernel/drivers/char/hangcheck-timer.ko

2)配置系统启动时自动加载模块,在/etc/rc.d/rc.local中添加如下内容

[root@rac1 ~]# modprobe hangcheck-timer

[root@rac1 ~]# vi /etc/rc.d/rc.local

modprobe hangcheck-timer

3)配置hangcheck-timer参数,在/etc/modprobe.conf中添加如下内容:

[root@rac1 ~]# vi /etc/modprobe.conf

options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180

4)确认模块加载成功:

[root@rac1 ~]# grep Hangcheck /var/log/messages | tail -2

Sep7 19:53:03 rac1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 180 seconds, margin is 60 seconds).

Sep7 19:53:03 rac1 kernel: Hangcheck: Using monotonic_clock().

1.10raw设备配置

这一步是关键。因为redhat 5上raw与redhat 5有区别,官网提供设置的Raw的方法。按照上面的提示设置就好了。

Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5-OEL5 [ID 564580.1]

http://blog.csdn.net/xujinyang/article/details/6834880

先设置好multipath。做好分区:

[root@rac2 ~]# ll /dev/mapper/

total 0

crw------- 1 rootroot10, 62 Dec1 13:53 control

brw-rw---- 1 oracle oinstall 253,0 Dec1 13:55 DATA

brw-rw---- 1 oracle oinstall 253,9 Dec1 14:09 DATAp1

brw-rw---- 1 oracle oinstall 253,1 Dec1 13:55 FRA

brw-rw---- 1 oracle oinstall 253,8 Dec1 14:09 FRAp1

brw-rw---- 1 rootoinstall 253,2 Dec1 13:55 OCR

brw-rw---- 1 rootoinstall 253,3 Dec1 13:55 OCRp5

brw-rw---- 1 rootoinstall 253,4 Dec1 13:55 OCRp6

brw-rw---- 1 oracle oinstall 253,5 Dec1 13:55 OCRp7

brw-rw---- 1 oracle oinstall 253,6 Dec1 13:55 OCRp8

brw-rw---- 1 oracle oinstall 253,7 Dec1 13:55 OCRp9

将raw的配置信息,直接写入: /etc/rc.d/rc.local。这样启动自动加载。没有使用udev来管理。

[root@rac2 ~]# cat /etc/rc.d/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

modprobe hangcheck-timer

chown oracle:oinstall /dev/mapper/DATA

chown oracle:oinstall /dev/mapper/DATAp1

chown oracle:oinstall /dev/mapper/FRA

chown oracle:oinstall /dev/mapper/FRAp1

chmod 660 /dev/mapper/DATA

chmod 660 /dev/mapper/FRAp1

chmod 660 /dev/mapper/DATA

chmod 660 /dev/mapper/FRAp1

#####

# Oracle Cluster Registry (OCR) devices

#####

chown root:oinstall /dev/mapper/OCR*

chmod 660 /dev/mapper/OCR*

raw /dev/raw/raw1 /dev/mapper/OCRp5

raw /dev/raw/raw2 /dev/mapper/OCRp6

sleep 2

chown root:oinstall /dev/raw/raw1

chown root:oinstall /dev/raw/raw2

chmod 660 /dev/raw/raw1

chmod 660 /dev/raw/raw2

#####

# Oracle Cluster Voting disks

#####

chown oracle:oinstall /dev/mapper/OCRp7

chown oracle:oinstall /dev/mapper/OCRp8

chown oracle:oinstall /dev/mapper/OCRp9

raw /dev/raw/raw3 /dev/mapper/OCRp7

raw /dev/raw/raw4 /dev/mapper/OCRp8

raw /dev/raw/raw5 /dev/mapper/OCRp9

sleep 2

chown oracle:oinstall /dev/raw/raw3

chown oracle:oinstall /dev/raw/raw4

chown oracle:oinstall /dev/raw/raw5

chmod 660 /dev/raw/raw3

chmod 660 /dev/raw/raw4

chmod 660 /dev/raw/raw5

注意,这个还有一个raw的bug,需要打patch。在下面安装clusterware的时候会说明。

1.11安装配置ASM

(1)在两个node上都安装ASMLibs, tools, support三个rpm文件.注意内核版本要和linux一致。

# rpm -ivh *.rpm --nodeps --force

然后运行/etc/init.d/oracleasm configure

回答oracle , dba, y, y就可以了

linux挂在windows共享的盘

1.启动nfs服务:service nfs start

2. mount -o username=share,password=share //10.85.10.80/RAC /mnt

(2)创建ASM磁盘

/etc/init.d/oracleasm createdisk DATA/dev/mapper/DATAp1

/etc/init.d/oracleasm createdisk FRA/dev/mapper/FRAp1

创建好后,在这个node上运行/etc/init.d/oracleasm listdisks查看。

(3)在另外一个node上

/etc/init.d/oracleasm scandisks

/etc/init.d/oracleasm listdisks查看

1.12.在每个node上配置Oracle的profile文件

Su -oracle

Cd /home/oracle

修改oracle用户家目录下的.bash_profile。注意ORACLE_SID,和后面建库要一致。

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORA_CRS_HOME=$ORACLE_BASE/product/crs

export ORACLE_SID=rac1

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export ORA_NLS10=$ORACLE_HOME/nls/data

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export CLASSPATH=$ORACLE_HOME/JRE

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib

export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib

export THREADS_FLAG=native

export TEMP=/tmp

export TMPDIR=/tmp

二.安装Oracle 10gR2 clusterware

1.用Xmanager软件连上虚拟机之后运行clusterware的安装软件,Xmanager支持图形界面,所以能省很多事。

主要要先修改/etc/redhat-release文件,不然会报错。

[root@rac2 ~]# more /etc/redhat-release

redhat-4

2.确认你的安装目录是/u01/app/oracle/product/crs

3.增加相关结点信息

rac1 rac1-priv rac1-vip

rac2 rac2-priv rac2-vip

4.指定eth0的类型时public

5.指定OCR和Voting Disk

一般而言,如果采用存储来存放OCR和Voting Disk.存储本身就提供了redundancy策略,此时我们可以选择External Redundancy选项,此时Oracle就不在考虑软件冗余了。如果没有使用存储设备或者存储为RAID0,那么就可以使用Oracle自己提供的软件冗余机制Normal Redundancy选项,此时就会激活Mirror Location选项.用来指定镜像文件位置,Oracle的Clusterware在运行时会维护这个Mirror文件的内容同步。

OCR最多只有一份冗余:

/dev/raw/raw1

/dev/raw/raw2

Voting Disk最多可以定义2份冗余:

/dev/raw/raw3

/dev/raw/raw4

/dev/raw/raw5

6.开始安装了,结束时会提示用root在每个节点上运行orainstRoot.Sh和root.Sh脚本,在第二个结点上运行root.Sh后自动调用vipca这个命令。

RAC安装时需要执行4个脚本及意义

http://blog.csdn.net/xujinyang/article/details/6829665

在运行这2个脚本之前我们需要修改几个配置。

(1)打patch:Bug:4679769

这是Oracle raw在redhat 5下的bug。bug我传到csdn下载。下载地址:

http://download.csdn.net/source/2862150

参考:

Redhat 5.4 RAC multipath配置raw,运行root.sh时报错Failed to upgrade Oracle Cluster Registry configuration解决方法

http://blog.csdn.net/xujinyang/article/details/6834884

Executing root.sh errors with "Failed To Upgrade Oracle Cluster Registry Configuration" [ID 466673.1]

http://blog.csdn.net/xujinyang/article/details/6933166

(2)修改vipca和srvctl

注释掉这个参数:

LD_ASSUME_KERNEL=2.4.19
exportLD_ASSUME_KERNEL
unsetLD_ASSUME_KERNEL<<<==Linetobeadded

10gR2 RAC Install issues on Oracle EL5 or RHEL5 or SLES10 (VIPCA /SRVCTL / OUI Failures) [ID 414163.1]

http://blog.csdn.net/xujinyang/article/details/6834881

如果在vipca的时候报如下错误:

#vipca(root用户执行)
Error0(Native:listNetInterfaces:[3])
[Error0(Native:listNetInterfaces:[3])]

解决方法:

<CRS_HOME>/bin#./oifcfgsetif-globaleth0/192.168.1.0:public
<CRS_HOME>/bin#./oifcfgsetif-globaleth1/10.10.10.0:cluster_interconnect

--注意这里最后一个IP是0
<CRS_HOME>/bin#./oifcfggetif
eth0192.168.1.0globalpublic
eth110.10.10.0globalcluster_interconnect

问题3:An unexpected exception has been detected in native code outside the VM.

Unexpected Signal : 11 occurred at PC=0xB7503E29

Function=__libc_free+0x49

Library=/lib/tls/libc.so.6

修改主机名不正确导致的。

RHEL

/etc/sysconfig/network主机名,如果在/etc/hosts中解析不了。就报这个错误!

7.执行完root.sh, clusterware就安装结束.

三.安装Oracle 10gR2 database

1.检查Oracle的相关包。Oracle 10g需要如下包

binutils-2.15.92.0.2-10.EL4

compat-db-4.1.25-9

control-center-2.8.0-12

gcc-3.4.3-9.EL4

gcc-c++-3.4.3-9.EL4

glibc-2.3.4-2

glibc-common-2.3.4-2

gnome-libs-1.4.1.2.90-44.1

libstdc++-3.4.3-9.EL4

libstdc++-devel-3.4.3-9.EL4

make-3.80-5

pdksh-5.2.14-30

sysstat-5.0.5-1

xscreensaver-4.18-5.rhel4.2

libaio-0.3.96

To see which versions of these packages are installed on your system, run the following command:

rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common /

gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21

2.在Xmanager中用oracle用户,运行database的runInstaller

3.ORACLE安装目录指定到/u01/app/oracle/product/10.2.0/db_1

4.把2个node选择上

5.选择Install database Software only

6.会要求你用完全的root权限运行root.sh ,分别在2个node上一一运行

7.安装完毕

四.netca创建监听

1.oracle用户在一个node上运行netca

2.选择所有node

3.选择Listener configuration

4.添加一个LISTENER, 1521 port,然后结束配置

监听配置成功后,2个结点上的Listener都会坐位Application Resource注册到CRS中,这样CRS就可以监控Listener的运行状态。我们可以通过crs_stat -t -v查看Listener状态。

五.创建ASM实例

1.运行DBCA命令

2.选择configure Automatic Storage Management,来创建ASM实例

3.选择所有结点

4.输入密码。RAC的spfile必须放在共享目录下。参数文件我们选择第一个initialization parameter。也可以放在我们建的裸设备上。

5.修改asm参数:asm_diskstring = /dev/mapper/*,这样能让Oracle自动发现这些硬盘

6.ASM实例创建完后,用Create New来创建ASM磁盘组。我们用DATA来创建一个DATA组,FRA创建FLASH_RECOVERY_AREA组。

注:Redundancy一般选external就是也就是不考虑冗余,假如选normal则是mirror,至少要一个FailGroup.选High就是triple mirror,3倍镜像,需要三个FailGroup

7.创建完成后,能看到组的状态是Mount, ASM组必须mount之后才能使用。

ASM的相关信息参考blog:

Oracle ASM详解

http://blog.csdn.net/xujinyang/article/details/6837288

在这里,如果asm服务必须要启动。如果没有启动,就手动启动它。具体参考:

Oracle RAC启动与关闭

http://blog.csdn.net/xujinyang/article/details/6829632

[root@rac1 bin]# ./crs_stat -t

NameTypeTargetStateHost

------------------------------------------------------------

ora....SM2.asm applicationONLINEONLINErac1

ora....C1.lsnr applicationONLINEONLINErac1

ora.rac1.gsdapplicationONLINEONLINErac1

ora.rac1.onsapplicationONLINEONLINErac1

ora.rac1.vipapplicationONLINEONLINErac1

ora....SM1.asm applicationONLINEONLINErac2

ora....C2.lsnr applicationONLINEONLINErac2

ora.rac2.gsdapplicationONLINEONLINErac2

ora.rac2.onsapplicationONLINEONLINErac2

ora.rac2.vipapplicationONLINEONLINErac2

六.配置dbca创建数据库

1.用oracle用户运行dbca

2.选择custom database

3.输入数据库的全局名,比如orcl

4.输入系统的角色建立密码

5.选择ASM来存储,分别选择我们刚创建的DATA和FLA组

6.Database Services这里,你选择Add你一个新的service,随便叫名字,比如oltp。然后选择TAF Policy,是Basic。这个服务在RAC的Failover中会用到,如果在这里没有配置,也可以通过dbca命令,选择Services Management来进行配置。具体参考blog:

Oracle RAC Failover详解

http://blog.csdn.net/xujinyang/article/details/6829647

7.开始创建数据库

七.检查RAC运行状态

1. [root@rac1 bin]# ./srvctl status database -d rac

Instance rac2 is running on node rac1

Instance rac1 is running on node rac2

2.[root@rac1 bin]# ./crs_stat -t

NameTypeTargetStateHost

------------------------------------------------------------

ora.rac.dbapplicationONLINEONLINErac1

ora....oltp.cs applicationONLINEONLINErac2

ora....ac1.srv applicationONLINEONLINErac2

ora....ac2.srv applicationONLINEONLINErac1

ora....c1.inst applicationONLINEONLINErac2

ora....c2.inst applicationONLINEONLINErac1

ora....SM2.asm applicationONLINEONLINErac1

ora....C1.lsnr applicationONLINEONLINErac1

ora.rac1.gsdapplicationONLINEONLINErac1

ora.rac1.onsapplicationONLINEONLINErac1

ora.rac1.vipapplicationONLINEONLINErac1

ora....SM1.asm applicationONLINEONLINErac2

ora....C2.lsnr applicationONLINEONLINErac2

ora.rac2.gsdapplicationONLINEONLINErac2

ora.rac2.onsapplicationONLINEONLINErac2

ora.rac2.vipapplicationONLINEONLINErac2

小结:

RAC的安装步骤基本都差不多。主要的还是前期的准备工作。那个是关键。

------------------------------------------------------------------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics