安装Oracle RAC数据库前的准备工作

 

安装Oracle RAC数据库

1、 安装前的系统配置需求

       安装Oracle Rac数据库需要的组件可以分为软硬件两部分,下面是一个软硬件推荐配置:

      

       为了方便安装RAC数据库,在安装操作系统时,建议选择如下系统包:

l      桌面环境:xwindows systemGNOME desktop environment

l      开发工具:development toolsx software developmentgnome software developmentkde software development

1、 安装前的系统配置需求

       更详细的拓扑结构信息,参看下图:

      

1、 安装前的系统配置需求

       Oracle Rac数据库涉及到公用网络和私有网络,因此要做网络划分和IP地址规划,下表列出了要安装的RAC数据库对应的IP地址、主机名以及网络连接类型:

两个节点:两个实例,对应一个数据库。

2、设置数据库安装资源

       安装RAC数据库需要的软件包分为三个部分,分别是oracle RAC安装程序包、Oracle ASMLib工具包以及系统补丁包。这里Oracle的安装版本为oracle11g,详细的软件包信息如下:

(1)Oracle 11g Release 1 (11.1.0.6.0)软件包

       下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/111060-linuxsoft-085130.html

软件包名称:

linux_11gR1_database_1013.zip

linux_x86_11gR1_clusterware.zip

       软件包说明:总共需要下载两个安装程序,一个是Oracle Rac安装程序包,另一个是Oracle ClusterWare安装程序包。

(2)Oracle ASMLib工具包

       下载地址:http://www.oracle.com/technetwork/topics/linux/downloads/rhel5-084877.html

软件包名称:

oracleasmlib-2.0.4-1.el5.i386.rpm

oracleasm-2.6.18-194.11.1.el5-2.0.5-1.el5.i686.rpm

oracleasm-support-2.1.3-1.el5.i386.rpm

软件包说明:这三个软件包是使用ASM存储管理方式必须的驱动工具包。

(3)系统补丁包

       下载地址:http://www.idevelopment.info/data/Oracle/DBA_tips/Oracle11gRAC/Install11gR1RACOnCentOS51/RPMS/redhat-release-5-1.0.el5.centos.1.i386.rpm

软件包名称:redhat-release-5-1.0.el5.centos.1.i386.rpm

       软件包说明:由于Centos不在Oracle支持平台之列,所以安装检测时无法通过的,通过安装这个软件包,可以使安装检测顺利通过。

3、配置主机解析文件

       为了使每个主机间可以正常通信,需要在每个节点上修改本地解析文件,即/etc/hosts文件,在两个节点上添加如下配置信息:

192.168.12.231          node-rac1

192.168.12.232          node-rac2

192.168.12.230          node-vip1

192.168.12.240          node-vip2

10.10.10.1              node-priv1

10.10.10.2              node-priv2

4、检查所需软件包

在每个节点上执行相同的操作:

     执行下面的命令:

         rpm -q make binutils  libaio-devel libaio elfutils-libelf-develcompat-libstdc++-33 libgcc  gcc gcc-c++glibc sysstat libstdc++ libstdc++-devel unixODBC-devel unixODBC

 

       如果出现某个软件包没有安装,请安装该软件包。

5、配置系统内核参数

         由于Linux的内核参数信息都存在内存中,可以通过命令直接修改,并且修改后直接生效,但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。

       Oracle对Linux系统内核参数有严格的要求,如果设置不当,就会导致安装失败,编辑/etc/sysctl.conf文件,修改后的参数配置如下所示:

net.ipv4.ip_forward= 0

net.ipv4.conf.default.rp_filter= 1

net.ipv4.conf.default.accept_source_route= 0

kernel.sysrq = 0

kernel.core_uses_pid= 1

net.ipv4.tcp_syncookies= 1

kernel.msgmnb =65536

kernel.msgmax =65536

net.core.rmem_default= 4194304

net.core.rmem_max= 4194304

net.core.wmem_default= 262144

net.core.wmem_max= 262144

kernel.shmmax =1073741823

kernel.sem = 25032000 100 128

fs.file-max =65536

net.ipv4.ip_local_port_range= 1024 65000

5、配置系统内核参数

       下面简单讲述下常用的几个内核参数的含义:

l      kernel.shmmax表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存一半,不过大一点也没关系,这里设定的为1G

l      kernel.shmmni表示单个共享内存段的最小值,一般为4KB,即4096bit

l      kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4k,也就是4096字节。

l      fs.file-max:表示文件句柄的最大数量。文件句柄表示在linux系统中可以打开的文件数量。

l      net.ipv4.ip_local_port_range:表示端口的范围,为指定的内容。

l      kernel.sem:用来设置Linux的信号量。

可以使用以下命令查看:

[root@node-rac1rac]#cat/proc/sys/kernel/sem

250 32000 32 128

对于输出的这四个值的含义,分别介绍如下:

Ø    SEMMSL:此参数用于控制每个信号集的最大信号数,Oracle建议将SEMMNI设置为不小于100。

Ø    SEMMNS:此参数用于控制整个Linux系统中信号(而不是信号集)的最大数量。

Ø    SEMOPM:此参数用于控制每个semop系统调用可以执行的信号操作数,Oracle建议将SEMOPM的值设置为不少于100

Ø    SEMMNI:此内核参数用于控制整个Linux系统中信号集的最大数量,Oracle建议将SEMMNI设置为不小于100。

 

6、设置 Shell对Oracle用户的限制

root用户身份,在每个节点上执行相同的操作。

首先,修改/etc/security/limits.conf,在文件最后添加如下内容:

oracle  soft  nproc 2047

oracle  hard  nproc  16384

oracle  soft  nofile  1024

oracle  hard  nofile 65536

接着,修改/etc/pam.d/login,在文件最后添加如下内容:

session required /lib/security/pam_limits.so

最后,修改/etc/profile,在文件最后添加如下内容:

if [ $USER = "oracle" ]; then

        if [ $SHELL ="/bin/ksh" ]; then

              ulimit-p 16384

              ulimit-n 65536

                else

              ulimit-u 16384 -n 65536

                fi

fi

所有修改完毕,重启所有Linux系统。

 

7、配置hangcheck-timer内核模块

root用户身份执行,在所有节点上做如下配置。

查看模块是否存在:

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

接着,编辑/etc/modprobe.conf

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

在文件的末尾加入一行:

options hangcheck-timer hangcheck_tick=30hangcheck_margin=180

然后,将hangcheck-timer模块配置为自启动

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

在文件的末尾加入一行:

/sbin/modprobe hangcheck_timer

接着,启动hangcheck:

[root@node-rac1~]# /sbin/modprobehangcheck_timer

最后,检查hangcheck是否成功启动:

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

Aug 26 19:08:17Mysql1 kernel: Hangcheck: starting hangcheck timer 0.9.0 (tick is 30 seconds,margin is 180 seconds).

如果显示上面输出信息说明已经成功启动hangcheck。

 

8、配置系统安全设置

       由于在安装RAC数据库时,安装进程需要在每个节点间传送数据,这就要求每个节点间是互信任的,因此,最简单的方式就是关闭系统的安全限制,常用的方式是关闭Linux系统的iptables以及selinux在每个节点上执行相同的操作。

       关闭iptables很简单,可以直接执行如下命令:

       [root@node-rac1 ~]# iptables –F

       [root@node-rac1 ~]# /etc/init.d/iptables  save

       最后,将selinux禁用即可,也就是修改/etc/selinux/config文件,修改后的内容为:

       SELINUX=disabled

       SELINUXTYPE=targeted

9、创建Oracle用户和组

       在安装进行之前,需要创建两个用户组和一个用户,分别用于oracle安装和oracle管理,在两个节点执行相同的操作,操作如下:

[root@node-rac1~]#groupadd –g 1001 dba

[root@node-rac1~]#groupadd –g 1002 oinstall

[root@node-rac1~]#useradd -u 1001 -g oinstall-G dba oracle

然后,给oracle用户设置密码:

[root@node-rac1~]# passwd oracle

       最后,确认匿名用户nobody是否存在于系统中,因为在安装完成后nobody用户需要执行一些扩展任务

[root@node-rac1~]# id nobody

uid=99(nobody)gid=99(nobody) groups=99(nobody)

jesse:需要验证是否有noboday用户

这样,用户和组创建就完毕了。

10、设置Oracle用户环境变量

       用文本编辑器vi编辑/home/oracle/.bash_profile文件,在文件最后添加如下内容,这里以node-rac1为例,同理,需要在节点node-rac2也执行相同的操作。

exportORACLE_BASE=/u01/oracle

#oracle程序的基本目录

exportORACLE_HOME=$ORACLE_BASE/product/11.0.6/rac_db

#

exportORA_CRS_HOME=/app/crs/product/11.0.6/crs

exportORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin

exportORACLE_SID=racdb1

#第一个节点设置为racdb1,第二个节点这里需要设置为racdb2

exportNLS_LANG=AMERICAN_AMERICA.zhs16gbk

#语言编码的设置

exportNLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

exportPATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_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

export TEMP=/tmp

exportTMPDIR=/tmp

10、设置Oracle用户环境变量

       根据oracle官方的建议,这里将oracle rac数据库程序和oracle clusterware软件安装在了不同的目录。“ORACLE_SID”在节点2上应该设置为“export ORACLE_SID=racdb2”

       设置完毕oracle用户环境变量后,还需要在两个节点创建环境变量中指定的安装目录,基本操作如下:

[root@node-rac1~]# mkdir -p/u01/oracle/product/11.0.6/rac_db

[root@node-rac1~]# mkdir -p /app/oracrs/product/11.0.6/crs

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

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

11、配置节点间SSH信任

       在安装RAC过程中,OUI程序会使用sshscp命令来执行远程拷贝操作,将文件从安装节点拷贝到其它节点上,如果节点间不相互信任,那么传输过程就需要输入密码,从而导致安装失败,因此必须在所有的节点上为oracle用户配置节点间的互信。

   1     在每个节点上创建 RSA密钥和公钥

   (1) oracle 用户登录

   (2) oracle用户的根目录内创建.ssh目录并设置读取权限

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

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

   (3)使用ssh-keygen命令生成基于SSH协议的RSA密钥

    [oracle@node-rac1 ~]$ cd ~/.ssh

[[email protected]]$ssh-keygen   -t    rsa

Generatingpublic/private rsa key pair.

Enter file inwhich to save the key (/home/oracle/.ssh/id_rsa):

Enter passphrase(empty for no passphrase):

Enter samepassphrase again:

Youridentification has been saved in /home/oracle/.ssh/id_rsa.

Your public keyhas been saved in /home/oracle/.ssh/id_rsa.pub.

The keyfingerprint is:

dd:69:5a:aa:e6:85:88:a4:07:72:ab:15:7b:3b:4a:77oracle@node-rac1

在提示保存私钥(key)和公钥(public key)的位置时,选择使用默认值,然后依次直接回车即可。

11、配置节点间SSH信任

整合公钥文件

     (1)以 Oracle 用户登录

     (2)在要执行Oracle安装程序的节点node-rac1 上执行如下操作:

  [oracle@node-rac1 ~] $ cd ~/.ssh

  [oracle@node-rac1 .ssh]$ ssh node-rac1 cat/home/oracle/.ssh/id_rsa.pub >> authorized_keys 

  [oracle@node-rac1 .ssh]$ ssh node-rac2 cat/home/oracle/.ssh/id_rsa.pub >> authorized_keys

  [oracle@node-rac1 .ssh]$ chmod 600 ~/.ssh/authorized_keys

  [oracle@node-rac1 .ssh]$scp authorized_keys  node-rac2:/home/oracle/.ssh/

     这个操作过程是将两个节点生成的公钥文件整合为一个authorized_keys文件,然后进行授权,并将authorized_keys拷贝到另一个节点。

(3)测试SSH互信

   首先在node-rac1节点上执行:

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

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

    然后在node-rac2节点上执行

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

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

如果不需要输入密码就出现系统当前日期,就说明SSH互信已经配置成功了。

12、配置共享存储系统

       在讲述的这个环境中,共享存储由一台ISCSI-target主机来提供,通过以太网,假定将ISCSI-target主机两块本地磁盘/dev/sdb/dev/sdc共享给RAC数据库的两个节点,由于ISCSI的安装已经在前面章节进行了详细讲述,这里不再介绍,然后对两块共享磁盘分别划分了五个分区,每个分区的用途如下表:

       全部操作执行完毕,重启RAC数据库的两个节点。

13、建立和配置raw设备

       关于raw设备的使用,从Centos4版本到Centos5发生了很大变化,在Centos4以前版本中可以通过/etc/sysconfig/rawdevices和/etc/init.d/rawdevices文件来创建和配置raw设备,而在Centos5以后,raw必须要通过 udev来管理raw,并且raw命令的位置从/usr/bin/raw变为/bin/raw这从安全方面改进了不少,但是仍然兼容之前的配置方式,因此在Centos5版本中配置raw的方法有两种:

(1)手动建立/etc/sysconfig/rawdevices文件,然后从其它操作系统上拷贝/etc/init.d/rawdevices文件到本机,修改/etc/init.d/rawdevices文件中raw命令的路径,然后就可以通过/etc/init.d/rawdevices来启动和关闭 raw文件了。

2)通过udev来管理raw,添加raw设备对应的配置文件为/etc/udev/rules.d/60-raw.rules

       这里采用第二种方式来建立和配置raw设备,首先修改/etc/udev/rules.d/60-raw.rules文件,修改完成的内容如下:

ACTION=="add",KERNEL=="sdb5",RUN+="/bin/raw/dev/raw/raw1 %N"

ACTION=="add",KERNEL=="sdb6",RUN+="/bin/raw/dev/raw/raw2 %N"

…………

ACTION=="add",KERNEL=="sdc8",RUN+="/bin/raw/dev/raw/raw9 %N"

ACTION=="add",KERNEL=="sdc9",RUN+="/bin/raw/dev/raw/raw10 %N"

KERNEL=="raw1",OWNER="oracle", GROUP="oinstall", MODE="644"

KERNEL=="raw2",OWNER="oracle", GROUP="oinstall", MODE="644"

KERNEL=="raw3",OWNER="oracle", GROUP="oinstall", MODE="660"

…………

KERNEL=="raw9",OWNER="oracle", GROUP="oinstall", MODE="660"

KERNEL=="raw10",OWNER="oracle", GROUP="oinstall", MODE="660"

 

13、建立和配置raw设备

       然后启动udev服务生成raw设备:

[root@node-rac1/]# start_udev

Startingudev:                                            [  OK  ]

接着验证一下raw设备是否生成:

[root@node-rac1/]#  ll /dev/raw/raw*

crw-r--r--1 oracle oinstall 162,  1 Aug 27 00:13/dev/raw/raw1

crw-rw----1 oracle oinstall 162, 10 Aug 27 00:13 /dev/raw/raw10

crw-r--r--1 oracle oinstall 162,  2 Aug 27 00:13/dev/raw/raw2

crw-rw----1 oracle oinstall 162,  6 Aug 27 00:13/dev/raw/raw6

crw-rw----1 oracle oinstall 162,  7 Aug 27 00:13/dev/raw/raw7

……………..

crw-rw----1 oracle oinstall 162,  8 Aug 27 00:13 /dev/raw/raw8

crw-rw----1 oracle oinstall 162,  9 Aug 27 00:13/dev/raw/raw9

从输出可以看出,raw设备已经生成,并且相关权限也自动加载。

发布了209 篇原创文章 · 获赞 23 · 访问量 37万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章