Linux+Oracle10g+RAC
RAC应用集群
一.实施规划
1.平台:
操作系统:RedHat Enterprise Linux Advanced Server 5.0
内存大小:2048M
交换空间:2048M
硬盘空间:10G
网卡配置:2(public IP,Vitual IP ,Private IP)
主机结点:2(node1,node2)
存储设备:1 (DB fies)
2.网络规划
Node1 公共192.168.100.101
Node2 公共192.168.100.102
Node1-vip 虚拟192.168.100.201
Node2-vip 虚拟192.168.100.202
Node1-priv 专用19.168.100.101
Node2-priv 专用19.168.100.102
3.安装流程
>安装虚拟机vmware Server 1.0.9
>安装RHEL5.4
>配置RHEL操作系统
>复制第二台虚拟机
>配置双机信任关系
>建立ASM存储
>安装clusterware软件
>安装database软件
>配置监听Listener
>建立数据库实例
二.新建虚拟机
1.选择-》新建,虚拟机名为RAC1,location为F:\vmware\RAC1,网卡接口选择桥接网络方式(Use bridged networking),适配器选择LSI Logic,虚拟硬盘选择SCSI,硬盘容量选择10G,然后选择每次扩充扩充2G(Split disk into 2GB files),不选择立即分配。
然后按Add添加硬盘,先添加一个100M的硬盘,选择立即分配方式(Allocate all disk space now),该盘作为V otingDisk盘,目录存放位置为F:\vmware\sharedisk\V otingdisk,虚拟设备结点选择SCSI 1:1 Hard Disk2,模式选择一致即:independent->persistent。
然后再添加一个100M的硬盘,选择立即分配,该盘作为OCRdisk盘,目录存放位置为:F:\vmware\sharedisk\OCRdisk,硬盘选择SCSI 1:2,模式为一致。
再添加一个2G的硬盘用作ASM的数据文件的空间,选择立即分配和2G扩充一个文件,目录位置为F:\vmware\sharedisk\ASMdisk,硬盘选择SCSI 1:3,模式选择一致。
再添加一个 1.3G的硬盘用作ASM的闪回区,选择立即分配,目录位置为F:\vmware\sharedisk\ASMdisk2,硬盘选择SCSI 1:4,模式选择一致性。
再添加一块网卡,用作两台虚拟机之间的通信,连接方式选择Host-only模式并选择(connect at power on)。
2. 开启该虚拟机,安装RHEL 5.4,注意事项:
交换分区分2G,主机名为node1,eth0为192.168.100.101,eth1为19.168.100.101 作为node1-priv,自定义安装包时,选择开发、服务器以及基本系统的全部,防火墙关闭,selinux 设为enabled禁用。
安装好之后,编辑F:\vmware\RAC1\Red Hat Linux.vmx,添加如下一段(可以使那四个磁盘真正的作为共享盘):
disk.locking = “false”
disklib.dataCacheMaxSize = “0”
disklib.dataCacheMaxReadAheadSize = “0”
disklib.dataCacheMinReadAheadSize = “0”
disklib.dataCachePageSize = “4096”
disklib.maxUnsyncedWrites = “0”
scsi1:1.deviceType = “disk”
scsi1:2.deviceType = “disk”
scsi1:3.deviceType = “disk”
scsi1:4.deviceType = “disk”
4.RHEL系统配置
#uname –r
2.6.128-164.el5
#vim /etc/hosts(加上如下一段)
192.168.100.101 node1
192.168.100.102 node2
192.168.100.201 node1-vip
192.168.100.202 node2-vip
19.168.100.101 node1-priv
19.168.100.102 node2-priv
#vim /etc/sysctl.conf(加上如下一段)
Kernel.shmall = 2097152
Kernel.shmmax = 536870912
Kernel.shmmni = 4096
Kernel.sem = 250 32000 100 128
Fs.file-max = 65536
Net.ipv4.ip_local_port_range = 1024 65000
Net.core.rmem_default = 1048576
Net.core.rmem_max = 1048576
Net.core.wmem_default = 262144
Net.core.wmem_max = 262144
#sysctl –p (是该文件生效)
#vim /etc/security/limits.conf(加上如下一段)
Oracle soft nproc 2047
Oracle hard nproc 16384
Oracle soft nofile 1024
Oracle hard nofile 65536
#vim /etc/pam.d/login(加上如下一段)
Session required /lib/security/pam_limits.so
#vim /etc/rc.loal (挂起检测时间定时器,检测对方有没有宕机)
Modprobe hangcheck-timer hangcheck-tick=30 hangcheck_margin=20
#groupadd oinstall
#groupadd dba
#useradd –m –g oinstall –G dba
#passwd oracle
#vim /home/oracle/.bash_profile
Export TMPDIR=/tmp
Export ORACLE_BASE=/u01/app/oracle
Export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
Export ORACLE_SID=RACDB1
Export ORACLE_TERM=xterm
Export PATH=$ORACLE_HOME/bin:/usr/bin:$PATH
Export LD_LIBRARY_PA TH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin Export
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib Ulimit –u 16384 –n 65536
Umask 022
#mkdir –p /u01/app/oracle
#chown –R oracle:oinstall /u01
#chmod –R 775 /u01
#fdisk /dev/sdb
#fdisk /dev/sdc
#fdisk /dev/sdd
#fdisk /dev/sde
#partprobe
#rpm –ivh oracleasm-support-*
#rpm –ivh oracleasm-2.6.18-164.el5.*
#rpm –ivh oracleasmlib*
#rpm –ivh compat-gcc-7.3.2-2.96.128.i386.rpm
#rpm –Uvh compat-libstdc++-7* --force
#rpm –ivh compat-libstdc---devel-7.3.2
#rpm –ivh compat-gcc-c++*
#service oracleasm configure
Oracle
Oinstall
Y
Y
#vim /etc/udev/rules.d/60-raw.rules(加上如下一段)
ACTION==”add”,KERNEL==”/dev/sdb1”,RUN+=”/bin/raw /dev/raw1 %N”
ACTION==”add”,ENV{MAJOR}==”8”,ENV{MINOR}==”17”,RUN+=”/bin/raw
/dev/raw/raw1 %M %m” ( 其中的主设备号可以通过ls –l /dev/sd*查看)
ACTION==”add”,KERNEL==”/dev/sdc1”,RUN+=”/bin/raw /dev/raw2 %N”
ACTION==”add”,ENV{MAJOR}==”8”,ENV{MINOR}==”33”,RUN+=”/bin/raw
/dev/raw/raw2 %M %m”
KERNEL==”raw[1-2]”,OWNER=”oracle”,GROUP=”oinstall”,MODE=”640”
#start_udev
#ls –l /dev/raw/*
#shutdown –h now
三.复制出第二台虚拟机
1.将复制之后的名称为RAC1的改为RAC2,另外编辑Red Hat Linux.vmx查找文件中的RAC1将它改为RAC2,然后编辑RAC
2.vmdk将文件中的RAC1改为RAC2(如下所示): RW 4192256 SPARSE “RAC2-s001.vmdk”
RW 4192256 SPARSE “RAC2-s002.vmdk”
RW 4192256 SPARSE “RAC2-s003.vmdk”
RW 4192256 SPARSE “RAC2-s004.vmdk”
RW 4192256 SPARSE “RAC2-s005.vmdk”
RW 10240 SPARSE “RAC2-s006.vmdk”
2.打开RAC2,选择Create
3.配置node2操作系统
#hostname node2
#vim /etc/sysconfig/network
HOSTNAME=node2
#vim /etc/hosts
127.0.0.1 node2 localhost.localdomain localhost
#cd /etc/sysconfig/network-scripts/
#cat ifcfg-eth0.bak
#cat ifcfg-eth0
#cat ifcfg-eth1.bak
#cat ifcfg-eth1
#mv ifcfg-eth0.bak ifcfg-eth0
#mv ifcfg-eth1.bak ifcfg-eth1
#ifconfig eth0 | grep HWaddr
#cat ifcfg-eth0 | grep ADDR
#ifconfig eth1 | grep Hwaddr
#cat ifcfg-eth1 | grep ADDR
#cat /home/oracle/.bash_profile | grep ORACLE_SID
Export ORACLE_SID=RACDB2
#ping node1
#ping node2
#ping node1-priv
#ping node2-priv
4.时间同步
Node2]# ssh node1
Node1]# service xinetd start
Node1]# chkconfig time-stream on
Node1]# chkconfig xinetd on
Node1]# chkconfig ntpd on
Node1]#service ntpd restart
Node1]#exit
Node2]#crontab –e
0-59/1 * * * * rdate –s 192.168.100.101
0-59/1 * * * * ntpdate 192.168.100.101
Node2]# > /etc/resolv.conf
Node2]# ssh node1
Node1]# > /etc/resolv.conf
四.配置双机信任关系
Node1]#su – oracle
Node1]$ mkdir .ssh
Node1]$ chmod 700 .ssh
Node1]$ ssh-keygen –t rsa
Node1]$ ssh-keygen -t dsa
Node2]#su – oracle
Node2]$mkdir .ssh
Node2]$chmod 700 .ssh
Node2]$ssh-keygen -t rsa
Node2]$ssh-keygen -t dsa
Node1]$ cat /home/oracle/.ssh/id_rsa.pub >> /home/oracle/.ssh/authorized_keys
Node1]$ cat /home/oracle/.ssh/id_dsa.pub >> /home/oracle/.ssh/authorized_keys
Node1]$ssh node2 cat /home/oracle/.ssh/id_rsa.pub >> /home/oracle/.ssh/authorized_keys Node1]$ssh node2 cat /home/oracle/.ssh/id_dsa.pub >> /home/oracle/.ssh/authorized_keys Node1]$ scp /home/oracle/.ssh/authorized_keys node2:/home/oracle/.ssh/authorized_keys
五.配置ASM
Node1]#service oracleasm configure
Node1]#service oracleasm createdisk vol1 /dev/sdd1
Node1]#service oracleasm createdisk vol2 /dev/sde1
Node1]#service oracleasm scandisks
Node1]#service oracleasm listdisks
Node1]#ssh node2
Node2]#service oracleasm scandisks
Node2]#service oracleasm listdisks
Node2]#exit
Node1]#cd /oradisk
Node1]#unzip oracle10g01_cluster*****
Node1]#chown –R oracle:oinstall /oradisk
Node1]#chmod –R 775 /oradisk
然后注销以oracle登录
Node1]$cd /oradisk/clusterware/cluvfy
Node1]$./runcluvfy.sh stage –pre crsinst -n node1.node2 -verbose
Node1]$export LANG=en_US
Node1]$/oradisk/clusterware/runInstaller -ignoreSysPreReqs
这里注意1.安装路径为/u01/app/oracle/product/10.2.0/crs_1
2.Specify Cluster Configuration 中添加上node2的信息
3.Specify Network Interface Usage中检查一下eth0和eth1的接口类型有没有反,应该eth0为public,eth1为private。
4.指定OCR配置的路径为/dev/raw/raw1,外部存储
5.指定V otingDisk的路径为/dev/raw/raw2,外部存储
6.安装过程中最重要的:在node2上用ntpdate 192.168.100.101与node1同步(手工进行且最好是每两三秒同步一次)。
7.当安装完成即出现要执行两个文件的窗口时,一定要将如下步骤操作完之后才可以点击OK。
Node1]#/u01/app/oracle/oraInventory/orainstRoot.sh
Node2]#/u01/app/oracle/oraInventory/orainstRoot.sh
Node1]#/u01/app/oracle/product/10.2.0/crs_1/root.sh(注意,在这里的执行过程中要查看/dev/raw/raw*是不是属于oracle和oinstall组)
Node2]#/u01/app/oracle/product/10.2.0/crs_1/root.sh(在这里执行完会报错,此时要修改/u01/app/oracle/product/10.2.0/crs_1/bin/vipca和srvctl )如下所示:
Node2]#vim vipca
if [ “Sarch” = “i686”–o “Sarch” = “ia64” ]
then
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
fi
unset LD_ASSUME_KERNEL (加上这句话)
Node2]#vim srvctl
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
unset LD_ASSUME_KERNEL(*******)
Node2]#/u01/app/oracle/product/10.2.0/crs_1/root.sh
Node2]#cd /u01/app/oracle/product/10.2.0/crs_1/bin/
Node2]#export LANG=en_US.UTF-8
Node2]#./vipca (会报错)
Node2]#./oifcfg iflist
Node2]#./oifcfg setif -global eth0/192.168.100.0:public
Node2]#./oifcfg setif -global eth1/19.168.100.0:cluster_interconnect
Node2]#./oifcfg getif
Node2]#./vipca (该项配置过程中注意两个vip的配置,完成之后回到node1上的clusterware安装界面点击ok)
集群软件安装完成之后:
Node1]#cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node1]#./crs_stat -t (可以看到有六个)
Node1]#ssh node2
Node2]#cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node2]#./crs_stat -t
Node2]#./crs_stop ora.node2.vip
Node2]#./crs_start ora.node2.vip
Node2]#tail -3 /etc/inittab
Node1]#tail -3 /etc/inittab
六.Clusterware卸载
自动卸载:
$$ORACLE_HOME/install/rootdelete.sh
$$ORACLE_HOME/install/rootdeinstall.sh
手工卸载:
#srvctl stop nodeapps –n node1
#rm -rvf /etc/oracle/*
#rm -rvf /etc/init.d/init.*
#rm -rvf /etc/rc3.d/*.crs
#rm -rvf /etc/rc5.d/*.crs
#cp /etc/inittab.orig /etc/inittab
#ps –ef | grep crs
#ps –ef | grep css
#ps –ef | grep evm
#rm –rvf /tmp/.oracle/*
#rm –rvf /var/tmp/.oracle/*
#rm -rvf /u01/app/oracle/*
#dd if=/dev/zero of=/dev/V otingdisk bs=1024 count=100000 #dd if=/dev/zero of=/dev/OCRdisk bs=1024 count=100000 #dd if=/dev/zero of=/dev/ASMdisk bs=1024 count=2000000 #dd if=/dev/zero of=/dev/ASMdisk2 bs=1024 count=1300000 #shutdown –r now
七.安装数据库软件
检查:
Node1]#cat /etc/hosts
Node1]#cat /etc/sysctl.conf
Node1]#cat /etc/security/limits.conf
Node1]#cat /etc/pam.d/login
Node1]#cat /etc/redhat-release
Node1]#cat /home/oracle/.bash_profile
注销以oracle用户登录
Node1]$cd /oradisk/database
Node1]$./runInstaller –ignoreSysPreReqs
注意在指定路径时的路径:/u01/app/oracle/product/10.2.0/db_1
在Specify Hardware Cluster Installation Mode然后将node1和node2都勾选上。
八.配置监听
1.选择集群配置(Cluster configuration)
2.两个结点都选上
Node1]$cd /u01/app/oracle/product/10.2.0/crs_1/bin/
Node1]$./crs_stat -t
Node1]$./crs_stat |more
Node1]$./crs_stat -p |more
Node1]$ssh node2
Node2]$cd /u01/app/oracle/product/10.2.0/crs_1/bin/
Node2]$./crs_stat -t
Node2]$./crs_stat | more (查询每个name的具体信息)
Node2]$./crs_stat –p |more(查询更具体的信息)
九.建立数据库实例
Node1]$dbca
安装的数据库的名称为RACDB
选择ASM自动存储管理
创建初始化参数文件的路径为:ORACLE_BASE/admin/+ASM/pfile/init.ora
ASM的两个磁盘建立成为外部的,一个命名为RAC_VOLGRP1,另一个命名为FLASH_RECOVERY_AREA
Databae component中的em仓库可选可不选
字符集选成ZHS16GBK
安装完成之后:
Node1]$ cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node1]$ ./crs_stat -t (此时会看到十三个RAC的管理进程)
Node1]$ ssh node2
Node2]$ cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node2]$ ./crs_stat -t (13个)
十.测试RAC
Node2断电,不可使用shutdown –h now,要使用非正常关机,否则不会产生飘移。
Node1]$ /u01/app/oracle/product/10.2.0/crs_1/bin/crs_stat –t (等待时间为1-5分钟就可以看到node2的虚拟IP飘移到了node1上)
Node2上电,再来查看,会看到虚拟IP飘移了回来。
十一.RAC启停及警告文件
关闭RAC时,先关闭监听,再关闭实例,然后关服务。
Node1]$ cd /u01/app/oracle/product/10.2.0/crs_1/bin/
Node1]$ ./crs_stat -t
Node1]$ lsnrctl stop
Node2]$ lsnrctl stop
Node1]$./srvctl status database –d RACDB
Node2]$ ./srvctl stop database -d RACDB –o immediate
Node1]$su – root
Node1]#cd /u01/app/oracle/product/10.2.0/crs_1/bin/
Node1]#./crsctl check crs
Node1]#./crsctl stop crs
Node2]$su – root
Node2]#cd /u01/app/oracle/product/10.2.0/crs_1/bin/
Node2]#./crsctl check crs
Node2]#./crsctl stop crs
开启RAC时,先开启服务,再开实例,然后起监听。
Node1]#cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node1]#./crsctl start crs
Node1]#./crsctl check crs
Node2]#cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node2]#./crsctl start crs
Node2]#./crsctl check crs
Node1]$cd /u01/app/oracle/product/10.2.0/crs_1/bin
Node1]$./srvctl start database -d RACDB
Node1]$ ./srvctl status database -d RACDB
Node1]$ lsnrctl start
Node2]$ lsnrctl start
Node1]$ ./crs_stat -t
Crs警告文件:
Node1]$tail –f /u01/app/oracle/product/10.2.0/crs_1/log/node1/alertnode1.log ASM警告文件:
Node1]$ tail –f /u01/app/oracle/admin/+ASM/bdump/alert_+ASM1.log
数据库警告文件:
Node1]$tail -f /u01/app/oracle/admin/RACDB/bdump/alert_RACDB1.log