CentOS6.5 安装Oracle11g R2双节点群集

序言

         一开始我是选择CentOS7安装Oracle11g R2群集的,因为在安装途中经常出些莫名其妙的问题,后来查阅资料获知Oracle11g真的是很老的版本了,对于最新操作系统的支持不怎么好,所以就选用CentOS6.5安装群集。

       文章参考了:https://blog.51cto.com/12926024/2153332

                             https://www.cnblogs.com/yuky/p/9304212.html

一. 网络设计

#Public IP

#公有IP是数据库服务器真实IP,一般DBA用此IP登录服务器做管理工作

192.168.247.21    RAC1

192.168.247.31    RAC2

#Private IP

# 私用IP群集内部使用,用于心跳检测,数据传输等等

192.168.68.11       RAC1-priv

192.168.68.21       RAC2-priv

#Virtual IP

#虚拟IP是群集负载均衡IP,当用户登录数据库,群集会根据负载随机分配一个IP让你登录

192.168.68.32       RAC1-vip

192.168.68.42       RAC2-vip

#Scan IP

#监听IP是客户使用的IP,也是我们平常登录数据库应填的IP,群集会随机分配一个真实的节点让你登录

192.168.247.51      RAC-scan

# Virtual IP和Scan IP都是不存在的IP,是群集软件(Grid)虚拟出来的IP,方便用户操作数据库

二.安装操作系统

    使用VMware安装CentOS6.5系统,注意选择:自定安装-->稍后安装操作系统,在安装操作系统前先添加一张网卡再安装操作系统,这样安装完系统之后网卡2就会自动配有UUID(设备编号),不然自己找UUID,你会怀疑人生的。

三.配置网络

3.1.配置网络之设置静态IP

因为使用的是VMware虚拟机,虚拟机默认IP都是DHCP浮动的,先把虚拟机IP设置为静态.

进入cmd---->ipconfig

可以看到VMware给我们分配的虚拟网卡是VMnet1和VMnet8

将虚拟网卡IP改为静态IP ↑

编辑VMware网络设置 ↓

NAT网络用于Public IP

主机网络用于Private IP,主机网络跟NAT类似,模式选择仅主机模式就行了

3.2 配置网络之设置系统IP

cd /etc/sysconfig/network-scripts

ls

vim ifcfg-eth0

vim ifcfg-eth1

3.3 配置网络之添加DNS

vim /etc/resolv.conf

3.4 配置网络之添加路由

vim /etc/sysconfig/static-routes (Centos6在这里文件)

vim /etc/sysconfig/network-scripts/route-eth0 (CentOS7在这个文件,并且这只是网卡1的路由文件,还要编辑网卡2)

3.5 配置网络之重启网卡

service network restart 

3.6 配置网络之配置域名

vim /etc/hosts

至此网络配置完毕,注意RAC1节点与RAC2节点两个节点都应配置网络。且我RAC1节点的主机名为RAC1,RAC2节点的主机名为RAC2,我是安装系统的时候就指定了主机名,没设置主机名的同学设置一下主机名。

四.关闭不必要软件

4.1 关闭selinux(RAC1,RAC2都执行)

setenforce 0   #立即生效,临时关闭,重启恢复

vim /etc/selinux/config

设置SELINUX=disabled #永久关闭,重启生效

4.2 关闭防火墙(RAC1,RAC2都执行)

CentOS6关闭防火墙

service iptables stop

chkconfig ip6tables off

chkconfig iptables off

CentOS7关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

4.3 停用NTP服务(RAC1,RAC2都执行)

Grid软件自带时钟同步服务,我们停用系统时钟同步,使用群集自带的时钟同步服务

service ntpd status

chkconfig ntpd off

mv /etc/ntp.conf /etc/ntp.conf.bak

五.配置Oracle系统参数

5.1 配置内核参数(RAC1,RAC2都执行)

vi /etc/sysctl.conf

# for oracle 11g

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2147483648

kernel.shmmax = 68719476736

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

立即生效: /sbin/sysctl –p

5.2 更改文件限制参数(RAC1,RAC2都执行)

vi /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

5.3 更改login文件(RAC1,RAC2都执行)

vi /etc/pam.d/login

session    required     pam_limits.so

5.4 更改profile文件(RAC1,RAC2都执行)

vi /etc/profile

#set oracle rac env

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

5.5 创建用户和组(RAC1,RAC2都执行)

groupadd -g 601 oinstall

groupadd -g 602 dba

groupadd -g 603 oper

groupadd -g 604 asmadmin

groupadd -g 605 asmoper

groupadd -g 606 asmdba

useradd -g oinstall -G dba,asmdba,oper oracle

useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid

设置密码

passwd grid

passwd oracle

5.6 创建grid用户环境变量(RAC1,RAC2都执行)

su - grid

vim .bash_profile

export ORACLE_SID=+ASM1 #注意RAC2设置为 +ASM2

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/11.2.0/grid

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

export PATH=$ORACLE_HOME/bin:$PATH

export LANG=en_US

umask 022

5.7 创建Oracle用户环境变量(RAC1,RAC2都执行)

su - oracle

vim ~/.bash_profile

export ORACLE_SID=rac1 # 注意RAC2节点设置为 rac2

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"

export TMP=/tmp

export TMPDIR=$TMP

export PATH=$PATH:$ORACLE_HOME/bin

export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

umask 022

5.8 创建安装目录(RAC1,RAC2都执行)

mkdir -p /u01/app/oracle

mkdir -p /u01/app/grid

mkdir -p /u01/app/11.2.0/grid

chown -R grid:oinstall /u01/app/grid

chown -R grid:oinstall /u01/app/11.2.0

chown -R oracle:oinstall /u01/app/oracle

chmod -R 775 /u01

mkdir -p /u01/app/oraInventory

chown -R grid:oinstall /u01/app/oraInventory

chmod -R 775 /u01/app/oraInventory

6. 配置节点互信

在安装群集时,只需要在一个节点安装软件即可,节点互信会自动把安装的软件复制到其他节点

首先配置RAC1,RAC2 Oracle用户的节点互信

su - oracle

mkdir ~/.ssh

chmod 700 ~/.ssh

ssh-keygen -t rsa (全回车,默认即可)

ssh-keygen -t dsa (全回车,默认即可)

(以上节点互信命令,RAC1,RAC2均要执行)

返回RAC1,执行(下面互信命令 RAC2不执行)

cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

ssh RAC2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

ssh RAC2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys oracle@RAC2:~/.ssh/authorized_keys

再配置RAC1,RAC2 grid用户的节点互信

su - grid

mkdir ~/.ssh

chmod 700 ~/.ssh

ssh-keygen -t rsa (全回车,默认即可)

ssh-keygen -t dsa (全回车,默认即可)

(以上节点互信命令,RAC1,RAC2均要执行)

返回RAC1,执行(下面互信命令 RAC2不执行)

cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

ssh RAC2 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

ssh RAC2 cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys

scp ~/.ssh/authorized_keys grid@RAC2:~/.ssh/authorized_keys

7.安装群集依赖软件

yum install -y  binutils*  compat-libstdc*  elfutils-libelf*  gcc*  glibc*  ksh*  libaio*  libgcc* libstdc*  make*  sysstat*  unixODBC*  libaio-devel*  glibc-devel.i686 libaio.i686 libaio-devel.i686  libstdc++-devel.i686 unixODBC-devel.i686 compat-libcap1*  compat-libcap1.i686  expat*

确认一下两个节点RPM包cvuqdisk-1.0.9-1.rpm是否安装。

su - root

cd /home/grid/grid/rpm/

rpm -ivh cvuqdisk-1.0.9-1.rpm

scp  /home/grid/grid/rpm/cvuqdisk-1.0.9-1.rpm root@rac-2:/root

rpm -ivh cvuqdisk-1.0.9-1.rpm

(确保RAC1,RAC2都安装)

8.添加共享硬盘

虚拟机编辑设置,添加三块盘,分别叫:

ocr_vote.vmdk        data.vmdk       fra.vmdk(注意磁盘的大小)

这样在RAC1依次建立三块盘,分别名为ocr_vote.vmdk        data.vmdk       fra.vmdk

再看编辑这里就会多3块盘

双击编辑硬盘

硬盘添加好后,编辑虚拟机vmx文件

添加

disk.EnableUUID="TRUE"
disk.locking = "false" 
scsi1.shared="TRUE"
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" 
scsi1:5.deviceType = "disk" 
scsi1:1.shared = "true"
scsi1:2.shared = "true"
scsi1:3.shared = "true"
scsi1:4.shared = "true"
scsi1:5.shared = "true"

然后在RAC2添加共享硬盘,因为RAC1已经创建了硬盘,RAC2只需使用已创建硬盘即可

依次添加ocr_vote.vmdk   data.vmdk  fra.vmdk

然后设置为永久硬盘,注意选区应与RAC1一致 ocr_vote 1:1 data 1:2 fra 1:3

开启虚拟机,查看磁盘时候挂载

fdisk -l

因为我已经装了群集,使用了盘符,所以这里只显示/dev/sdb,正常应该显示3块盘

/dev/sdb ,/dev/sdc,/dev/sdd 分别对应ocr_vite,data,fra

查询磁盘UUID(RAC1和RAC2)

如果uuid查询不到,检查添加的虚拟机文件是否正确

虚拟机的vmx文件增加了disk.enableUUID = "TRUE"

scsi_id --whitelisted --replace-whitespace --device=/dev/sdb

scsi_id --whitelisted --replace-whitespace --device=/dev/sdc

scsi_id --whitelisted --replace-whitespace --device=/dev/sdd

正常情况下,RAC1与RAC2的UUID应该是一致的,如果不一致,检查一下盘区(ocr_vote1:1,data1:2,fra1:3)是不是设置错了?

配置裸设备文件(RAC1和RAC2):

vi /etc/udev/rules.d/99-oracle-asmdevices.rules

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c2970a7c751fb10b2b412f57d5f1", NAME="asm-OCR", OWNER="grid", GROUP="asmdba", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29307291b23a98996cd0ec62022", NAME="asm-DATA", OWNER="grid", GROUP="asmdba", MODE="0660"
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29991d458a7f089fe668a4a492f", NAME="asm-FRA", OWNER="grid", GROUP="asmdba", MODE="0660"

注意,每条命令一行,不能换行.

加载裸设备

start_udev

查看是否加载成功

ls /dev/asm*

9.安装前检查

su  - grid

cd grid软件解压目录

./runcluvfy.sh stage -pre crsinst -n rac-1,rac-2 -fixup -verbose

我检查有这些不成功

i386是32位软件,因为Oracle11g是非常老的数据库了,它风靡全球的时候,主流计算机都是32位的,我们yum安装的时候已经装了64位的对应软件,就算你单独下载这些软件也是安装不上的,会提示与64位的冲突。这些i386错误安装时忽略掉即可。

pdksh在oracle11g已经被ksh取代,提示这个是oracle11g的一个BUG

可以使用:wget  http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm 下载pdksh-5.2.14 

不用试了,装不上的,提示与KSH冲突.

NTPD检查不成功是因为我关闭了NTPD服务,但配置文件没删除,被检测到了,删除配置文件即可。

10.安装grid软件

su - root

xhost + 

su - grid

export DISPLAY=192.168.247.31:0.0

export LANG=en_US

cd /home/grid/grid

./runInstaller

出来的盘,选择/dev/asm-OCR

后面检查i386错误,忽略即可。

执行第二个脚本的时候会遇到错误:

Adding daemon to inittab
CRS-4124: Oracle High Availability Services startup failed.
CRS-4000: Command Start failed, or completed with errors.
ohasd failed to start: Inappropriate ioctl for device
ohasd failed to start at /u01/app/11.2.0/grid/crs/install/rootcrs.pl line 443.

 ADVM/ACFS is not supported on redhat-release-server-6Server-6.5.0.1.el6.x86_64

 oracle官网说是bug;

解决办法:

回退脚本执行

/u01/app/11.2.0/grid/crs/install/roothas.pl -deconfig -force -verbose

然后再执行第二个脚本 

/u01/app/11.2.0/grid/root.sh

当执行到 Adding daemon to inittab 这句话出来的时候

新开一个终端执行:

/bin/dd if=/var/tmp/.oracle/npohasd  of=/dev/null bs=1024 count=1
一直执行直到不出现/bin/dd: opening`/var/tmp/.oracle/npohasd': No such file or directory 

然后等待即可

导致这个错误的原因是在/etc/hosts中配置了SCAN的地址,尝试ping这个地址信息,如果可以成功,则这个错误可以忽略。

我尝试ping scan ip可以ping通,所以也就忽略了这个错误。

11.确认群集是否安装成功

su - grid

检查群集运行状态

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

检查群集状态

crs_stat -t -v

注:

oc4j、gsd默认服务是禁用的

检查群集节点

olsnodes -n

检查两个节点上的oracle tms监听

ps -ef|grep lsnr|grep -v 'grep'

ps -ef|grep lsnr|grep -v 'grep'|awk '{print $9}'

确定针对oracle Clusterware文件的oracle ASM功能:

检查oracle群集注册表(OCR):

[grid@RAC1 ~]$ ocrcheck
Status of Oracle Cluster Registry is as follows :
     Version                  :          3
     Total space (kbytes)     :     262120
     Used space (kbytes)      :       2568
     Available space (kbytes) :     259552
     ID                       : 1748729178
     Device/File Name         :  +ocr_vote
                                    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@RAC1 ~]$ crsctl query css votedisk
##  STATE    File Universal Id                File Name Disk group
--  -----    -----------------                --------- ---------
 1. ONLINE   6c1c6ab59d554ff9bfb24e7a9e2e3d86 (/dev/asm-OCR) [OCR_VOTE]
Located 1 voting disk(s).
[grid@RAC1 ~]$ 

12.配置ASM磁盘

su - grid

asmca

13.安装Oracle软件

su - root

xhost + 

su - oracle

export DISPLAY=192.168.247.31:0.0

export LANG=en_US

cd /home/oracle/database

./runInstaller

然后使用DBCA创建数据库

至此,安装全部完成。

14.ORACLE11G 群集关闭

---RAC1
su - oracle
sqlplus / as sysdba
SQL> shutdown immediate

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

---RAC2
su - oracle
sqlplus / as sysdba
SQL> shutdown immediate

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

---RAC1
cd /u01/app/11.2.0/grid/bin/
./crsctl  stop  cluster  -all

查看集群状态

[grid@rac1 ~]$ crs_stat -t
CRS-0184: Cannot communicate with the CRS daemon.

15.重启后群集开启

cd /u01/app/11.2.0/grid/bin/

 ./crsctl start cluster -n RAC1 RAC2

可能会遇到:

CRS-4639: Could not contact Oracle High Availability Services
CRS-4000: Command Start failed, or completed with errors.

[root@RAC1 bin]# ps -ef|grep has
root       2632      1  0 20:10 ?        00:00:00 /u01/app/11.2.0/grid/bin/ohasd.bin reboot
root      65805      1  0 22:25 ?        00:00:00 /u01/app/11.2.0/grid/bin/ohasd.bin reboot
root     102710   5956  0 22:29 pts/0    00:00:00 grep has
[root@RAC1 bin]# kill -9 2632 65805

执行:

[root@b1 grid]# cd /u01/app/11.2.0/grid/crs/install
[root@b1 install]#  ./roothas.pl -deconfig -force -verbose
[root@b1 install]# cd /u01/app/11.2.0/grid/
[root@b1 grid]# ./root.sh

当执行到 Adding daemon to inittab 这句话出来的时候

新开一个终端执行:

/bin/dd if=/var/tmp/.oracle/npohasd  of=/dev/null bs=1024 count=1
一直执行直到不出现/bin/dd: opening`/var/tmp/.oracle/npohasd': No such file or directory 

然后等待即可(记住,RAC1可执行的时候,需到RAC2执行同样的语句.)
[grid@b1 ~]$ crs_stat -t

16.设置群集开机自启动

[root@host1 ~]# cd /u01/app/11.2.0/grid/bin/crsctl enable crs
[root@host1 ~]# cd /u01/app/11.2.0/grid/bin/crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

发布了35 篇原创文章 · 获赞 61 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/woailyoo0000/article/details/88780691