想必大家在学习ORACLE 11g时,都想搭建一个RAC的实验环境。在搭建RAC实验环境时,会碰到诸如IP怎么规划、虚拟机环境下怎么共享磁盘、ASM磁盘创建,以及安装过程中会遇到这样那样的问题。搭建一个完整的RAC实验环境下来,少则一天,多则一周,浪费不少时间和精力,一遍又一遍重新系统,遇到一个又一个问题,相信初学者,搭建过RAC的同学都会有这样的体会。
这次把搭建RAC的步骤完整的整理出来,以供大家参考,相互交流学习,文中如有错误,欢迎大家斧正。
一、部署环境准备
1、准备所需软件
VMware workstation
CentOS release 6.10
FreeNAS 11.2
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
p13390677_112040_Linux-x86-64_3of7.zip
2、创建rac节点服务器
2.1 需要在VMware WorkStation里创建两台虚拟机:racnode1和racnode2。
VM主机的内存2G(官方说至少1.5G,安装grid检查仍会警告不够用,安装过程可能出现失败,建议最少2G)。
硬盘30G。
网络适配器2个。
2.2 安装centos6.x虚拟机操作系统。
略
2.3 RAC的ip规划
网卡添加2个, 11.2开始至少需要4种IP地址。 RAC的IP规划如下:
Hostname |
Type |
IP Address |
Interface |
racnode1 |
Public IP |
192.168.153.101 |
eth0 |
racnode1-vip |
Virtual IP |
192.168.153.201 |
eth0:1 |
racnode1-pip |
Private IP |
10.0.0.101 |
eth1 |
racnode2 |
Public IP |
192.168.153.102 |
eth0 |
racnode2-vip |
Virtual IP |
192.168.153.202 |
eth0:1 |
racnode2-pip |
Private IP |
10.0.0.102 |
eth1 |
scan-cluster |
SCAN IP |
192.168.153.100 |
eth0 |
说明:
Oracle RAC环境下每个节点都会有多个IP地址,分别为公共IP(Public IP) 、私有IP(Private IP)和虚拟IP(Virtual IP):
私有IP(Public IP)
Private IP address is used only for internal clustering processing(Cache Fusion).
专用(私有)IP地址只用于内部群集处理,如心跳侦测,服务器间的同步数据用。
虚拟IP(Virtual IP)
Virtual IP is used by database applications to enable fail over when one cluster node fails.
当一个群集节点出现故障时,数据库应用程序通过虚拟IP地址进行故障切换。
当一个群集节点出现故障时,数据库应用程序(包括数据库客户端)通过虚拟IP地址切换到另一个无故障节点,另一个功能是均衡负载。
公共IP(Public IP)
Public IP adress is the normal IP address typically used by DBA and SA to manage storage, system and database.
公共IP地址
正常的(真实的)IP地址,通常DBA和SA使用公共IP地址在来管理存储、系统和数据库。
监听IP(SCAN IP)
从Oracle 11g R2开始,Oracle RAC网络对IP地址有特殊要求,新增了加监听IP地址(SCAN IP),所以从Oracle 11g R2开始Oracle RAC网络至少需要4种IP地址(前面介绍三种IP地址)。在Oracle 11g R2之前,如果数据库采用了RAC架构,在客户端的tnsnames中,需要配置多个节点的连接信息,从而实现诸如负载均衡、Failover等RAC的特性。因此,当数据库RAC集群需要添加或删除节点时,需要及时对客户端机器的tns进行更新,以免出现安全隐患。
在Oracle 11g R2中,为了简化该项配置工作,引入了SCAN(Single Client Access Name)的特性。该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的SCAN IP以及SCAN IP Listener,在客户端仅需要配置SCAN IP的tns信息,通过SCAN IP Listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操作,均不会对Client产生影响。
2.4 配置虚拟机网卡
按前面的IP规划,来设置每个节点的网卡的IP地址。
[root@racnode1 ~]# cd /etc/sysconfig/network-scripts/ ,根据自身网卡进行配置,示例:
racnode1:
1.编辑eth0网卡: #vi ifcfg-eth0 ,内容如下: DEVICE=eth0 TYPE=Ethernet UUID=43b4bc9f-052e-45ec-bca2-dbaeeef39c20 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:FC:92:1F IPADDR=192.168.153.101 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" |
2.创建eth0:1 #cp ifcfg-eth0 ifcfg-eth0:1 #vi ifcfg-eth0:1,内容如下: DEVICE=eth0:1 TYPE=Ethernet UUID=43b4bc9f-052e-45ec-bca2-dbaeeef39c20 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:FC:92:1F IPADDR=192.168.153.201 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0:1" |
3.编辑eth1网卡: #vi ifcfg-eth1,内容如下: DEVICE=eth1 TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.0.101 PREFIX=24 GATEWAY=10.0.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth1" UUID=1655f5de-c00e-454c-aa8f-501bf70fd60c ONBOOT=yes HWADDR=00:0C:29:FC:92:29 |
racnode2:
1.编辑eth0网卡: #vi ifcfg-eth0 ,内容如下: DEVICE=eth0 TYPE=Ethernet UUID=643e30b9-906e-4051-b972-483da6a33203 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.153.102 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0" HWADDR=00:0C:29:C9:A7:2D |
2.创建eth0:1 #cp ifcfg-eth0 ifcfg-eth0:1 #vi ifcfg-eth0:1,内容如下: DEVICE=eth0:1 TYPE=Ethernet UUID=643e30b9-906e-4051-b972-483da6a33203 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.153.202 PREFIX=24 GATEWAY=192.168.153.2 DNS1=61.139.2.69 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME="System eth0:1" |
3.编辑eth1网卡: #vi ifcfg-eth1,内容如下: DEVICE=eth1 HWADDR=00:0C:29:C9:A7:37 TYPE=Ethernet BOOTPROTO=none IPADDR=10.0.0.102 PREFIX=24 GATEWAY=10.0.0.1 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=eth1 UUID=1207dcc1-7a39-45b0-b604-f38e5c90934d ONBOOT=yes LAST_CONNECT=1546520521 |
2.5编辑/etc/hosts文件
racnode1、racnode2配置一样
# vim /etc/hosts ,修改内容如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
#racnode1
192.168.153.101 racnode1
192.168.153.201 racnode1-vip
10.0.0.101 racnode1-pip
#racnode2
192.168.153.102 racnode2
192.168.153.202 racnode2-vip
10.0.0.102 racnode2-pip
#scan-ip
192.168.153.100 scan-cluster
[root@localhost ~]# hostname racnode1 ,修改主机名
[root@localhost ~]# hostname racnode2 ,修改主机名
2.6 创建用户和组
安装RAC,需要建立相应的用户和组。在racnode1、racnode2上进行用户和组的创建:
Group Name |
Group ID |
Group Info |
Oracle User |
Grid User |
oinstall |
1000 |
Inventory Group |
Y |
Y |
dba |
1200 |
OSDBA Group |
Y |
|
oper |
1201 |
OSOPER Group |
Y |
|
asmadmin |
1300 |
OSASM |
Y |
|
asmdba |
1301 |
OSDBA for ASM |
Y |
Y |
asmoper |
1302 |
OSOPER for ASM |
Y |
root 下执行操作:创建组、用户,并设置用户密码
groupadd -g 1000 oinstall
groupadd -g 1200 dba
groupadd -g 1201 oper
groupadd -g 1300 asmadmin
groupadd -g 1301 asmdba
groupadd -g 1302 asmoper
useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid
useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle
passwd grid
passwd oracle
2.7 创建目录并授权
在racnode1、racnode2上进行目录的创建和授权:
root 下执行以下操作:
mkdir -p /u01/app/11.2.0/grid
mkdir -p /u01/app/grid
mkdir /u01/app/oracle
chown -R grid:oinstall /u01
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
2.8 设置环境变量
(1)配置用户环境变量:grid用户
racnode1:
[grid@racnode1 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM1
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
[grid@racnode1 ~]$ source .bash_profile
racnode2:
[grid@racnode2 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM2
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
[grid@racnode2 ~]$ source .bash_profile
(2)配置用户环境变量:oracle用户
racnode1:
[oracle@racnode1 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl1
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
[oracle@racnode1 ~]$ source .bash_profile
racnode2:
[oracle@racnode2 ~]$ vim .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=orcl2
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
[oracle@racnode2 ~]$ source .bash_profile
2.9 配置用户对等性[ssh互信]:grid用户、oracle用户
racnode1: ssh-keygen -t rsa #一路回车 ssh-keygen -t dsa #一路回车 |
racnode2: ssh-keygen -t rsa #一路回车 ssh-keygen -t dsa #一路回车 |
先racnode1、再racnode2上执行过上述两条命令后,再回到racnode1再继续执行下面的命令: cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys ssh racnode2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys ssh racnode2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys scp ~/.ssh/authorized_keys racnode2:~/.ssh/authorized_keys chmod 600 .ssh/authorized_keys 两个节点互相ssh通过一次 ssh racnode1 date ssh racnode2 date ssh racnode1-vip date ssh racnode2-vip date ssh racnode1-pip date ssh racnode2-pip date |
2.10 修改系统参数配置文件
在racnode1和racnode2上都要执行
[root@ ~]# vim /etc/sysctl.conf ,在最后添加以下内容:
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
[root@ ~]# sysctl -p 立即生效
-
修改 limits.conf
-
[root@ ~]# vim /etc/security/limits.conf ,在最后添加以下内容:
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
-
修改 /etc/pam.d/login
[root@ ~]# vim /etc/pam.d/login,在session required pam_namespace.so下面插入:
-
session required pam_limits.so
-
停止并删除ntp服务
[root@ ~]# service ntpd status
[root@ ~]# chkconfig ntpd off
[root@ ~]# cp /etc/ntp.conf /etc/ntp.conf.bak
[root@ ~]# rm -rf /etc/ntp.conf
-
-
修改/etc/profile
[root@ ~]# cp /etc/profile /etc/profile.bak
[root@ ~]# vim /etc/profile,在文件最后添加以下内容:
if [ $USER = "ORACLE" ] || [ $USER = "GRID" ];then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
-
三 、创建FreeNAS共享存储服务器
本次搭建:在VMware 虚拟机上安装和配置FreeNAS 11.2,请自行下载所需版本。
【FreeNAS-11.2-RELEASE.iso】
下载地址:https://download.freenas.org/11.2/STABLE/RELEASE/x64/FreeNAS-11.2-RELEASE.iso
3.1准备一台虚拟机,此处详细步骤略。
3.2 FreeNAS系统安装
3.2.1 打开虚拟机电源。进入安装界面,敲击回车开始安装。
3.2.2 选择第一个"Install/Upgrade",点击OK。
3.2.3 提示内存小于8G。此处作为虚拟测试,可忽略此项错误提示。直接点击Yes。
3.2.4 选择安装在哪个磁盘上。此处选择20G的磁盘作为系统安装盘。光标上下移动,空格键为选择。然后点击OK。
3.2.5 此处为警告,告知安装位置及清空磁盘数据。直接点击OK。
3.2.6 设置root的密码。
3.2.7 选择引导类型。此处选择 BIOS 类型。
3.2.8 开始安装。等待一段时间后,即安装完毕。
3.2.9 安装完毕后,弹出提示告知安装完毕。直接点击OK。
3.2.10 安装完毕后需要重启。选择第三个"Reboot System"。点击OK。
3.2.11 系统在将重启后,继续安装一些组件。请等待最终安装完毕。
3.2.12 安装完毕后,如下图。参照提示,可根据实际需要去修改配置。
管理地址也已列出。如:http://192.168.153.230
至此,FreeNAS 系统安装完毕。
3.3 FreeNAS登录及配置
3.3.1 浏览器登录: 默认用户为root , 密码为安装系统时所设置的密码。
3.3.2 登录后如下,根据实际需要进行配置。
3.3.3 根据oracle 11gR2 RAC环境所需的共享存储,进行配置。
第1步、 配置iscsi服务,打开iscsi并开机勾选自启动。
第2步、 依次进入菜单: Sharing – Block(ISCSI),设置Target Global Configuration。
Base Name 可自定义,此处默认。其他可不填写。 点击SAVE保存。
第3步、 设置 Portals :
点击ADD添加,填写IP地址和端口号,然后SAVE保存。
设置后,如下图。
第4步、设置 Initiators :
点击ADD添加,Initiators和Authorized Networks 都选择 ALL ,点击SAVE保存。
设置后,如下图。
第5步、 设置 Authorized Access :
点击ADD添加,此处Group Id、User和Sercret的值可以任意填写,此处分别设置为1、grid和gridasm ,并点击SAVE保存。
设置后,如下图。
第6步、设置 Targets :
Target Name 可随意填写,此处为 asm 。选择 Portal Group ID 、Initiator Group ID ,即是上面所设置的 Group ID。此处为1。其他选项默认即可。 点击SAVE保存。
设置后,如下图。
第7步、设置 Extents :
点击ADD添加,设置Extent name名称;选择Extent type,分为磁盘或者分区,此处选择磁盘。选择磁盘da1、da2、da3、da4等。 选择LUN RPM磁盘转速。其他默认即可。点击SAVE保存。
依次将所需添加的设备添加完毕后,如下图所示。
第8步、设置Associated Targets :
点击ADD添加,选择Target、选择Extent,即是上步设置的asm 、crs、data1、data2、fra等。
设置后,如下图。
二、RAC集群安装
1、配置共享存储
1.1 安装iscsi客户端
racnode各节点,查看系统是否安装iscsi软件包,以centos6.x为例
[root@ ~]# rpm -qa | grep iscsi
iscsi-initiator-utils-6.2.0.873-27.el6_9.x86_64
如未安装,请执行 yum install -y iscsi-initiator-utils 进行安装客户端。
1.2 使用UDEV绑定共享存储
查找iSCSI设备,发现共享存储:
[root@ ~]# iscsiadm -m discovery -t sendtargets -p 192.168.153.230
192.168.153.230:3260,1 iqn.2005-10.org.freenas.ctl:asm
1.3 运行fdisk命令可以发现新的设备。分别对应FreeNAS中设置的Disk Extents。
1.4 磁盘分区
# fdisk /dev/sdb
根据提示输入 n、 p、 w 等
# 同理,重复步骤对 sdc sdd sde 完成分区。
分区完毕后,fdisk -l查看如下:
1.5 安装UEK核心
UEK可以从http://public-yum.oracle.com/下载安装:
http://www.rpmfind.net/linux/centos/6.10/updates/x86_64/Packages/kmod-oracleasm-2.0.8-16.el6_10.x86_64.rpm
http://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el6.x86_64.rpm
http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el6.x86_64.rpm
[root@ ~]# yum install kmod-oracleasm
[root@ ~]# rpm -ivh oracleasmlib-2.0.12-1.el6.x86_64.rpm
[root@ ~]# rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
1.6 创建ASM Disk Volumes
1.6.1 配置并装载ASM核心模块,在一个节点操作即可。
[root@racnode1 ~]# oracleasm configure -i ,根据提示输入:
Configuringthe Oracle ASM library driver.
Thiswill configure the on-boot properties of the Oracle ASM library
driver. The following questions will determinewhether the driver is
loadedon boot and what permissions it will have. The current values
willbe shown in brackets ('[]'). Hitting<ENTER> without typing an
answerwill keep that current value. Ctrl-Cwill abort.
Defaultuser to own the driver interface []: grid
Defaultgroup to own the driver interface []: asmadmin
StartOracle ASM library driver on boot (y/n) [n]: y
Scanfor Oracle ASM disks on boot (y/n) [y]: y
WritingOracle ASM library driver configuration: done
[root@racnode1 ~]# oracleasm init
Creating/dev/oracleasm mount point: /dev/oracleasm
Loadingmodule "oracleasm": oracleasm
MountingASMlib driver filesystem: /dev/oracleasm
1.6.2 创建ASM磁盘
[root@racnode1 ~]# oracleasm createdisk CRSVOL1 /dev/sdb1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk DATAVOL1 /dev/sdc1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk DATAVOL2 /dev/sdd1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm createdisk FRAVOL1 /dev/sde1
Writingdisk header: done
Instantiatingdisk: done
[root@racnode1 ~]# oracleasm listdisks
CRSVOL1
DATAVOL1
DATAVOL2
FRAVOL1
使用oracleasm-discover查找ASM磁盘,运行该命令查看是否能找到刚创建的4个磁盘。
[root@racnode1 ~]# oracleasm-discover
UsingASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
[ASMLibrary - Generic Linux, version 2.0.4 (KABI_V2)]
Discovereddisk: ORCL:CRSVOL1 [2096753 blocks (1073537536 bytes), maxio 512]
Discovereddisk: ORCL:DATAVOL1 [41940960 blocks (21473771520 bytes), maxio 512]
Discovereddisk: ORCL:DATAVOL2 [41940960 blocks (21473771520 bytes), maxio 512]
Discovereddisk: ORCL:FRAVOL1 [62912480 blocks (32211189760 bytes), maxio 512]
使用oracleasm scandisks 扫描asm磁盘
[root@racnode1 ~]# oracleasm scandisks
Reloading disk partitions: done
Cleaning any stale ASM disks...
Scanning system for ASM disks...
2、rac软件安装
2.1 安装oracle所依赖组件
[root@racnode1 ~]# yum -y install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel numactl-devel sysstat unixODBC unixODBC-devel compat-libstdc++* libXp
[root@racnode1 ~]# rpm -ivh pdksh-5.2.14-30.x86_64.rpm (这个包需要下载)
[root@racnode2 ~]# 同上
2.2 安装前预检查配置信息
请使用grid用户 ,racnode1、racnode2都要执行一下这个脚本。
[grid@racnode1 ~]$ cd /opt/grid/ 切换到软件上传目录
[grid@racnode1 grid]$ ./runcluvfy.sh stage -pre crsinst -n racnode1,racnode2 -fixup -verbose
结果如:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Performing pre-checks for cluster services setup
Checking node reachability...
Check: Node reachability from node "racnode1"
Destination Node Reachable?
------------------------------------ ------------------------
racnode1 yes
racnode2 yes
Result: Node reachability check passed from node "racnode1"
Checking user equivalence...
Check: User equivalence for user "grid"
Node Name Status
------------------------------------ ------------------------
racnode2 passed
racnode1 passed
Result: User equivalence check passed for user "grid"
(中间部分省略粘贴)
(中间部分省略粘贴)
(中间部分省略粘贴)
Checking the file "/etc/resolv.conf" to make sure only one of domain and search entries is defined
File "/etc/resolv.conf" does not have both domain and search entries defined
Checking if domain entry in file "/etc/resolv.conf" is consistent across the nodes...
domain entry in file "/etc/resolv.conf" is consistent across nodes
Checking if search entry in file "/etc/resolv.conf" is consistent across the nodes...
search entry in file "/etc/resolv.conf" is consistent across nodes
Checking DNS response time for an unreachable node
Node Name Status
------------------------------------ ------------------------
racnode2 passed
racnode1 passed
The DNS response time for an unreachable node is within acceptable limit on all nodes
File "/etc/resolv.conf" is consistent across nodes
Check: Time zone consistency
Result: Time zone consistency check passed
Pre-check for cluster services setup was successful.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.3 开始安装grid软件
确保两个节点racnode1、racnode2都已经启动,然后以grid用户登录,开始Oracle Grid Infrastructure安装 【请在图形界面下】
[grid@racnode1 ~]$ cd /opt/grid/ 切换到软件上传目录
[grid@racnode1 grid]$ ./runInstaller
第1步:选择"skip software updates".
第2步:默认即可。选择"Install and Configure Oracle Grid Infrastructure for a Cluster".
第3步:选择高级安装
第4步: 选择English
第5步:去掉Configure GNS,设置Cluster Name,Scan Name,ScanPort:1521.
注意:将SCAN Name与/etc/hosts文件一致。 我们这里应是: scan-cluster ,Cluster Name可以自定义。
第6步:选择Add,添加节点
Public Hostname输入racnod2, Virtual Hostname输入racnode2-vip
最终结果如下:
验证ssh等效性
1) 如果前置未设置ssh等效性:选择ssh connectivty,输入OS password:grid(grid用户密
码),点击setup,等待即可,成功则下一步。然后点击"T est".
2) 如果前面已经设置了ssh等效性:可以点击"T est",或直接下一步
点击"setup"后
点击"OK"
点击"Test"
点击OK
如果点击"Next",出现[INS-40912]错误:
【这个问题的解答】这是个虚拟IP,当前你应该ping不通。目前你还没安装,暂时不会绑到网卡上。
这个应该在RAC安装完,启动成功后,才会随机往两台机器上的其中一个网卡绑定。
当其中一台机器坏了,自动飘移到另一台。
【解决办法】ifconfig eth0:1 down 或者 ifdown eth0:1 然后,点击"Next"
第7步:选择网卡2:eth1,InterfaceType: Private,点击"Next"
第8步:默认即可."Oracle Automatic Storage Management(Oracle ASM)"
第9步:创建ASM磁盘组。若未发现磁盘,则点击change Discovery Path,输入磁盘所在地址。
第10步:设置密码,如果密码设置相对简单,会弹出提示,直接继续即可。
第11步—第14步:默认即可.
安装前检查,有些警告提示可以忽略。 如有其它错误,根据具体错误提示进行分析配置。点下一步出现。
第15步: 默认即可,点击 install 开始安装。
第16步:安装进程。
提示执行脚本。
一定要以root帐户执行,并且不能同时执行。
先执行racnode1 /u01/app/oraInventory/orainstRoot.sh,
再执行racnode2 /u01/app/oraInventory/orainstRoot.sh
然后,先执行racnode1 /u01/app/11.2.0/grid/root.sh
再执行 racnode2 /u01/app/11.2.0/grid/root.sh
第17步:安装完毕,点击close。 至此rac软件安装完毕。接下来要进行验证。
2.4 验证Oracle Grid Infrastructure安装成功。
以racnode1为例粘贴结果,racnode2执行结果此处不粘贴了。
[root@racnode1 ~]# su - grid
[grid@racnode1 ~]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
检查Clusterware资源:[grid@racnode1 ~]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.CRS.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora.FRA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE racnode2
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE racnode2
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora. racnode1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora. racnode1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora. racnode1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora. racnode2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora. racnode2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora. racnode2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
检查集群节点
[grid@racnode1 ~]$ olsnodes -n
racnode1 1
racnode2 2
检查两个节点上的Oracle TNS监听器进程:
[grid@racnode1 ~]$ ps -ef|grep lsnr|grep -v 'grep'
grid 94448 1 0 15:04 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 94485 1 0 15:04 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER_SCAN1 -inherit
[grid@racnode1 ~]$ ps -ef|grep lsnr|grep -v 'grep'|awk '{print $9}'
LISTENER
LISTENER_SCAN1
确认针对Oracle Clusterware文件的Oracle ASM功能:
[grid@racnode1 ~]$ srvctl status asm -a
ASM is running on racnode1,racnode2
ASM is enabled.
检查Oracle集群注册表(OCR):
[grid@racnode1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 3
Total space (kbytes) : 262120
Used space (kbytes) : 2624
Available space (kbytes) : 259496
ID : 1555425658
Device/File Name : +CRS
Device/File integrity check succeeded
Device/File not configured
Device/File not configured
Device/File not configured
Device/File not configured
Cluster registry integrity check succeeded
Logical corruption check bypassed due to non-privileged user
检查表决磁盘:
[grid@racnode1 ~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
-- ----- ----------------- --------- ---------
1. ONLINE 0d90b0c368684ff5bff8f2094823b901 (ORCL:CRSVOL1) [CRS]
Located 1 voting disk(s).
3、oracle软件安装
确保两个节点racnode1、racnode2都已经启动,然后以oracle用户登录,安装请在图形界面下
进入软件安装包的目录
[oracle@racnode1 database]$ ./runInstaller
第1步:不勾选I wish to …… ,然后点next。
第2步:选择跳过软件更新,点击next。
第3步: 选择仅安装数据库软件,点击next。
第4步: 选择全部节点,并测试ssh互信。
点击SSH Connectivity… ,输入oracle的密码,点击test 测试通过如下提示:
点击OK,然后点击next。
第5步: 选择语言
第6步: 选择安装的数据库类型,此处选择企业版。
第7步: 默认即可
第8步: 默认即可
第9步: 安装前检查,此时检查结果有一条,该条忽略即可。勾选ignore all。点击next。如有其它报错,根据实际情况进行排查处理。
第10步: 默认即可,点击 install 开始安装
第11步: 安装过程中需要执行脚本
先在racnode1执行,执行完毕之后,再在racnode2中执行。
4、配置ASM磁盘组
也可以在安装ORACLE软件之前创建ASM磁盘组。下面开始创建ASM磁盘组。
命令 asmca 启动图形配置 。 点击Create ,创建磁盘组。
Disk Group Name 命名为DATA;
Redundancy选择 External (None);;
disks勾选 DATAVOL1、DATAVOL2;
点击OK,提示创建成功。
同理,创建FRA组。 另外最初安装grid的时候已经配置过CRS。最终结果如下:
其中,点击Mount ALL ,挂载所有磁盘。点击Yes。确认挂载。
5、创建数据库
第1步: 切换到oracle用户,以oracle用户运行命令 dbca 。弹出开始画面。
选择Oracle Real Application Cluster(RAC)database,点击next。
选择Create a Database,创建一个数据库。点击next。
第2步: 选择General Purpose or Transaction Processing
第3步:选择Configuration Type:Admin-Managed. Global Database Name:testdb. SID Prefix:testdb.
点击"Select ALL". 这里一定要选择全部节点.
第4步: 配置Enterprise Managert 和 Automatic Maintenance Tasks.
第5步:设置密码。"Use the Same Administrative Password for All Accounts"
提示密码过于简单,点击Yes 。
第6步:在"Databse Area",点击"Browse",选择+DATA.
要求设置ASMSNMP密码
第7步:设置FRA和归档。定义快速恢复区(FRA)大小时,一般用整个卷的大小的90%
点击"Browse",选择 FRA
第8步:设置Sample Schemas和Custom Scripts.一般不勾选"Sample Schemas"
第9步:设置内存、SGA和PGA、字符集、连接模式。
选择Typical,SGA and PGA,先用默认的744MB. 后面根据情况也可以调整。
第10步:点击"Next"
第11步:开始创建数据库。选择"Create Database"
创建过程中。
弹出下图,提示Database creation complete.和相应的提示信息。
点Exit,退出。数据库创建完成。
RAC安装到此完成。
三、RAC 基本操作、ASM基本操作及日常查看
很多说法:Oracle 自身bug, 如果启动失败 root先执行
/bin/dd if=/var/tmp/.oracle/npohasd of=/dev/null bs=1024 count=1
1、关闭启动顺序
(一)关闭过程(关闭数据库->CRS集群关闭)
第1步、关闭数据库:
用oracl用户执行srvctl命令
语法:srvctl stop database -d dbname [-o immediate]
作用:可以一次性关闭dbname的所有实例
[oracle@racnode1 ~]$ srvctl stop database -d racdb -停止所有节点上的实例
然后查看状态:
[oracle@racnode1 ~]$ srvctl status database -d racdb
Instance racnode1 is not running on node racnode1
Instance racnode2 is not running on node racnode2
第2步、停止HAS(High Availability Services),必须以root用户操作
[root@racnode1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@racnode1 bin]# ./crsctl stop has -f
[root@racnode1 bin]# ./crsctl stop crs -f
本命令只能关闭当前节点的CRS服务,因此需要在RAC的所有节点上执行,启动也一样。has与crs等同
第3步、停止节点集群服务,必须以root用户:
[root@racnode1 oracle]# cd /u01/grid/11.2.0/grid/bin
[root@racnode1 bin]# ./crsctl stop cluster ----停止本节点集群服务
[root@racnode1 bin]# ./crsctl stop cluster -all ---停止所有节点服务
也可以如下控制所停节点:
[root@racnode1 bin]# crsctl stop cluster -n racnode1 racnode2
CRS-2677: Stop of 'ora.cssd' on 'racnode1' succeeded
CRS-2677: Stop of 'ora.cssd' on 'racnode2' succeeded
。。。。。。。。。。。省略日志输出。。。。。。。。。。。。。。
你如果想一条命令把所有的进程全部停止可以使用上述命令。如果不指定参数的话对当前节点有效,如果指定参数的话对相关参数节点有效。
第4步、检查集群进程状态
[root@racnode1 bin]# crsctl check cluster
详细输出
[root@racnode1 bin]# crs_stat -t -v
只检查本节点的集群状态
[root@racnode1 bin]# crsctl check crs
(二)启动过程(CRS集群启动->启动数据库)
第1步、启动HAS
单一节点启动
[root@racnode2 ~]# crsctl start has
[root@racnode2 ~]# crsctl start crs
[root@racnode2 ~]# crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
所有节点启动
[root@racnode1 bin]# crsctl start cluster -n racnode1 racnode2
CRS-4123: Oracle High Availability Services has been started.
[root@racnode1 bin]# crsctl start cluster -all
[root@racnode2 ~]# crsctl check cluster
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online
此命令会在后台启动所有RAC CRS相关进程
[root@racnode2 ~]# crs_stat -t -v
CRS-0184: Cannot communicate with the CRS daemon.
因为start has启动的crs进程比较多因此会启动的比较慢,我的机器等待了5分钟,在没有完全启动成功之前会报上述错误,需要耐心等待一段时间后执行下面命令即可查看到所有CRS相关进程服务已经启动。
[root@racnode2 ~]# crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora.DATA.dg ora....up.type 0/5 0/ ONLINE ONLINE racnode1
ora....ER.lsnr ora....er.type 0/5 0/ ONLINE ONLINE racnode1
ora....N1.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode2
ora....N2.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora....N3.lsnr ora....er.type 0/5 0/0 ONLINE ONLINE racnode1
ora.asm ora.asm.type 0/5 0/ ONLINE ONLINE racnode1
ora.cvu ora.cvu.type 0/5 0/0 ONLINE ONLINE racnode1
ora.gsd ora.gsd.type 0/5 0/ OFFLINE OFFLINE
ora....network ora....rk.type 0/5 0/ ONLINE ONLINE racnode1
ora.oc4j ora.oc4j.type 0/1 0/2 ONLINE ONLINE racnode1
ora.ons ora.ons.type 0/3 0/ ONLINE ONLINE racnode1
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE racnode1
ora....C1.lsnr application 0/5 0/0 ONLINE ONLINE racnode1
ora.racnode1.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.racnode1.ons application 0/3 0/0 ONLINE ONLINE racnode1
ora.racnode1.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE racnode2
ora....C2.lsnr application 0/5 0/0 ONLINE ONLINE racnode2
ora.racnode2.gsd application 0/5 0/0 OFFLINE OFFLINE
ora.racnode2.ons application 0/3 0/0 ONLINE ONLINE racnode2
ora.racnode2.vip ora....t1.type 0/0 0/0 ONLINE ONLINE racnode2
ora....ry.acfs ora....fs.type 0/5 0/ ONLINE ONLINE racnode1
ora.scan1.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode2
ora.scan2.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
ora.scan3.vip ora....ip.type 0/0 0/0 ONLINE ONLINE racnode1
说明:
英文解释
ora.gsd is OFFLINE by default ifthere is no 9i database in the cluster.
ora.oc4j is OFFLINE in 11.2.0.1 as DatabaseWorkload Management(DBWLM) is unavailable. these can be ignored in11gR2 RAC.
中文解释
ora.gsd是集群服务中用于与9i数据库进行通信的一个进程,在当前版本中为了向后兼容才保存下来,状态为OFFLINE不影响CRS的正常运行与性能,我们忽略即可
ora.oc4j是在11.2.0.2以上版本中有效的服务进程,用于DBWLM的资源管理,因此在11.2.0.1以下版本并没有使用
第2步、启动数据库:
oracl用户执行srvctl命令:
语法:srvctl start|stop|status database -d dbname [-o immediate]
作用:可以一次性启动dbname的所有实例
[oracle@racnode1 ~]$ srvctl start database -d racdb -启动所有节点上的实例
然后查看状态:
[oracle@racnode1 ~]$ srvctl status database -d racdb
(三)检查状态
在root下执行命令,请配置环境变量,可省略完整路径。
export ORACLE_HOME=/u01/grid/product/11gr2
export PATH=$ORACLE_HOME/bin:$PATH
(1).详细输出资源全名称并检查状态
crsctl status resource -t
crsctl status resource
(2).常用srvctl命令
指定dbname上某个实例
srvctl start|stop|status instance -d <dbname> -i <instance_name>
(3).显示RAC下所有实例配置与状态
srvctl status|config database -d <dbname>
(4).显示所有节点的应用服务(VIP,GSD,listener,ONS)
srvctl start|stop|status nodeapps -n<node_name>
(5).ASM进程服务管理
srvctl start|stop|status|config asm -n <nodename>[-i <asm_inst_name>] [-o<oracle_home>]
srvctl config asm -a
srvctl status asm -a
(6).可以获取所有的环境信息:
srvctl getenv database -d <dbname> [-i<instance_name>]
(7).设置全局环境和变量:
srvctl setenv database -d<dbname> -t LANG=en
(8).在OCR中删除已有的数据库信息
srvctl remove database -d <dbname>
(9).向OCR中添加一个数据库的实例:
srvctl add instance -d <dbname> -i<instance_name> -n <node1>
srvctl add instance -d <dbname> -i<instance_name> -n <node2>
(10).检查监听的状态
srvctl status listener
srvctl config listener -a
(11)SCAN配置信息
srvctl config scan
(12)SCAN listener状态信息
srvctl status scan
小结:crsctl命令是一个集群级别命令,可以对所有集群资源进行统一启动、停止等管理操作
srvctl命令是一个服务级别命令,可以对单一服务资源进行统一启动、停止等管理操作
2、查看数据库实例、datafile、logfile、controfile、ASM实例
查看数据库实例
#su - oracle
[oracle@racnode1 ~]$ sqlplus / as sysdba
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
orcl2 OPEN
查看datafile、logfile、controfile
SQL> select TS#,STATUS,NAME from v$datafile;
TS# STATUS NAME
---------- --------------------- ---------------------------------
0 SYSTEM +DATA/testdb/datafile/system.256.911229287
1 ONLINE +DATA/orcl/datafile/sysaux.257.911229291
2 ONLINE +DATA/ orcl /datafile/undotbs1.258.911229293
4 ONLINE +DATA/ orcl /datafile/users.259.911229293
6 ONLINE +DATA/ orcl /datafile/example.264.911229559
5 ONLINE +DATA/ orcl /datafile/undotbs2.265.911230235
查看logfile:
SQL> desc v$logfile;
Name Type Nullable Default Comments
--------------------- ------------- -------- ------- --------
GROUP# NUMBER Y
STATUS VARCHAR2(7) Y
TYPE VARCHAR2(7) Y
MEMBER VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y
SQL> select GROUP#,STATUS,MEMBER from v$logfile;
GROUP# STATUS MEMBER
---------- ------------------------------------------ -------
2 +FRA/orcl/onlinelog/group_2.262.997887279
2 +CRS/orcl/onlinelog/group_2.258.997887279
1 +FRA/orcl/onlinelog/group_1.261.997887277
1 +CRS/orcl/onlinelog/group_1.257.997887277
3 +FRA/orcl/onlinelog/group_3.265.997887443
3 +CRS/orcl/onlinelog/group_3.259.997887443
4 +FRA/orcl/onlinelog/group_4.266.997887443
4 +CRS/orcl/onlinelog/group_4.260.997887445
8 rows selected
查看controlfile:
SQL> desc v$controlfile;
Name Type Nullable Default Comments
--------------------- ------------- -------- ------- --------
STATUS VARCHAR2(7) Y
NAME VARCHAR2(513) Y
IS_RECOVERY_DEST_FILE VARCHAR2(3) Y
BLOCK_SIZE NUMBER Y
FILE_SIZE_BLKS NUMBER Y
SQL> select NAME,STATUS from v$controlfile;
NAME STATUS
------------------------------------------------ -------
+FRA/orcl/controlfile/current.260.997887273
+CRS/orcl/controlfile/current.256.997887273
查看ASM实例
[grid@racnode1 ~]$ sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM1 STARTED
[grid@racnode2 ~]$ sqlplus / as sysasm
SQL> select instance_name,status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
+ASM2 STARTED
[grid@racnode1 ~]$ sqlplus / as sysasm
查看集群负载情况:
SQL> select inst_id, count(*) from gv$session group by inst_id;
INST_ID COUNT(*)
---------- ----------
1 41
2 39
查看用户在哪个节点:
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
orcl2
查看RAC集群名称:
[root@racnode1 ~]# /u01/app/11.2.0/grid/bin/cemutlo -n
racnode-cluster
其他:crs 等同 has ["crsctl start crs" = "crsctl start has"]
/u01/app/11.2.0/grid/bin/crsctl start crs -- root启动集群实例
/u01/app/11.2.0/grid/bin/crsctl stop crs -- root关闭集群实例
srvctl start database -d orcl -- oracle启动数据库
srvctl stop database -d orcl -- oracle关闭数据库
crsctl status resource -t -- root、grid 查看资源状态
/u01/app/11.2.0/grid/bin/crs_stat -t -v -- oracle10g查看资源命令,11g仍可用。
3、ASM基本操作
asmcmd常用命令格式
[grid@racnode1 ~]$ asmcmd
ASMCMD> help
查看asm磁盘组
[grid@racnode1 ~]$ asmcmd -p
ASMCMD [+] > exit
四、整个安装过程中,可能常见的问题整理
1、安装前预检查配置信息报错:
如果没有配置DNS(只在hosts文件里标明),检测/etc/resolv.conf会失败的,可以忽略该警告,直接 ignore 即可,不影响安装,或配置dns服务,重新检测。
2、安装grid软件 SSH互信问题导致无法进行下一步
ssh互信配置
3、安装grid软件 [INS-40912]错误
忽略即可
4、安装grid 环境检查报错或警告; 如果最后一列中有yes,则选择Fix & Check Again,运行其中的脚本
这个警告,点击"more details"查看如下:
选择Ignore All.
5、执行root.sh报错
找不到共享库。
racnode1:
# yum install compat-libcap1*
racnode2:
# yum install compat-libcap1*
然后, racnode1 执行root.sh
然后, racnode2 执行root.sh
6、 INS-20802 Oracle Cluster Verifaction Utility failed。 可以skip。点击"Skip"
提示:INS-32091,Software Installation was successful.But some configuration assistants failed,were
cancelled or skipped. Are you sure you want to continue?
选择"Yes"。
7、检查结果warning."Single Client Access Name(SCAN)。忽略即可。勾选"Ignore All"。
Oracle安装过程检查报错
8、设置ASMSNMP密码 报错
解决:以grid用户给asmsnmp设置密码。然后再点击上图的"Retry"。