Oracle RAC安装

参考链接: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(rac1和rac2都要配置)

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 rac2-priv
#Scan IP
172.25.100.130 rac-scan

2、配置网卡(添加网卡参考链接:https://www.linuxidc.com/Linux/2017-03/142370.htm),rac1和rac2方法一致,但是要区分ip。

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的安装路径(rac1和rac2都要配置,不然后面确认目录是会出错)

mkdir -p /u01/app/grid
mkdir -p /u01/app/19.0.0/grid
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_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、配置环境变量(rac1和rac2都要配置,而且两个节点的内容略有不同)

①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用户(rac1和rac2都要配置,节点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配置(rac1和rac2的.wmx都要配置,grid安装时OCR需要至少三个磁盘,安装数据库实例时也要执行ASM磁盘组存放数据文件,这里创建6个磁盘)

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

"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 2g -a lsilogic -t 2 "E:\RAC\sharedisk19c\share-ocr01.vmdk"
"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 2g -a lsilogic -t 2 "E:\RAC\sharedisk19c\share-ocr02.vmdk"
"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -c -s 2g -a lsilogic -t 2 "E:\RAC\sharedisk19c\share-ocr03.vmdk"
"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"  

//OCR组只有ocr01、ocr02的话两个磁盘在后面安装grid配置ASM的时候不会成功,normal方式最少3个,加上ocr03

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

②编辑虚拟机配置文件

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

//在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-ocr01.vmdk" 
scsi1:0.redo = ""
 
scsi1:1.mode = "independent-persistent"
scsi1:1.deviceType = "disk"
scsi1:1.present = "TRUE"
scsi1:1.fileName = "E:\RAC\sharedisk19c\share-ocr02.vmdk" 
scsi1:1.redo = ""

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

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

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

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

③配置共享存储(这里磁盘组前缀是asm-disk*,创建6个磁盘,后面安装grid配置OCR和安装Oracle软件时使用,查找磁盘组可以/dev/asm*查找)

//获取设备标识符,与之后的对比
/usr/lib/udev/scsi_id -g -u -d /dev/sdb
cat /dev/null >/etc/udev/rules.d/99-oracle-asmdevices.rules //循环将信息输入到 /etc/udev/rules.d/99-oracle-asmdevices.rules文件,循环7次,因为有7个磁盘 for i in a b c d e f g; 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

//将配置的文件直接传给rac2,不需要重新生成
scp /etc/udev/rules.d/99-oracle-asmdevices.rules  rac2:/etc/udev/rules.d/
//清盘
dd if=/dev/zero of=/dev/sdb bs=4M count=100
dd if=/dev/zero of=/dev/sdc bs=4M count=100
dd if=/dev/zero of=/dev/sdd bs=4M count=100
dd if=/dev/zero of=/dev/sde bs=4M count=100
dd if=/dev/zero of=/dev/sdf bs=4M count=100
dd if=/dev/zero of=/dev/sdg bs=4M count=100

//加载rules文件,重新加在udev rule
/sbin/udevadm control --reload
//检查新的设备名称
/sbin/udevadm trigger --type=devices --action=change
//诊断udev rule
/sbin/udevadm test /sys/block/*
ll /dev/asm*
reboot

4、停用avahi服务(rac1和rac2都要配置)

systemctl stop  avahi-daemon
systemctl disable avahi-daemon

5、rac1解压安装文件(只是rac1grid、oracle、Opatch和RU补丁,都只是解压到rac1,但另外的节点rac2不需要,在安装时rac2的/u01/app/19.0.0/grid和/u01/app/oracle/product/19.0.0/dbhome_1要保持干净,不能有任何文件,否则会出现The Oracle home location contains directories or files on following remote nodes:,即rac2的ORACLE_HOME路径下包含目录和文件

LINUX.X64_193000_grid_home.zip是grid安装包

LINUX.X64_193000_db_home.zip是oracle安装包

p6880880_190000_Linux-x86-64.zip是OPatch更新包

p33803476_190000_Linux-x86-64.zip是grid升级补丁包

p33806152_190000_Linux-x86-64.zip是oracle升级补丁包

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,Cluster Name为rac,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的安装前东西配置好,因为两台是一起安装的。

点击Next出现错误Installer has detected that alias names ....,查看rac2的主机名发现不是rac2而是localhost.localdomain,需要通过root用户将其改为rac2,Next就可以了

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

 

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

 

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

 

创建ASM磁盘组,OCR和表决磁盘组名改为OCR,冗余选择External,磁盘查找路径修改为查找/dev/asm*,找到后会出现在列表里,取消选中configure Oracle ASM Filter Driver

(11.2g以后normal至少要三个磁盘,high至少5个磁盘)

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

故障隔离,默认

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

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

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

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

创建产品清单位置,默认

root脚本执行,默认,不选

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

总结,选择安装

在提示执行脚本的时候,需要两个节点以root用户执行两个脚本。先执行完脚本再点击OK。

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

执行顺序是节点rac1、rac2都先执行/u01/app/oraInventory/orainstRoot.sh;之后节点rac1、rac2再执行/u01/app/19.0.0/grid/root.sh。如果rac1先执行完上面两个脚本,再到rac2执行该两个脚本会出现错误CLSRSC-505: The root script cannot proceed on this node rac2 because the root script...参考链接是https://blog.csdn.net/qq961573863/article/details/106029982

service NetworkManager stop;  //关闭网络管理器
chkconfig NetworkManager off
/u01/app/19.0.0/grid/root.sh

之后查看hostname,发现主机名变成rac1-vip,通过hostnamectl set-hostname rac1将主机名改成rac1,之后再rac1运行该脚本就成功了,成功之后在rac2运行该脚本,之后也成功了。

出现这个错误,可忽略,点击Next即可。

结束。

 crsctl stat res -t查看集群状态

su -grid 
cd $ORACLE_HOME/bin
crsctl stat res -t

 

五、添加ASM磁盘组DATA(存放ORACLE的数据文件,以grid用户运行)

su - grid
asmca

1、点击磁盘组,点击创建

2、创建磁盘组。步骤是输入磁盘组名称DATA,冗余选择External,默认显示符合项Show Eligible,可以更改查找前缀,最后点击确定。

3、创建成功,Exit

 

六、安装ORACLE软件(root解压,oracle执行)

chown oracle:oinstall /ORACLE19C/
su - oracle -c "unzip /ORACLE19C/p33806152_190000_Linux-x86-64.zip -d /ORACLE19C/" //解压ORACLE的升级包到rac1,之前的p33803476_190000_Linux是grid的升级包
su - oracle
cd $ORACLE_HOME mv OPatch OPatch.BAK
//备份,oracle home目录也要更新OPatch包 unzip /ORACLE19C/p6880880_190000_Linux-x86-64.zip //图形界面登录oracle用户 source ~/.bash_profile cd $ORACLE_HOME ./runInstaller -applyRU /ORACLE19C/33806152/ //先升级再安装oracle数据库

 1、配置选项,选择第二个,仅安装软件

2、数据库安装选项,默认,RAC安装

3、节点选择,点击SSH连接,输入密码,Setup->Test->Next

4、数据库版本,默认企业版

5、安装路径,默认

6、操作系统组,默认

 

7、Root脚本执行,默认

8、条件检查,选中忽略全部,Next(注:如果有ASM的错误,比如下面的ASM storage privilege for the user oracle,下面提示是asmdba组里没有oracle用户,需要在创建用户组的时候把oracle加入相关用户组)

9、总结,Install

 

先执行完脚本点击OK。

/u01/app/oracle/product/19.0.0/dbhome_1/root.sh

10、安装产品,完成之后Close。

 

七、创建数据库实例

//图形界面登录oracle用户
su - oracle
dbca

1、数据库操作,默认,创建数据库

2、创建模式,默认,高级配置

3、部署类型,默认

4、节点选择,默认,有rac1和rac2

5、数据库标识,全局数据库名和SID设置为rac,不选择创建为容器数据库

6、存储选项,选择第二个选项,数据文件存储类型选择ASM,路径默认,勾中OMF。这里发现数据文件位置是空的没有检测到,但是之前已经创建过DATA磁盘组了,这里就是oracle用户读取不了grid创建DATA磁盘组的权限问题。需要给orale用户授权。

 

cd /u01/app/19.0.0/grid/bin/  
ll -l oracle //检查GRID_HOME/bin下oracle是否有s权限,如果没有则添加s权限
chomd +s oracle
ls -l oracle
//-rwsrwsr-x 1 grid oinstall 425729040 Mar 23 16:13 oracle

7、 快速恢复选项。默认,不选,Next。

8、Data Vault Option,默认,不选,Next。

9、内存配置选项,默认ASMM,SGA+PGA占总的70%~90%,Next

10、管理器选项,取消选中所有。

11、用户密码,选择使用相同密码,设置为Oracle321

12、创建数据库选项,默认,Next。

13、条件检查,与DNS相关的警告,选择Ignore All,Next

14、Summary,点击Finish。

15、开始创建数据库实例。

16、Finish。

如果创建数据库实例的时候出现创建不成功的情况,进入$ORACLE_BASE/diag/rdbms/rac/rac2/trace/alert_rac1.log查看日志发现出现ORA-27508:IPC error sending a message,和节点安装配置asm&private IP有关。

su - grid
oifcfg getif  //查看当前节点的网口信息,发现有两个asm&private ip
oifcfg delif -global eth0/172.24.5.0  //删除私网eth0即可

 

八、节点操作命令

1、查看节点启动状态(grid用户)

crsctl stat res -t

2、查看实例状态(oracle用户)

srvctl status database -d rac

3、启停节点并查看实例状态(oracle用户)

srvctl stop instance -d rac -i rac1  //关闭节点rac1
srvctl status database -d rac  //节点状态
srvctl start instance -d rac -i rac1  //开启节点rac1
srvctl status database -d rac  //节点状态

4、通过sqlplus连入数据库,查看节点状态

sqlplus / as sysdba;

出现bash: rlwrap: command not found...错误是因为没有安装rlwrap依赖包,重新通过yum install即可

select instance_number,instance_name,host_name,status,version from gv$instance;

 

posted @ 2023-03-21 23:53  微风徐徐$  阅读(493)  评论(0编辑  收藏  举报