ORACLE RAC 环境搭建

时间:2013年07月23日 | 分类:Oracle高可用 | 评论:1 条 | 浏览:1,959 次

Oracle rac 环境搭建配置:[在RHEL5上搭建RAC环境,节点为双网卡]

node1和node2 节点的配置:

(1).关闭 iptables、禁用 selinux.

  1. /etc/init.d/iptables stop   # 临时关闭防火墙  
  2. Chkconfig  iptables  off    # 关闭防火墙开机启动  
  3. Setenforce 0                # 临时关闭selinux  
  4. 将 /etc/selinux/config 中 Selinux 修改为disabled   # 永久关闭selinux  

(2).配置hosts文件(/etc/hosts)

  1. Vim  /etc/hosts  
  2. 文件修改如下:[ 解析文件,尽量写成标准格式]  
  3. 127.0.0.1 localhost.localdomain localhost  
  4. ::1 localhost6.localdomain6 localhost6  
  5. # Public Network - (eth0)  
  6.   192.168.1.110   rac1.xcg.com    rac1  
  7.   192.168.1.111   rac2.xcg.com    rac2  
  8. # Private Interconnect - (eth1)  
  9.   10.0.0.110    rac1-priv.xcg.com   rac1-priv  
  10.   10.0.0.111    rac2-priv.xcg.com   rac2-priv  
  11. # Public Virtual IP (VIP) addresses - (eth0)  
  12.   192.168.1.66   rac1-vip  
  13.   192.168.1.88   rac2-vip  
  14. # Private Storage Network for Openfiler - (eth1)  # 存储没有做多路冗余  
  15.   192.168.1.120     storage.xcg.com   storage  

(3).安装相关RPM包[安装相应名字的RPM包即可]

  1. binutils-2.15.92.0.2-13.EL4  
  2. compat-db-4.1.25-9  
  3. compat-libstdc++-296-2.96-132.7.2  
  4. control-center-2.8.0-12  
  5. gcc-3.4.3-22.1.EL4  
  6. gcc-c++-3.4.3-22.1.EL44  
  7. glibc-2.3.4-2.9  
  8. glibc-common-2.3.4-2.9  
  9. gnome-libs-1.4.1.2.90-44.1  
  10. libstdc++-3.4.3-22.1  
  11. libstdc++-devel-3.4.3-22.1  
  12. make-3.80-5  
  13. pdksh-5.2.14-30  
  14. sysstat-5.0.5-1  
  15. xscreensaver-4.18-5.rhel4.2  
  16. setarch-1.6-1  
  17. libaio-0.3.103-3  
  18. libXp  

(4).修改参数

A.内核参数

  1. Vim  /etc/sysctl.conf  
  2. kernel.shmall = 2097152  
  3. kernel.shmmax =      # 内存的一半  
  4. kernel.shmmni = 4096  
  5. kernel.sem = 250 32000 100 128  
  6. fs.file-max = 65536  
  7. net.ipv4.ip_local_port_range = 1024 65000  
  8. net.core.rmem_default = 262144  
  9. net.core.rmem_max = 262144  
  10. net.core.wmem_default = 262144  
  11. net.core.wmem_max = 262144  
  12.   
  13. /sbin/sysctl  -p   # 使配置生效  

B.对进程数和打开的文件数设置限制

  1. Vim   /etc/security/limits.conf  
  2. oracle           soft    nproc   2047  
  3. oracle           hard    nproc   16384  
  4. oracle           soft    nofile  1024  
  5. oracle           hard    nofile  65536  
  6.   
  7. Vim  /etc/pam.d/login   
  8. session    required     /lib/security/pam_limits.so  

C.配置  Hangcheck  计时器

  1. Vim  /etc/rc.d/rc.local   
  2. modprobe  hangcheck-timer hangcheck_tick=30  hangcheck_margin=180  

D.修改系统版本:

  1. Vim  /etc/redhat-release  # 将里面的5 改为 4  

(5).创建组、oracle用户等[ 注意新建用户的ID号一致 ]

  1. mkdir /u01/app -p  
  2. /usr/sbin/groupadd oinstall   
  3. /usr/sbin/groupadd dba   
  4. /usr/sbin/useradd   -g  oinstall  -G   dba  -d  /u01/app/oracle  oracle   
  5. passwd  oracle   # 为oracle用户设置密码,密码建议为oracle  
  6. chown -R 775 oracle.oinstall  /u01  
  7. xhost +  

(6).设置oracle用户的.bash_profile [ 此参数文件,需要在测试 ]

  1. Vim  .bash_profile   # 切换到oracle用户  
  2. TMP=/tmp;export TMP   
  3. TMPDIR=$TMP;export TMPDIR   
  4. ORACLE_BASE=/u01/app/oracle;export ORACLE_BASE   
  5. ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;export ORACLE_HOME   
  6. ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs;export ORA_CRS_HOME  
  7. ORACLE_SID=rac1 ;export ORACLE_SID   # 这里的RAC1 在node2节点上要改为 RAC2  
  8. LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH  
  9. PATH=$ORACLE_HOME/bin:$PATH; export PATH  
  10. TNS_ADMIN=$ORACLE_HOME/network/admin ; export  TNS_ADMIN  
  11. export ORACLE_TERM=xterm  
  12. export ORACLE_OWNER=oracle  
  13. Export ORA_NLS10=$ORACLE_HOME/nls/data  
  14. #  Export ORA_NLS10=$ORACLE_HOME/ocommon/nls/data  
  15. export CLASSPATH=$ORACLE_HOME/JRE  
  16. export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib  
  17. export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib  
  18. export CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib  
  19.   
  20. source /u01/app/oracle/.bash_profile  

(7).配置ssh [ ssh 需要对等,也就是说,连接是不要输入 ]

Node1 节点

切换到oracle用户:

  1. $ mkdir   ~/.ssh   
  2. $ chmod   755   ~/.ssh   
  3. $ /usr/bin/ssh   -keygen   -t   rsa   #  下面都是回车  
  4. $ /usr/bin/ssh  -keygen   -t   dsa    #  下面都是回车  
  5. $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   
  6. $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys   
  7. $ scp ~/.ssh/authorized_keys rac2:~/.ssh/authorized_keys  

Node2 节点

切换到oracle用户:

  1. $ mkdir   ~/.ssh   
  2. $ chmod   755   ~/.ssh   
  3. $ /usr/bin/ssh   -keygen   -t   rsa   #  下面都是回车  
  4. $ /usr/bin/ssh  -keygen   -t   dsa    #  下面都是回车  
  5. $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   
  6. $ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys   
  7. $ scp ~/.ssh/authorized_keys rac1:~/.ssh/authorized_keys</pre>  
  8. #### Node 1和node 2 进行对等测试[务必所有都测试到,如果后面报KSH错,就是这里没测好,重测即可]  
  9. Node1:ssh rac1 date  
  10.        ssh rac1-priv date  
  11.        ssh rac2 date  
  12.        ssh rac2-priv date  
  13. Node2:ssh rac1 date  
  14.        ssh rac1-priv date  
  15.        ssh rac2 date  
  16.        ssh rac2-priv date  

(8).安装ASM包[按顺序装,具体可参展asm博文] ==>两个node节点都需要装包,创建磁盘只需在1个节点

  1. oracleasm-support-2.1.8-1.el5.i386.rpm  
  2. oracleasm-2.6.18-194.el5PAE-2.0.5-1.el5.i686.rpm  
  3. oracleasmlib-2.0.4-1.el5.i386.rpm  
  4. Root用户执行: /etc/init.d/oracleasm configure  依次输入:oracle,oinstall,y,y 
  5. 创建相应的asm磁盘:/etc/init.d/oracleasm createdisk data1  /dev/sda5 [下面不做演示]  
  6. 查看asm磁盘:/etc/init.d/oracleasm listdisks  
  7. 扫描磁盘:/etc/init.d/oracleasm scandisks  

(9).时间同步:节点之间的时间同步[可配置时间同步服务器]

2.共享存储的配置:

在storgae端安装scsi-target-utils*的包

  1. 修改/etc/tgt/target.conf文件  
  2. target iqn.201307.com.xcg.storsge:disk1
  3.   backing-store  /dev/sda7  
  4.       Scsi_id:xcg  
  5.   backing-store  
  6. target
  7. 启动scsi服务:  
  8. /etc/init.d/tgtd start  
  9.   
  10. 查看设备导出情况:  
  11. tgtadm --lld iscsi --mode target --op show  

3.在node1和node2节点端安装客户端工具:[两个节点都做此操作]

  1. iscsi-initiator-utils  
  2. 启动iscsid服务:service iscsid restart  
  3. 设置为开机启动:chkconfig iscsid on  
  4. 发现导出设备:iscsiadm -m discovery -t sendtargets -p storage # storage也可写IP地址  
  5. 连接导出设备:iscsiadm -m node -l  
  6. 断开连接: iscsiadm -m node -u  

4.在node1和node2节点上制作几个raw设备:

  1. # 修改/etc/udev/rules.d/60-raw.rules 文件  
  2. ACTION=="add", KERNEL=="sdc1",RUN+="/bin/raw /dev/raw/raw3 %N"  
  3. ACTION=="add", KERNEL=="sdc2",RUN+="/bin/raw /dev/raw/raw4 %N"  
  4. ACTION=="add", KERNEL=="sdc3",RUN+="/bin/raw /dev/raw/raw5 %N"  
  5.   
  6. # 修改/etc/udev/rules.d/50-udev.permissions  
  7. ACTION=="add",KERNEL=="raw[1-5]", OWNER="oracle", GROUP="oinstall", MODE="660"  
  8.   
  9. 启动udev服务:start_udev  
  10. 查看裸设备:cd /dev/raw/ --> ll 下面如果有对应的设备名称,且oracle..oinstall权限  

5.安装oracle clusterware软件[oracle 用户解压,安装]

执行安装程序,后面为图形化操作界面,省略[如需重新安装,删除/etc/oracle 和 /etc/init.d/init.*]

按照提示,执行相应的脚本

注:

报错1:shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

解决方法:

  1. $ vim  vipca   
  2. ... ...   
  3. Linux)   
  4. LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:$ORACLE_HOME/srvm/lib:$LD_LIBRA  
  5. RY_PATH    
  6. export LD_LIBRARY_PATH   
  7. echo $LD_LIBRARY_PATH   
  8. echo $CLASSPATH   
  9. #Remove this workaround when the bug 3937317 is fixed   
  10. arch=`uname -m`   
  11. if [ "$arch" = "i686" -o "$arch" = "ia64" ]   
  12. then   
  13. # LD_ASSUME_KERNEL=2.4.19   
  14. # export LD_ASSUME_KERNEL   
  15. echo -- 这里一定要加上,不然返回会报错,就修改这三行  
  16. fi  
  17.   
  18. 报错2:Error 0(Native: listNetInterfaces:[3])或eth0 不是public  
  19. 解决方法:  
  20. 在 CRS_HOME 下 运行 oifcfg 命令:  
  21. # ./oifcfg setif -global eth0/192.168.0.0:public  
  22. # ./oifcfg setif -global eth1/10.0.0.0:cluster_interconnect  
  23. # ./oifcfg getif  
  24. -- 注意这里最后一个是 0. 代表一个网段。 在一个节点设置之后,其他节点也能看到。   
  25. 然后在手工运行 vipca 添加  虚拟IP 即可。  
  26. 如果还有报错:  
  27.   
  28. 执行此命令,查看包是否安装完整:[此命令在clustware软件包里] ==&gt; 查看官方文档  
  29.   
  30. ../clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose  
  31.   
  32. 执行此命令: ./crs_stat -t -v # 下面都online ,则表示安装完成  

6.安装数据库软件:

装数据库软件

配置asm磁盘组

配置监听器(netmgr)

再利用dbca创建库

7.检查相应状态:

  1. 查看总体状态: ./crs_stat -t -v  
  2. 检查crs状态:crsctl check crs  
  3. 所有实例和服务的状态: srvctl status database -d orcl    # orcl为数据库名称  
  4. 单个实例的状态:srvctl status instance -d orcl -i orcl2   # orcl2为实例名称  
  5. 在数据库全局命名服务的状态:srvctl status service -d orcl -s orcl_taf    # 服务名  
  6. 特定节点上节点应用程序的状态: srvctl status nodeapps -n rac1 # rac1节点  
  7. ASM 实例的状态: srvctl status asm -n rac2  
  8. 列出配置的所有数据库:srvctl config database  
  9. 显示 RAC 数据库的配置:srvctl config database -d orcl  
  10. 显示指定集群数据库的所有服务: srvctl config service -d orcl  
  11. 显示节点应用程序的配置 —(VIP、GSD、ONS、监听器): srvctl config nodeapps -n rac2 -a -g -s -l  
  12. 显示 ASM 实例的配置:srvctl config asm -n rac2  

8.启动/停止集群

停止 Oracle RAC 10g 环境

第一步是停止 Oracle 实例。

当此实例(和相关服务)关闭后,关闭 ASM 实例。

最后,关闭节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS) 。

  1. $ export ORACLE_SID=rac1  
  2. $ emctl stop dbconsole  
  3. $ srvctl stop instance -d orcl -i rac1  
  4. $ srvctl stop instance -d orcl -i rac2 [ 可选 ]  
  5. $ srvctl stop asm -n rac1  
  6. $ srvctl stop asm -n rac2 [ 可选 ]  
  7. $ srvctl stop nodeapps -n rac1  
  8. $ srvctl stop nodeapps -n rac2 [ 可选 ]  

启动 Oracle RAC 10g 环境

第一步是启动节点应用程序(虚拟 IP、GSD、TNS 监听器和 ONS) 。

当成功启动节点应用程序后,启动 ASM 实例。

最后,启动 Oracle 实例(和相关服务)以及企业管理器数据库控制台。[ 可选参数同上 ]

  1. $ export ORACLE_SID=rac1  
  2. $ srvctl start nodeapps -n rac1  
  3. $ srvctl start asm -n rac1  
  4. $ srvctl start instance -d orcl -i rac1  
  5. $ emctl start dbconsole  

使用 SRVCTL 启动/停止所有实例

启动/停止所有实例及其启用的服务。

  1. $ srvctl start database -d orcl  
  2. $ srvctl stop database -d orcl  

详细参数,请看下面的选项:

附件:

遵循以下步骤启动和停止单独的应用程序资源。

  1. srvctl start nodeapps -n   
  2. srvctl start nodeapps -n   
  3. srvctl start asm -n   
  4. srvctl start asm -n   
  5. srvctl start database -d   
  6. srvctl start service -d  -s   
  7. crs_stat -t  
  8. srvctl stop service -d  -s   
  9. srvctl stop database -d   
  10. srvctl stop asm -n   
  11. srvctl stop asm -n   
  12. srvctl stop nodeapps -n   
  13. srvctl stop nodeapps -n   
  14. crs_stat -t  

×