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

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

2011-09-29 13:54 1136 查看
在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/ocrp1 200M

/dev/raw/raw2 /dev/mapper/ocrp2 200M

voting disk

/dev/raw/raw3 /dev/mapper/ocrp3 200M

/dev/raw/raw4 /dev/mapper/ocrp4 200M

/dev/raw/raw5 /dev/mapper/ocrp5 200M

ASM

/dev/mapper/DATAp1 10G Oracle Data

/dev/mapper/FRAp2 5G FRA

相关文档参考:



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

/article/1672782.html



RAW+ASM
的RAC 安装文档

/article/1673055.html



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

/article/1672784.html





一. 准备工作

1.1 安装操作系统

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



1.2 连接存储,配置Multipath

参考:

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

/article/1672680.html



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

/article/1672679.html



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

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

/article/1672825.html



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 时间同步配置

/article/1672697.html



linux 下修改日期和时间

/article/1672683.html



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相关参数调整

/article/1672968.html



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

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

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



1.10 raw 设备配置



这一步是关键。 因为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]

/article/1672825.html





先设置好multipath。 做好分区:

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

total 0

crw------- 1 root root 10, 62 Dec 1 13:53 control

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

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

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

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

brw-rw---- 1 root oinstall 253, 2 Dec 1 13:55 OCR

brw-rw---- 1 root oinstall 253, 3 Dec 1 13:55 OCRp5

brw-rw---- 1 root oinstall 253, 4 Dec 1 13:55 OCRp6

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

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

brw-rw---- 1 oracle oinstall 253, 7 Dec 1 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个脚本及意义

/article/1673053.html



在运行这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 解决方法

/article/1672823.html



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

/article/1672678.html



(2) 修改vipca 和 srvctl



注释掉这个参数:

LD_ASSUME_KERNEL=2.4.19

export LD_ASSUME_KERNEL

unset LD_ASSUME_KERNEL <<<== Line to be added



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

/article/1672824.html



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

# vipca (root用户执行)

Error 0(Native: listNetInterfaces:[3])

[Error 0(Native: listNetInterfaces:[3])]



解决方法:

<CRS_HOME>/bin # ./oifcfg setif -global eth0/192.168.1.0:public

<CRS_HOME>/bin # ./oifcfg setif -global eth1/10.10.10.0:cluster_interconnect

-- 注意这里最后一个IP是0

<CRS_HOME>/bin # ./oifcfg getif

eth0 192.168.1.0 global public

eth1 10.10.10.0 global cluster_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 详解

/article/1672781.html



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

Oracle RAC 启动与关闭

/article/1673060.html



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

Name Type Target State Host

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

ora....SM2.asm application ONLINE ONLINE rac1

ora....C1.lsnr application ONLINE ONLINE rac1

ora.rac1.gsd application ONLINE ONLINE rac1

ora.rac1.ons application ONLINE ONLINE rac1

ora.rac1.vip application ONLINE ONLINE rac1

ora....SM1.asm application ONLINE ONLINE rac2

ora....C2.lsnr application ONLINE ONLINE rac2

ora.rac2.gsd application ONLINE ONLINE rac2

ora.rac2.ons application ONLINE ONLINE rac2

ora.rac2.vip application ONLINE ONLINE rac2



六. 配置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 详解

/article/1673057.html



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

Name Type Target State Host

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

ora.rac.db application ONLINE ONLINE rac1

ora....oltp.cs application ONLINE ONLINE rac2

ora....ac1.srv application ONLINE ONLINE rac2

ora....ac2.srv application ONLINE ONLINE rac1

ora....c1.inst application ONLINE ONLINE rac2

ora....c2.inst application ONLINE ONLINE rac1

ora....SM2.asm application ONLINE ONLINE rac1

ora....C1.lsnr application ONLINE ONLINE rac1

ora.rac1.gsd application ONLINE ONLINE rac1

ora.rac1.ons application ONLINE ONLINE rac1

ora.rac1.vip application ONLINE ONLINE rac1

ora....SM1.asm application ONLINE ONLINE rac2

ora....C2.lsnr application ONLINE ONLINE rac2

ora.rac2.gsd application ONLINE ONLINE rac2

ora.rac2.ons application ONLINE ONLINE rac2

ora.rac2.vip application ONLINE ONLINE rac2



小结:

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





------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: