Oracle系列:安装Oracle RAC数据库(一)

   Oracle RAC数据库的安装相对单机数据库复杂一些,因为整个安装过程涉及网络、操作系统、存储等方面,一个环节设置不当,都可能导致安装失败。本文将详细的讲述RAC数据库的安装过程。

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

Oracle系列:安装Oracle RAC数据库(一)


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

  1. 桌面环境:xwindows system、GNOME desktop environment。  
  2.  开发工具:development tools、x software development、gnome software development、kde software development。          

 

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

Oracle系列:安装Oracle RAC数据库(一)

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

Oracle系列:安装Oracle RAC数据库(一)

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文件,在两个节点上添加如下配置信息:

 
  
  
  
  
  1. 192.168.12.231          node-rac1  
  2. 192.168.12.232          node-rac2  
  3. 192.168.12.230          node-vip1  
  4. 192.168.12.240          node-vip2  
  5. 10.10.10.1              node-priv1  
  6. 10.10.10.2              node-priv2  

4、检查所需软件包
在每个节点上执行相同的操作:
     执行下面的命令:
 rpm -q make binutils  libaio-devel libaio elfutils-libelf-devel compat-libstdc++-33 libgcc  gcc gcc-c++ glibc sysstat libstdc++ libstdc++-devel  unixODBC-devel unixODBC
 如果出现某个软件包没有安装,请安装该软件包。

5、配置系统内核参数
 由于Linux的内核参数信息都存在内存中,可以通过命令直接修改,并且修改后直接生效,但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。
 Oracle对Linux系统内核参数有严格的要求,如果设置不当,就会导致安装失败,编辑/etc/sysctl.conf文件,修改后的参数配置如下所示:
 

 
  
  
  
  
  1. net.ipv4.ip_forward = 0 
  2. net.ipv4.conf.default.rp_filter = 1 
  3. net.ipv4.conf.default.accept_source_route = 0 
  4. kernel.sysrq = 0 
  5. kernel.core_uses_pid = 1 
  6. net.ipv4.tcp_syncookies = 1 
  7. kernel.msgmnb = 65536 
  8. kernel.msgmax = 65536 
  9. net.core.rmem_default = 4194304 
  10. net.core.rmem_max = 4194304 
  11. net.core.wmem_default = 262144 
  12. net.core.wmem_max = 262144 
  13. kernel.shmmax = 1073741823 
  14. kernel.sem = 250 32000 100 128  
  15. fs.file-max = 65536 
  16. net.ipv4.ip_local_port_range = 1024 65000  


下面简单讲述下常用的几个内核参数的含义:
 kernel.shmmax:表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存一半,不过大一点也没关系,这里设定的为1G。
 kernel.shmmni:表示单个共享内存段的最小值,一般为4KB,即4096bit
 kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4k,也就是4096字节。
 fs.file-max:表示文件句柄的最大数量。文件句柄表示在linux系统中可以打开的文件数量。
 net.ipv4.ip_local_port_range:表示端口的范围,为指定的内容。
 kernel.sem:用来设置Linux的信号量。
可以使用以下命令查看:
[root@node-rac1 rac]#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,在文件最后添加如下内容:

 
  
  
  
  
  1. if [ $USER = "oracle" ]; then  
  2.         if [ $SHELL = "/bin/ksh" ]; then  
  3.               ulimit -p 16384  
  4.               ulimit -n 65536  
  5.                 else   
  6.               ulimit -u 16384 -n 65536  
  7.                 fi   
  8. 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=30 hangcheck_margin=180
然后,将hangcheck-timer模块配置为自启动:
[root@node-rac1 ~]#vi /etc/rc.d/rc.local
在文件的末尾加入一行:
/sbin/modprobe hangcheck_timer
接着,启动hangcheck:
[root@node-rac1 ~]# /sbin/modprobe hangcheck_timer
最后,检查hangcheck是否成功启动:
[root@node-rac1 ~]#grep hangcheck /var/log/messages | tail -2
Aug 26 19:08:17 Mysql1 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)
这样,用户和组创建就完毕了。

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

 
  
  
  
  
  1. export ORACLE_BASE=/u01/oracle   
  2. export ORACLE_HOME=$ORACLE_BASE/product/11.0.6/rac_db   
  3. export ORA_CRS_HOME=/app/crs/product/11.0.6/crs   
  4. export ORACLE_PATH=$ORACLE_BASE/common/oracle/sql:.:$ORACLE_HOME/rdbms/admin   
  5. export ORACLE_SID=racdb1 
  6. export NLS_LANG=AMERICAN_AMERICA.zhs16gbk   
  7. export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"   
  8. export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin   
  9. export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin   
  10. export PATH=${PATH}:$ORACLE_BASE/common/oracle/bin   
  11. export ORACLE_TERM=xterm   
  12. export TNS_ADMIN=$ORACLE_HOME/network/admin   
  13. export ORA_NLS10=$ORACLE_HOME/nls/data   
  14. export LD_LIBRARY_PATH=$ORACLE_HOME/lib   
  15. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib   
  16. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib   
  17. export CLASSPATH=$ORACLE_HOME/JRE   
  18. export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib   
  19. export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib   
  20. export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib   
  21. export THREADS_FLAG=native   
  22. export TEMP=/tmp   
  23. export TMPDIR=/tmp  

根据oracle官方的建议,这里将oracle rac数据库程序和oracle clusterware软件安装在了不同的目录。而“ORACLE_SID”在节点2上应该设置为“export ORACLE_SID=racdb2”
 设置完毕oracle用户环境变量后,还需要在两个节点创建环境变量中指定的安装目录,基本操作如下:
 

 
  
  
  
  
  1. [root@node-rac1 ~]# mkdir -p /u01/oracle/product/11.0.6/rac_db  
  2. [root@node-rac1 ~]# mkdir -p /app/oracrs/product/11.0.6/crs  
  3. [root@node-rac1 ~]# chown -R oracle:oinstall /u01/oracle  
  4. [root@node-rac1 ~]#chown -R oracle:oinstall /app  

11、配置节点间SSH信任
 在安装RAC过程中,OUI程序会使用ssh和scp命令来执行远程拷贝操作,将文件从安装节点拷贝到其它节点上,如果节点间不相互信任,那么传输过程就需要输入密码,从而导致安装失败,因此必须在所有的节点上为oracle用户配置节点间的互信。
   1 在每个节点上创建 RSA密钥和公钥
   (1)以 oracle 用户登录
   (2)在 oracle用户的根目录内创建.ssh目录并设置读取权限

 
  
  
  
  
  1.    [oracle@node-rac1 ~]$ mkdir ~/.ssh   
  2.    [oracle@node-rac1 ~]$ chmod 700 ~/.ssh   
  3.    (3)使用ssh-keygen命令生成基于SSH协议的RSA密钥  
  4.     [oracle@node-rac1 ~]$ cd ~/.ssh  
  5. [oracle@node-rac1 .ssh]$ ssh-keygen -t rsa  
  6. Generating public/private rsa key pair.  
  7. Enter file in which to save the key (/home/oracle/.ssh/id_rsa):   
  8. Enter passphrase (empty for no passphrase):   
  9. Enter same passphrase again:   
  10. Your identification has been saved in /home/oracle/.ssh/id_rsa.  
  11. Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.  
  12. The key fingerprint is:  
  13. dd:69:5a:aa:e6:85:88:a4:07:72:ab:15:7b:3b:4a:77 oracle@node-rac1   

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

2  整合公钥文件
     (1)以 Oracle 用户登录
     (2)在要执行Oracle安装程序的节点node-rac1 上执行如下操作:

 
  
  
  
  
  1. [oracle@node-rac1 ~] $ cd ~/.ssh   
  2. [oracle@node-rac1 .ssh]$ ssh node-rac1 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys    
  3. [oracle@node-rac1 .ssh]$ ssh node-rac2 cat /home/oracle/.ssh/id_rsa.pub >> authorized_keys   
  4. [oracle@node-rac1 .ssh]$ chmod 600 ~/.ssh/authorized_keys  
  5. [oracle@node-rac1 .ssh]$scp authorized_keys  node-rac2:/home/oracle/.ssh/  

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

 
  
  
  
  
  1. 首先在node-rac1节点上执行:   
  2.  [oracle@node-rac1 ~]$ ssh node-rac1 date   
  3.  [oracle@node-rac1 ~]$ ssh node-rac2 date   
  4.  然后在node-rac2节点上执行  
  5.  [oracle@node-rac2 ~]$ ssh node-rac1 date   
  6.  [oracle@node-rac2 ~]$ ssh node-rac2 date   

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


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

Oracle系列:安装Oracle RAC数据库(一)


全部操作执行完毕,重启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文件,修改完成的内容如下:
 

 
  
  
  
  
  1. ACTION=="add",KERNEL=="sdb5",RUN+="/bin/raw /dev/raw/raw1 %N"  
  2. ACTION=="add",KERNEL=="sdb6",RUN+="/bin/raw /dev/raw/raw2 %N"  
  3. …………  
  4. ACTION=="add",KERNEL=="sdc8",RUN+="/bin/raw /dev/raw/raw9 %N"  
  5. ACTION=="add",KERNEL=="sdc9",RUN+="/bin/raw /dev/raw/raw10 %N"  
  6. KERNEL=="raw1", OWNER="oracle"GROUP="oinstall"MODE="644" 
  7. KERNEL=="raw2", OWNER="oracle"GROUP="oinstall"MODE="644" 
  8. KERNEL=="raw3", OWNER="oracle"GROUP="oinstall"MODE="660" 
  9. …………  
  10. KERNEL=="raw9", OWNER="oracle"GROUP="oinstall"MODE="660" 
  11. KERNEL=="raw10", OWNER="oracle"GROUP="oinstall"MODE="660" 


然后启动udev服务生成raw设备:
[root@node-rac1 /]# start_udev
Starting udev:                                             [  OK  ]
接着验证一下raw设备是否生成:
 

 
  
  
  
  
  1. [root@node-rac1 /]#  ll /dev/raw/raw*  
  2. crw-r--r-- 1 oracle oinstall 162,  1 Aug 27 00:13 /dev/raw/raw1  
  3. crw-rw---- 1 oracle oinstall 162, 10 Aug 27 00:13 /dev/raw/raw10  
  4. crw-r--r-- 1 oracle oinstall 162,  2 Aug 27 00:13 /dev/raw/raw2  
  5. crw-rw---- 1 oracle oinstall 162,  6 Aug 27 00:13 /dev/raw/raw6  
  6. crw-rw---- 1 oracle oinstall 162,  7 Aug 27 00:13 /dev/raw/raw7  
  7. ……………..  
  8. crw-rw---- 1 oracle oinstall 162,  8 Aug 27 00:13 /dev/raw/raw8  
  9. crw-rw---- 1 oracle oinstall 162,  9 Aug 27 00:13 /dev/raw/raw9  

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

未完待续!

本文出自 “技术成就梦想” 博客,请务必保留此出处http://ixdba.blog.51cto.com/2895551/880511

你可能感兴趣的:(oracle,数据库,操作系统)