Oracle RAC安装

发布时间 2023-03-22 21:13:47作者: 微风徐徐$

参考链接:https://blog.csdn.net/u012779110/article/details/125862423,需要安装两个操作系统Oracle Linux 7.4,分别为rac1和rac2,需要设置

①rac1和rac2操作系统的外部IP,叫Public IP(固定的IP),公共ip,是真实的ip,提供对外的数据服务,这两个需要和宿主机IP在同一个网段。因为宿主机IP是172.25.100.1/255.255.255.0,所以可以设置为172.25.100.131和172.25.100.132

②rac1和rac2的虚拟IP,叫virtual IP(浮动的IP),简称vip,与公共IP在同一个网段,用于故障切换和负载均衡。设置为172.25.100.133和172.25.100.134

③rac1和rac2的内部IP,叫private ip,私有IP,用于节点间的通讯,如心跳同步。设置为1.1.1.1和1.1.1.2

④scan ip,对应的是整个RAC群体(scan是single client access name),通讯路径是client->scan ip->vip。设置为172.25.100.130

一、安装操作系统

安装链接:https://www.cnblogs.com/muhai/p/16567352.html

这里虚拟机名称是rac1和rac2,位置在E:\RAC\rac1和E:\RAC\rac2

二、配置网络(与之前单节点稍有不同,所以这里重新描述)

1、修改host

vi /etc/hosts
#Public IP
172.25.100.131 rac1
172.25.100.132 rac2
#Virtual IP
172.25.100.133 rac1-vip
172.25.100.134 rac2-vip
#Private IP
1.1.1.1 rac1-priv
1.1.1.2 rac1-priv
#Scan IP
172.25.100.130 rac-scan

2、配置网卡(添加网卡参考链接:https://www.linuxidc.com/Linux/2017-03/142370.htm),rac1和rac2方法一致。可以先配置网卡然后直接scp /etc/hosts文件

cd /etc/sysconfig/network-scripts
ls -lrth  //可以看到有ifcfg-ens33和ifcfg-ens36两张网卡信息,ifconfig查看只有ens33的信息,没有ens36,ens36的配置文件是空的,可以把ens36删除,利用nmtui生成ens36网卡
rm -rf ens36
nmtui

①Enter;②向右箭头Add;③Enter;

④向下箭头Ethernet;⑤删除默认名称,Profile name和Device都输入ens36;⑥IPv4配置选择Manual,输入地址1.1.1.1,可以在ifcfg-end36里面修改(也可以到后面配置),向下箭头到OK->back->quit

 

#vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static  //修改BOOTPROTO
ONBOOT=yes  //修改ONBOOT
IPADDR=172.25.100.131  //增加rac2是172.25.100.132
NETMASK=255.255.255.0  //增加
GATEWAY=172.25.100.1   //增加
#vi /etc/sysconfig/network-scripts/ifcfg-ens36
BOOTPROTO=static  //修改BOOTPROTO
IPADDR=1.1.1.1 //rac2是1.1.1.2

 之后通过ifconfifig查看网卡信息还是没有ens36,需要在虚拟机界面添加网卡,即虚拟机->设置->添加->网络适配器->仅主机模式,ifup ens36之后ifconfig查看可以看到ens36的相关信息

三、安装前准备(RAC安装先准备grid和asm,之后再安装数据库,因为安装数据库的时候要选择节点)

参考链接:https://www.cnblogs.com/muhai/p/16498840.html第二步,先挂载iso文件(在安装前准备里第三步的6),关闭selinux和防火墙,后添加yum源(软件包,在131和132之间传送安装包可以使用scp)

1、这里创建安装目录有点区别,不只有oracle的安装路径,还有grid的安装路径

mkdir -p /u01/app/grid
mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/oracle/product/19.0.0/dbname_1
mkdir -p /home/oracle/scripts

chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle /home/oracle/scripts 
chmod -R 775 /u01 /home/oracle/scripts

2、配置环境变量

①grid用户(节点1的ORACLE_SID是+ASM1,节点二的ORACLE_SID是+ASM2)

//grid用户
su - grid
#vi /home/grid/.bash_profile
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export ORACLE_SID=+ASM1
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
alias sqlplus=' rlwrap sqlplus'
alias rman=' rlwrap rman'
alias adrci='rlwrap adrci'
alias dgmgrl='rlwrap dgmgrl'
alias asmcmd='rlwrap asmcmd'

②oracle用户(节点1的ORACLE_HOSTNAME和ORACLE_SID都是rac1,节点2的都是rac2)

su - oracle
#vi /home/oracle/.bash_profile
umask 022 export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=rac1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1 export ORACLE_SID=rac1 export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss" export TNS_ADMIN=$ORACLE_HOME/network/admin export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export PATH=/usr/sbin:/usr/local/bin:$PATH export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib alias sqlplus=' rlwrap sqlplus' alias rman=' rlwrap rman' alias adrci='rlwrap adrci' alias dgmgrl='rlwrap dgmgrl' alias asmcmd='rlwrap asmcmd'

3、ASM配置

①虚拟机创建共享盘(创建之前E:\RAC\sharedisk19c目录要存在,这个命令在宿主机执行)

"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 10g -a lsilogic -t 2 "E:\RAC\sharedisk19c\share-data01.vmdk"
"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 10g -a lsilogic -t 2 "E:\RAC\sharedisk19c\share-data02.vmdk"
"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 10g -a lsilogic -t 2 "E:\RAC\sharedisk19c\share-data03.vmdk"  
//两个磁盘组在后面安装grid配置ASM的时候不会成功,normal方式最少3个

前面的exe是执行程序,-c是创建命令,-s是执行大小命令,-a是指定磁盘适配器类型,有三种类型,这里选择lsi logic scsi接口适配器,-t指定虚拟磁盘的类型,选择2是创建一个包含在单一虚拟文件中的预分配虚拟磁盘,双引号里是创建的共享盘位置

②编辑虚拟机配置文件

关闭两台虚拟机->记事本打开Rac1.wmx和Rac2.wmx添加以下内容->重新打开rac2和rac2,查看两个节点的设置会出现硬盘2、硬盘3和硬盘4

//在Rac1.wmx,Rac2.wmx后面加入以下内容,scsi1:0表示第一块,scsi1:1表示第二块,共添加两块
#shared disks configure
diskLib.dataCacheMaxSize=0        
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096    
diskLib.maxUnsyncedWrites = "0"

disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"

scsi1:0.mode = "independent-persistent"
scsi1:0.deviceType = "disk"
scsi1:0.present = "TRUE"
scsi1:0.fileName = "E:\RAC\sharedisk19c\share-data01.vmdk" 
scsi1:0.redo = ""
 
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "E:\RAC\sharedisk19c\share-data02.vmdk" 
scsi1:1.redo = ""

scsi1:2.mode = "independent-persistent"
scsi1:2.deviceType = "disk"
scsi1:2.present = "TRUE"
scsi1:2.fileName = "E:\RAC\sharedisk19c\share-data03.vmdk" 
scsi1:2.redo = ""

③配置共享存储(这里磁盘组前缀是asm-disk*,后面安装grid配置ASM时查找磁盘组可以/dev/asm*查找)

//获取设备标识符,与之后的对比
/usr/lib/udev/scsi_id -g -u -d /dev/sdb
#vi /etc/scsi_id.config
//循环将信息输入到 /etc/udev/rules.d/99-oracle-asmdevices.rules文件,循环四次,因为有四个磁盘
for i in a b c d; do echo "KERNEL==\"sd*\", ENV{DEVTYPE}==\"disk\", SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id -g -u -d \$devnode\",RESULT==\"`/usr/lib/udev/scsi_id -g -u -d /dev/sd$i`\", RUN+=\"/bin/sh -c 'mknod /dev/asm-disk$i b  \$major \$minor; chown grid:asmadmin /dev/asm-disk$i; chmod 0660 /dev/asm-disk$i'\""  >> /etc/udev/rules.d/99-oracle-asmdevices.rules; done
cat /etc/udev/rules.d/99-oracle-asmdevices.rules

//加载rules文件,重新加在udev rule
/sbin/udevadm control --reload
//检查新的设备名称
/sbin/udevadm trigger --type=devices --action=change
//诊断udev rule
/sbin/udevadm test /sys/block/*
ll /dev/asm*
//将配置的文件直接传给rac2,不需要重新生成
scp /etc/udev/rules.d/99-oracle-asmdevices.rules rac2:/etc/udev/rules.d/
reboot

4、停用avahi服务

systemctl stop  avahi-daemon
systemctl disable avahi-daemon

5、解压安装文件(grid、oracle、Opatch和RU补丁)

chown -R grid:oinstall /ORACLE19C
su - grid -c "unzip /ORACLE19C/LINUX.X64_193000_grid_home.zip -d /u01/app/19.0.0/grid/" 
chown -R oracle:oinstall /ORACLE19C
su - oracle -c "unzip /ORACLE19C/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1" 

chown -R grid:oinstall /ORACLE19C
su - grid
cd /u01/app/19.0.0/grid
./OPatch/opatch lsinventory  //目前版本是 12.2.0.1.17
mv OPatch OPatch.BAK  //备份
unzip /ORACLE19C/p6880880_190000_Linux-x86-64.zip -d /u01/app/19.0.0/grid/
unzip /ORACLE19C/p33803476_190000_Linux-x86-64.zip -d /ORACLE19C

 

6、安装cvuqdisk

 rpm -ivh /u01/app/19.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm 

四、安装grid软件(在rac1安装时rac2也会同步安装,所以前面步骤比如创建用户、设置环境变量、asm磁盘等都要一起设置好)

 1、先升级后安装,升级到19.15版本

//图形化界面登录grid用户
source ~/.bash_profile cd $ORACLE_HOME //升级并安装grid ./gridSetup.sh -applyRU /ORACLE19C/33803476

配置选项,默认 新集群配置 Oracle Grid Infrastructure,Next

集群配置,默认 配置Oracle默认集群,Next

网络即插即用,默认选择Create Local SCAN,SCAN Name为rac-scan

集群节点信息,添加另一个节点信息。Add->Add a single node->Public Hostname:rac2->Virtual Hostname:rac2-vip,next

点击SSH Connectivity,输入grid密码,点击Setup,出现Failed to setup passwordless SSH的错误(rac2),反应过来是rac2那台主机还没有创建grid用户,所以出现错误,在rac2创建号grid用户之后Setup就成功了。Setup之后点击Test。在选择磁盘之前一定要把rac1、rac2的安装前东西配置好,因为两台是一起配置的。

网络接口使用情况,ens33作为public ip,ens36作为priv ip

 

存储选项,默认,Use Oracle Flex ASM for storages

 

创建GI管理仓库,默认,No

 

 创建ASM磁盘组,磁盘组名默认DATA,冗余默认normal,磁盘查找路径修改为查找/dev/asm*,找到后会出现在列表里,勾选两个磁盘组;取消选中configure Oracle ASM Filter Driver

出现错误磁盘数量不够,需要新增一个磁盘(注:选择两个磁盘组不会通过,会出现asm磁盘数量不够,11.2g以后normal至少要三个磁盘组,high至少5个磁盘组)

ASM密码,选择使用统一密码(这里密码太简单了报错),设置成Oracle321

故障隔离,默认

管理选项,不做任何操作,Next

操作系统组,默认(这些组在前面的时候创建过了)

安装路径,默认(rac2的这些路径也要存在,否则会报错)

在rac2没有创建相关的路径(也没有配置环境变量)时会出现错误(在rac1安装的时候rac2也同步安装,所以相关的东西都要一致)

创建产品清单位置,默认

root脚本执行,选择自动运行配置脚本,选择root用户验证

必要条件检查,选择全部忽略

总结,选择安装

两个节点以root用户执行两个脚本

# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/19.0.0/grid/root.sh

完成。crsctl stat res -t查看集群状态出现错误CRS-4535: Cannot communicate with Cluster Ready Services

crsctl check crs  //出现crs-4535错误
ps -ef | grep d.bin  //查询发现没有crsd.bin,crsd进程死掉了
cd $ORACLE_HOME/bin
./crsctl stat res -t -init //发现crsd处于offline状态;asm也是offline状态 more $ORACLE_HOME/log/rac1/crsd/crsd.log //查看日志,这里看了没有日志文件 ps -ef | grep pmon //没有输出,说明asm实例没有启动

 

 

五、