Feb 27

[原]在红旗5.0上基于ASM方式安装Oracle 10g RAC [1] 阴

linuxing , 16:52 , 数据库 » Oracle , 评论(0) , 引用(0) , 阅读(24864) , Via 本站原创 | |
 之前已经写了两篇文章:[原]oracle 10g RAC 安装配置指南[原]红旗DC 5.0上安装oracle 10g R2 RAC。但其中都没有提到Oracle推荐的ASM管理磁盘模式,今天我就用一个实例进行一下讲解。(大部分的操作步骤在上面的文章中都已经提过,我会比较简单的再说明一次)
一、拓扑图
二、安装前准备
1、操作系统
 使用一个得到Oracle支持的操作系统很重要,我这里使用的是红旗DC Server 5.0 for x86;Oracle版本是10g R2。
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
# Public Network - (eth0)
219.142.7.143   ora01
219.142.7.144   ora02

# Private Interconnect - (eth1)
10.0.0.1   int-ora01
10.0.0.2    int-ora02

# Public Virtual IP (VIP) addresses for - (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:ORACLE server session terminated by fatal error


引用
ORA-29702:error occurred in Cluster Group Service operation


4、配置系统环境(保证两台机器内容一致)
Oracle 强烈建议将默认的和最大的发送缓冲区大小(SO_SNDBUF 套接字选项)调整为 256KB,并将默认的和最大的接收缓冲区大小(SO_RCVBUF 套接字选项)调整为 256KB。 查看/etc/sysctl.conf文件是否如下面的内容:
引用
# Default setting in bytes of the socket receive buffer
net.core.rmem_default=262144
# Default setting in bytes of the socket send buffer
net.core.wmem_default=262144
# Maximum socket receive buffer size which may be set by using
# the SO_RCVBUF socket option
net.core.rmem_max=262144
# Maximum socket send buffer size which may be set by using
# the SO_SNDBUF socket option
net.core.wmem_max=262144

5、建立用户和组(两台机器上都要建立)
我准备使用 OCFS2 存储 Oracle 集群件软件需要共享的文件。(不能使用ASM)使用 OCFS2 时,集群中所有计算机上的 UNIX 用户 oracle 的 UID 以及 UNIX 组 dba 的 GID 都必须相同。如果 UID 或 GID 不同,则 OCFS 文件系统中的文件将显示为“unowned”,甚至可能被其他用户所拥有。对于本文而言,oracle UID 使用 700,dba GID 使用 700:

su -
mkdir -p /u01/app
groupadd -g 700 dba
useradd -u 700 -g 700 -d /u01/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle
chown -R oracle:dba /u01
passwd oracle

6、配置Oracle用户的环境变量(两台机器分别建立)
su - oracle
vi .bash_profile

增加如下内容:
引用

# User specific environment and startup programs
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_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin

# Each RAC node must have a unique ORACLE_SID.(i.e. orcl1, orcl2,...)
export ORACLE_SID=orcl1

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

※注意,SID必须把两台机器修改为不一样,例如把ora02机器修改为:
引用
export ORACLE_SID=orcl2

7、为OCFS2集群件创建挂载点(保证两台机器内容一致)

su -
mkdir -p /u02/oradata/orcl
chown -R oracle:dba /u02

8、创建共享磁盘分区(其中一台机器运行即可)
下面是对共享磁盘进行分区,将使用 OCFS2 来存储 Oracle 的集群件软件要共享的两个文件。然后是创建三个 ASM 卷;两个 ASM 卷用于所有物理数据库文件(数据/索引文件、联机重做日志文件、控制文件、SPFILE 和归档重做日志文件),另一个用于闪回恢复区。
点击在新窗口中浏览此图片
先用fdisk -l查看共享磁盘的设备号,如:/dev/sdb,然后用
fdisk /dev/sdb

※若你已经划分过分区,则在划分新分区后,用下面的命令告诉核心:
# partprobe

结果如下:
引用
  Device Boot      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
实际上,红旗DC Server 5.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=250 32000 100 128" >> /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) 开始(在 Oracle 10g 第 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 "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modprobe.conf
[root@ora01 ~]# modprobe hangcheck-timer
[root@ora01 ~]# grep Hangcheck /var/log/messages |tail -2
Feb 27 17:06:21 ora01 kernel: Hangcheck: starting hangcheck timer 0.5.0 (tick is 30 seconds, margin is 180 seconds).

上面证明测试没有问题,Oracle 会负责在需要时加载 hangcheck-timer 内核模块,所以我们不需要修改其他配置即可。当然,为了防止以外,你可以在/etc/rc.local里面增加/sbin/modprobe hangcheck-timer命令。
# echo "/sbin/modprobe hangcheck-timer" >> /etc/rc.local

11、配置RAC节点以允许远程访问(两台都要配置)
在 RAC 节点上运行 Oracle Universal Installer 时,它将使用 rsh(或 ssh)命令将 Oracle 软件复制到 RAC 集群中的所有其他节点上。运行 Oracle Installer (runInstaller) 的节点上的 oracle UNIX 帐户必须为 RAC 集群中的所有其他节点所信任。因此,应该能够在将要从中运行 Oracle Installer 的 Linux 服务器上,不使用口令对集群中的所有其他 Linux 服务器运行 r* 命令(如 rsh、rcp 和 rlogin)。rsh 后台程序使用位于用户(oracle 的)主目录中的 /etc/hosts.equiv 文件或 .rhosts 文件验证用户。
第一步,就是先把rsh、rlogin等服务打开:
# chkconfig rsh on
# chkconfig rlogin on
# service xinetd reload

第二步,是建立信任关系,在每个节点上都建立/etc/host.equiv文件:
# touch /etc/hosts.equiv
# chmod 600 /etc/hosts.equiv
# chown root.root /etc/hosts.equiv
修改hosts.equiv文件,添加各个节点:
引用
# cat /etc/hosts.equiv
+ora01 oracle
+ora02 oracle
+int-ora01 oracle
+int-ora02 oracle

第三步,去掉系统默认的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命令查看更改是否成功:
# which rsh
/usr/bin/rsh

第四步,进行手动测试,在两个节点上分别用oracle用户测试信任建立是否成功:
# su - oracle
$ rsh ora01 ls -l /
$ rsh ora02 ls -l /
$ rsh int-ora01 ls -l /
$ rsh int-ora02 ls -l /

如果都不需要验证密码,则信任关系已经建立。
12、在启动安装程序前,再一次验证上述的配置是否已经设置成功!这很重要!
三、准备共享磁盘
这个留待明天吧!!
Tags: , , ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]