暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

Oracle 19c RAC安装

  1. 安装准备

虚拟机:VMware workstation16.2.3

操作系统:Redhat8.5

CPU:1 Core

内存:8GB

Swap:16GB

Oracle安装包:LINUX.X64_193000_db_home.zip

GI安装包: LINUX.X64_193000_grid_home.zip

二、操作系统优化

1、关闭防火墙和禁用Selinux

[root@19c-ypw-rac1 ~]# systemctl stop firewalld.service

[root@19c-ypw-rac1 ~]# systemctl disable firewalld.service

[root@19c-ypw-rac2 ~]# systemctl stop firewalld.service

[root@19c-ypw-rac2 ~]# systemctl disable firewalld.service

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2、修改hugepage(大页文件) 和numa

检查:

cat /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/transparent_hugepage/defrag
修改

sed -i 's/quiet/quiet transparent_hugepage=never numa=off/' /etc/default/grub

grep quiet /etc/default/grub

grub2-mkconfig -o /boot/grub2/grub.cfg

reboot生效

3、调整network

[root@19c-ypw-rac1 ~]# echo "NOZEROCONF=yes" >>/etc/sysconfig/network && cat /etc/sysconfig/network

# Created by anaconda

NOZEROCONF=yes

[root@19c-ypw-rac2 ~]# echo "NOZEROCONF=yes" >>/etc/sysconfig/network && cat /etc/sysconfig/network

# Created by anaconda

NOZEROCONF=yes

4、禁用虚拟网卡 (两节点执行)

systemctl stop libvirtd

systemctl disable libvirtd

三、IP规划:

服务器

Public IP

VIP IP

Pirvate IP

SCANIP

19c-ypw-node1

192.168.1.50

192.168.1.52

10.10.16.51

192.168.1.54

192.168.1.55

192.168.1.56

19c-ypw-node2

192.168.1.51

192.168.1.53

10.10.16.50

四、网卡配置

1、网卡聚合

操作系统中ens161和ens224两张网卡做bond0聚合,ens161单独做心跳网卡 (无心跳交换机)

  1. 修改网卡创建bond

19c-ypw-node1

[root@19c-ypw-rac1 ~]#

vi /etc/sysconfig/network-scripts/ifcfg-ens161

vi /etc/sysconfig/network-scripts/ifcfg-ens224

添加

MASTER=bond0

SLAVE=yes

vi /etc/sysconfig/network-scripts/ifcfg-bond0

添加

TYPE=Bond

BOOTPROTO=none

NAME=bond0

DEVICE=bond0

ONBOOT=yes

IPADDR=192.168.1.50

PREFIX=24

DNS=192.168.1.1

NM_CONTROLLED=yes

BONDING_OPTS="downdelay=0 miimon=1 mode=balance-alb updelay=0"

BONDING_MASTER=yes

[root@19c-ypw-rac1 ~]# cd /etc/sysconfig/network-scripts/

[root@19c-ypw-rac1 network-scripts]#

cp -r ifcfg-bond0 ifcfg-bond0:1

TYPE=Bond

BOOTPROTO=none

NAME=bond0:1 #修改为虚拟网卡名称

DEVICE=bond0:1 #修改为虚拟网卡名称

ONBOOT=yes

IPADDR=192.168.1.52 #修改实际使用虚拟IP

PREFIX=24

DNS=192.168.1.1

NM_CONTROLLED=yes

BONDING_OPTS="downdelay=0 miimon=1 mode=balance-alb updelay=0"

BONDING_MASTER=yes

19c-ypw-node2

[root@19c-ypw-rac2 ~]#

vi /etc/sysconfig/network-scripts/ifcfg-ens161

vi /etc/sysconfig/network-scripts/ifcfg-ens224

添加

MASTER=bond0

SLAVE=yes

vi /etc/sysconfig/network-scripts/ifcfg-bond0

添加

TYPE=Bond

BOOTPROTO=none

NAME=bond0

DEVICE=bond0

ONBOOT=yes

IPADDR=192.168.1.51

PREFIX=24

DNS=192.168.1.1

NM_CONTROLLED=yes

BONDING_OPTS="downdelay=0 miimon=1 mode=balance-alb updelay=0"

BONDING_MASTER=yes

[root@19c-ypw-rac2 ~]# cd /etc/sysconfig/network-scripts/

[root@19c-ypw-rac2 network-scripts]#

cp -r ifcfg-bond0 ifcfg-bond0:1

TYPE=Bond

BOOTPROTO=none

NAME=bond0:1 #修改为虚拟网卡名称

DEVICE=bond0:1 #修改为虚拟网卡名称

ONBOOT=yes

IPADDR=192.168.1.53 #修改实际使用虚拟IP

PREFIX=24

DNS=192.168.1.1

NM_CONTROLLED=yes

BONDING_OPTS="downdelay=0 miimon=1 mode=balance-alb updelay=0"

BONDING_MASTER=yes

nmcli connection reload

  1. 配置心跳网卡:

19c-ypw-rac1

[root@19c-ypw-rac1 ~]#

vi /etc/sysconfig/network-scripts/ifcfg-ens160

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static #改成静态

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens160

UUID=899eb9b5-b232-4745-b3aa-b05fb28fcb09

ONBOOT=yes

IPADDR=10.10.16.51 #按照实际需求填写

PREFIX=24

#GATEWAY=10.10.16.0

19c-ypw-rac2

[root@19c-ypw-rac2 ~]#

vi /etc/sysconfig/network-scripts/ifcfg-ens160

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static #改成静态

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens160

UUID=899eb9b5-b232-4745-b3aa-b05fb28fcb09

ONBOOT=yes

IPADDR=10.10.16.50 #按照实际需求填写

PREFIX=24

#GATEWAY=10.10.16.0

五、配置主机hosts文件

主机名映射配置(两节点执行)

echo "

#public ip

192.168.1.50 19c-ypw-rac1

192.168.1.51 19c-ypw-rac2

#vip

192.168.1.52 19c-ypw-rac1-vip

192.168.1.53 19c-ypw-rac2-vip

#private ip

10.10.16.51 19c-ypw-rac1-priv

10.10.16.50 19c-ypw-rac2-priv

#Scanip

192.168.1.54 ypw-rac-scan

192.168.1.55 ypw-rac-scan

192.168.1.56 ypw-rac-scan " >> /etc/hosts

六、创建用户及所属组(两节点执行)

groupadd -g 54321 oinstall

groupadd -g 54322 dba

groupadd -g 54323 oper

groupadd -g 54324 backupdba

groupadd -g 54325 dgdba

groupadd -g 54326 kmdba

groupadd -g 54327 asmdba

groupadd -g 54328 asmoper

groupadd -g 54329 asmadmin

groupadd -g 54330 racdba

useradd -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba -u 10000 oracle

useradd -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba -u 10001 grid

echo "oracle" | passwd --stdin oracle

echo "grid" | passwd --stdin grid

七、创建安装目录(两节点执行)

mkdir -p /u01/app/19.3.0/grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/oraInventory

mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1

mkdir -p /home/soft

chown -R grid:oinstall /u01

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

chmod -R 775 /u01

chmod -R 775 /home/soft

chown -R oracle:oinstall /home/soft

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

chmod -R 775 /u01/app/oraInventory

八、配置环境变量(grid和oracle)

节点一:

Grid

cat >> /home/grid/.bash_profile << "EOF"

################add#########################

umask 022

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/19.3.0/grid

export TNS_ADMIN=$ORACLE_HOME/network/admin

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export ORACLE_SID=+ASM1

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

alias sas='sqlplus / as sysasm'

export PS1="[\`whoami\`@\`hostname\`:"'$PWD]\$'

EOF

Oracle

cat >> /home/oracle/.bash_profile << "EOF"

################ add#########################

umask 022

export TMP=/tmp

export TMPDIR=$TMP

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1

export ORACLE_HOSTNAME=19c-ypw-rac1

export TNS_ADMIN=\$ORACLE_HOME/network/admin

export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib

export ORACLE_SID=db19c1

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

alias sas='sqlplus / as sysdba'

export PS1="[\`whoami\`@\`hostname\`:"'$PWD]\$'

EOF

节点二:

Grid

cat >> /home/grid/.bash_profile << "EOF"

################add#########################

umask 022

export TMP=/tmp

export TMPDIR=$TMP

export ORACLE_BASE=/u01/app/grid

export ORACLE_HOME=/u01/app/19.3.0/grid

export TNS_ADMIN=$ORACLE_HOME/network/admin

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export ORACLE_SID=+ASM1

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

alias sas='sqlplus / as sysasm'

export PS1="[\`whoami\`@\`hostname\`:"'$PWD]\$'

EOF

Oracle

cat >> /home/oracle/.bash_profile << "EOF"

################ add#########################

umask 022

export TMP=/tmp

export TMPDIR=$TMP

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1

export ORACLE_HOSTNAME=19c-ypw-rac2

export TNS_ADMIN=\$ORACLE_HOME/network/admin

export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib

export ORACLE_SID=db19c2

export PATH=/usr/sbin:$PATH

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH

alias sas='sqlplus / as sysdba'

export PS1="[\`whoami\`@\`hostname\`:"'$PWD]\$'

EOF

九、系统内核参数优化

  1. 配置sysctl.conf (两节点执行)

memTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')

totalMemory=$((memTotal / 2048))

shmall=$((memTotal / 4))

if [ $shmall -lt 2097152 ]; then

shmall=2097152

fi

shmmax=$((memTotal * 1024 - 1))

if [ "$shmmax" -lt 4294967295 ]; then

shmmax=4294967295

fi

cat <<EOF>> /etc/sysctl.d/97-oracle-database-sysctl.conf

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = $shmall

kernel.shmmax = $shmmax

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 = 1048576

net.ipv4.conf.eth0.rp_filter = 1

net.ipv4.conf.eth1.rp_filter = 2

EOF

[root@19c-ypw-rac1 sysctl.d]# sysctl --system

2、配置用户资源限制limits.conf(两节点执行)

cat >> /etc/security/limits.conf <<EOF

grid soft nproc 2047

grid hard nproc 16384

grid soft nofile 1024

grid hard nofile 65536

grid soft stack 10240

grid hard stack 32768

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft stack 10240

oracle hard stack 32768

oracle soft memlock 3145728

oracle hard memlock 3145728

EOF

3、配置pam.d/login(两节点执行)

cat <<EOF>> /etc/pam.d/login

session required pam_limits.so

session required /lib64/security/pam_limits.so

EOF

十、配置 源(两节点全部配置)

19c-ypw-rac1

[root@19c-ypw-rac1 ~]#

echo "mount /dev/sr0 /mnt" >> /etc/rc.local

[root@19c-ypw-rac1 ~]# mv /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/redhat.repo_bak

[root@19c-ypw-rac1 ~]# touch /etc/yum.repos.d/local.repo

[root@19c-ypw-rac1 ~]# touch /etc/yum.repos.d/local1.repo

[root@19c-ypw-rac1 ~]#

cat <<EOF>> /etc/yum.repos.d/local.repo

[local]

name=local

baseurl=file:///mnt/BaseOS

gpgcheck=0

enabled=1

EOF

[root@19c-ypw-rac1 ~]#

cat <<EOF>> /etc/yum.repos.d/local1.repo

[local1]

name=local

baseurl=file:///mnt/AppStream

gpgcheck=0

enabled=1

EOF

[root@19c-ypw-rac1 ~]# yum clean all && yum makecache

19c-ypw-rac2

[root@19c-ypw-rac2 ~]#

echo "mount /dev/sr0 /mnt" >> /etc/rc.local

[root@19c-ypw-rac2 ~]# mv /etc/yum.repos.d/redhat.repo /etc/yum.repos.d/redhat.repo_bak

[root@19c-ypw-rac2 ~]# touch /etc/yum.repos.d/local.repo

[root@19c-ypw-rac2 ~]# touch /etc/yum.repos.d/local1.repo

[root@19c-ypw-rac2 ~]#

cat <<EOF>> /etc/yum.repos.d/local.repo

> [local]

> name=local

> baseurl=file:///mnt/BaseOS

> gpgcheck=0

> enabled=1

> EOF

[root@19c-ypw-rac2 ~]#

cat <<EOF>> /etc/yum.repos.d/local1.repo

> [local1]

> name=local

> baseurl=file:///mnt/AppStream

> gpgcheck=0

> enabled=1

> EOF

[root@19c-ypw-rac2 ~]# yum clean all && yum makecache

十一、安装所需依赖包

dnf install -y bc* binutils* compat-libcap1* compat-libstdc++* dtrace-modules* dtrace-modules-headers* dtrace-modules-provider-headers* dtrace-utils* elfutils-libelf* elfutils-libelf-devel* fontconfig-devel* glibc* glibc-devel* ksh* libaio* libaio-devel* libdtrace-ctf-devel* libXrender* libXrender-devel* libX11* libXau* libXi* libXtst* libgcc* librdmacm-devel* libstdc++* libstdc++-devel* libxcb* make* net-tools* nfs-utils* python* python-configshell* python-rtslib* python-six* targetcli* smartmontools* sysstat* gcc* nscd* unixODBC* unzip* readline * python3 * ksh* sysstat* libnsl* policycoreutils*

十二、配置chrony时钟同步(可配置外部时钟源)

服务端(rac1):

[root@19c-ypw-rac1 ~]#

mv /etc/chrony.conf /etc/chrony.conf_bak

[root@19c-ypw-rac1 ~]#

vi /etc/chrony.conf

#添加以下两行

allow all

local stratum 10

:wq保存退出

[root@19c-ypw-rac1 ~]# systemctl enable chronyd

[root@19c-ypw-rac1 ~]# systemctl start chronyd

[root@19c-ypw-rac1 ~]# systemctl status chronyd

[root@19c-ypw-rac1 ~]# chronyc sources

客户端(rac2):

[root@19c-ypw-rac2 ~]#

mv /etc/chrony.conf /etc/chrony.conf_bak

[root@19c-ypw-rac2 ~]# vi /etc/chrony.conf

#添加以下内容

#同步时钟IP

server 192.168.1.50 iburst

#默认为0,让chrond在选择源时忽略源的层级

# Ignore stratum in source selection

stratumweight 0

# Record the rate at which the system clock gains/losses time.

#通过内核调用程序,根据实际时间计算出增减时间的比率,将它记录到一个文件中是最合理的,重启后会从服务器时钟获取较好的价值

driftfile /var/lib/chrony/drift

# Enable kernel RTC synchronization.

#启用RRC(实时时钟)的内核同步

rtcsync

# In first three updates step the system clock instead of slew

# if the adjustment is larger than 10 seconds.

# 如果系统时钟的偏移量大于10秒,则允许在前三次更新中调账系统时钟

makestep 10 3

# Listen for commands only on localhost.

#监听网络接口的命令包

bindcmdaddress 127.0.0.1

#bindcmdaddress ::1

# 当服务器不用时采用本地时间

#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.

commandkey 1

# Generate command key if missing.

generatecommandkey

# Disable logging of client accesses.

noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.

logchange 0.5

logdir /var/log/chrony

:wq保存退出

[root@19c-ypw-rac2 ~]# systemctl enable chronyd

[root@19c-ypw-rac2 ~]# systemctl start chronyd

[root@19c-ypw-rac2 ~]# systemctl status chronyd

[root@19c-ypw-rac2 ~]# chronyc -a makestep

[root@19c-ypw-rac2 ~]# chronyc sources -v

十三、配置共享存储

1、磁盘组规划

磁盘组名称

大小

磁盘路径

OCR

4*2G

/dev/nvme0n3

/dev/nvme0n4

/dev/nvme0n5

/dev/nvme0n6

DATA

4*5G

/dev/nvme0n7

/dev/nvme0n8

/dev/nvme0n9

/dev/nvme0n10

MGMT

 不需要配置

  1. vmware-vdiskmanager工具创建共享磁盘

cd d:

cd vmware15

vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-ocr01.vmdk"

vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-ocr02.vmdk"

vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-ocr03.vmdk"

vmware-vdiskmanager.exe -c -s 2g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-ocr04.vmdk"

vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-data01.vmdk"

vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-data02.vmdk"

vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-data03.vmdk"

vmware-vdiskmanager.exe -c -s 5g -a lsilogic -t 2 "G:\vmware_share_2_19c_rac\share-data04.vmdk"

  1. 虚拟机添加共享磁盘(两个虚拟机全部添加)

添加完成后reboot生效

命令查看磁盘wwid

4、配置多路径(multipath多路径,两节点全部配置)

[root@19c-ypw-rac1 ~]# systemctl enable multipathd.service

[root@19c-ypw-rac1 ~]# systemctl start multipathd.service

[root@19c-ypw-rac1 ~]# /sbin/mpathconf --enable

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n3

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n4

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n5

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n6

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n7

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n8

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n9

[root@19c-ypw-rac1 ~]# multipath -a /dev/nvme0n10

[root@19c-ypw-rac1 ~]# multipath -F

[root@19c-ypw-rac1 ~]# multipath -v2

[root@19c-ypw-rac1 ~]# multipath -v3

修改multipach.conf配置文件

[root@19c-ypw-rac1 ~]#

lsblk -o NAME,WWN,MODEL,SERIAL,TYPE | grep nvme | grep disk

提取wwid并配置到/etc/multipath.conf

vi /etc/multipath.conf

multipaths {

multipath {

wwid eui.b7e28bb28c6872f8000c296b8fd5b490

alias asmocr1

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.b0698e7bca19e89b000c29697660e323

alias asmocr2

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.ba516466449f2290000c296eff5ffe6f

alias asmocr3

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.5f8f41dc6d31af84000c29631cd1463b

alias asmocr4

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.0675fb2a2f6bd000000c296e553e3bdd

alias asmdata1

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.6fa1744225e8ced3000c296f237f30ba

alias asmdata2

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.93a25617b11afecd000c296f9272dc6c

alias asmdata3

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

multipath {

wwid eui.84b469e7a3ebe9d4000c296d4ac03946

alias asmdata4

path_grouping_policy multibus

path_selector "round-robin 0"

failback manual

rr_weight priorities

no_path_retry 5

}

}

[root@19c-ypw-rac2 ~]# systemctl restart multipathd.service

[root@19c-ypw-rac2 ~]# multipath -F

[root@19c-ypw-rac2 ~]# multipath -v2

[root@19c-ypw-rac2 ~]# multipath -v3

[root@19c-ypw-rac2 ~]# multipath -ll

将/etc/multipath.conf多路径配置上传到rac1节点对应路径下,重启multipath查看在rac1节点是否生效

5、配置Udev (两节点全部配置)

[root@19c-ypw-rac2 ~]#

依次替换asmocr1到asmdata1

udevadm info --query=property --name=/dev/mapper/asmocr1 | grep DM_UUID

#创建99-oracle-asmdevice.rules

[root@19c-ypw-rac2 ~]#

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

添加内容如下

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.b7e28bb28c6872f8000c296b8fd5b490",SYMLINK+="asmocr1",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.b0698e7bca19e89b000c29697660e323",SYMLINK+="asmocr2",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.ba516466449f2290000c296eff5ffe6f",SYMLINK+="asmocr3",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.5f8f41dc6d31af84000c29631cd1463b",SYMLINK+="asmocr4",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.0675fb2a2f6bd000000c296e553e3bdd",SYMLINK+="asmdata1",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.6fa1744225e8ced3000c296f237f30ba",SYMLINK+="asmdata2",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.93a25617b11afecd000c296f9272dc6c",SYMLINK+="asmdata3",OWNER="grid",GROUP="asmadmin",MODE="0660"

KERNEL=="dm-*",ENV{DM_UUID}=="mpath-eui.84b469e7a3ebe9d4000c296d4ac03946",SYMLINK+="asmdata4",OWNER="grid",GROUP="asmadmin",MODE="0660"

[root@19c-ypw-rac2 ~]# udevadm control --reload-rules

[root@19c-ypw-rac2 ~]# udevadm trigger --type=devices --action=change

将99-oracle-asmdevices.rules文件上传rac1节点对应路径,然后执行以下命令生效

[root@19c-ypw-rac1 ~]# udevadm control --reload-rules

[root@19c-ypw-rac1 ~]# udevadm trigger --type=devices --action=change

[root@19c-ypw-rac1 ~]# ll /dev/dm*

[root@19c-ypw-rac1 ~]# ll /dev/asm*

十四、配置ssh互信

解压GI安装包并配置ssh互信认证

  1. 将Gi安装包上传至$ORACLE_HOME路径下

[root@19c-ypw-rac1 ~]# su - grid

[grid@19c-ypw-rac1:/home/grid]$cd /home/soft/

[grid@19c-ypw-rac1:/home/soft]$unzip LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME

  1. 安装cvuqdisk依赖包(识别共享存储)

[root@19c-ypw-rac1 ~]# cd /u01/app/19.3.0/grid/cv/rpm

[root@19c-ypw-rac1 rpm]# export CVQUDISK_GRP=oinstall

[root@19c-ypw-rac1 rpm]#

rpm -ivh cvuqdisk-1.0.10-1.rpm

#上传到第二个节点soft目录下同步安装

[root@19c-ypw-rac1 rpm]#

scp cvuqdisk-1.0.10-1.rpm root@192.168.1.51:/soft

[root@19c-ypw-rac2 ~]# cd /home/soft/

[root@19c-ypw-rac2 soft]#

export CVUQDISK_GRP=oinstall

[root@19c-ypw-rac2 soft]#

rpm -ivh cvuqdisk-1.0.10-1.rpm

  1. 配送ssh互信

grid用户

[root@19c-ypw-rac1 ~]# su - grid

[grid@19c-ypw-rac1:/home/grid]$

cd $ORACLE_HOME/oui/prov/resources/scripts

./sshUserSetup.sh -user grid -hosts "19c-ypw-rac1 19c-ypw-rac2" -advanced -confirm -noPromptPassphrase

--根据提示输入grid用户密码

./sshUserSetup.sh -user oracle -hosts "19c-ypw-rac1 19c-ypw-rac2" -advanced -confirm -noPromptPassphrase

--根据提示输入oracle用户密码

#测试连通性,是否正常返回date

[grid@19c-ypw-rac1:/home/grid]$ /usr/bin/ssh -x -l grid 19c-ypw-rac1

[grid@19c-ypw-rac1:/home/grid]$ /usr/bin/ssh -x -l grid 19c-ypw-rac2

[grid@19c-ypw-rac1:/home/grid]$ /usr/bin/ssh -x -l grid 19c-ypw-rac1-vip date

[grid@19c-ypw-rac1:/home/grid]$ /usr/bin/ssh -x -l grid 19c-ypw-rac2-vip date

[grid@19c-ypw-rac1:/home/grid]$ /usr/bin/ssh -x -l grid 19c-ypw-rac1-priv date

[grid@19c-ypw-rac1:/home/grid]$ /usr/bin/ssh -x -l grid 19c-ypw-rac2-priv date

Oracle用户

[root@19c-ypw-rac1 ~]# su - oracle

[oracle@19c-ypw-rac1:/home/oracle]$

cd /u01/app/19.3.0/grid/oui/prov/resources/scripts/

#测试连通性,是否正常返回date

[oracle@19c-ypw-rac1:/u01/app/19.3.0/grid/oui/prov/resources/scripts]$

/usr/bin/ssh -x -l oracle 19c-ypw-rac1 date

[oracle@19c-ypw-rac1:/u01/app/19.3.0/grid/oui/prov/resources/scripts]$

/usr/bin/ssh -x -l oracle 19c-ypw-rac2 date

[oracle@19c-ypw-rac1:/u01/app/19.3.0/grid/oui/prov/resources/scripts]$

/usr/bin/ssh -x -l oracle 19c-ypw-rac1-vip date

[oracle@19c-ypw-rac1:/u01/app/19.3.0/grid/oui/prov/resources/scripts]$

/usr/bin/ssh -x -l oracle 19c-ypw-rac2-vip date

[oracle@19c-ypw-rac1:/u01/app/19.3.0/grid/oui/prov/resources/scripts]$

/usr/bin/ssh -x -l oracle 19c-ypw-rac1-priv date

[oracle@19c-ypw-rac1:/u01/app/19.3.0/grid/oui/prov/resources/scripts]$

/usr/bin/ssh -x -l oracle 19c-ypw-rac2-priv date

十五、安装预检查

1、检查python版本是否是3.6,如果无python3直接安装

[root@19c-ypw-rac2 .ssh]# python3 --version

安装(两节点全部执行)

dnf install -y python3

2、需要单独安装的依赖包(两节点全部执行)

将compat-libcap1-1.10-7.el7.x86_64.rpm上传至服务器/home/soft

[root@19c-ypw-rac1 ~]# cd /home/soft

[root@19c-ypw-rac1 soft]#

rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm

[root@19c-ypw-rac2 ~]# cd /home/soft

[root@19c-ypw-rac2 soft]#

rpm -ivh compat-libcap1-1.10-7.el7.x86_64.rpm

3、开始预检查

su - grid

export CV_ASSUME_DISTID=OL7

$ /u01/app/19.3.0/grid/runcluvfy.sh stage -pre crsinst -n 19c-ypw-rac1,19c-ypw-rac2 -method root

根据提示输入“root”用户密码开始执行预检查

输入 "ROOT" 口令:

正在验证物理内存...通过

正在验证可用物理内存...通过

正在验证交换空间大小...通过

正在验证空闲空间:

19c-ypw-rac2:/usr,19c-ypw-rac2:/etc,19c-ypw-rac2:/sbin,19c-ypw-rac2:/tmp...通过

正在验证空闲空间: 19c-ypw-rac2:/var...通过

正在验证空闲空间:

19c-ypw-rac1:/usr,19c-ypw-rac1:/etc,19c-ypw-rac1:/sbin,19c-ypw-rac1:/tmp...通过

正在验证空闲空间: 19c-ypw-rac1:/var...通过

正在验证用户存在性: grid...

正在验证具有相同 UID 的用户: 10001...通过

正在验证用户存在性: grid...通过

正在验证组存在性: asmadmin...通过

正在验证组存在性: asmdba...通过

正在验证组存在性: oinstall...通过

正在验证组成员资格: asmdba...通过

正在验证组成员资格: asmadmin...通过

正在验证组成员资格: oinstall(主)...通过

正在验证运行级别...通过

正在验证硬性限制: 打开的文件描述符的最大数...通过

正在验证软性限制: 打开的文件描述符的最大数...通过

正在验证硬性限制: 最大用户进程数...通过

正在验证软性限制: 最大用户进程数...通过

正在验证软性限制: 最大堆栈大小...通过

正在验证体系结构...通过

正在验证操作系统内核版本...通过

正在验证操作系统内核参数: semmsl...通过

正在验证操作系统内核参数: semmns...通过

正在验证操作系统内核参数: semopm...通过

正在验证操作系统内核参数: semmni...通过

正在验证操作系统内核参数: shmmax...通过

正在验证操作系统内核参数: shmmni...通过

正在验证操作系统内核参数: shmall...通过

正在验证操作系统内核参数: file-max...通过

正在验证操作系统内核参数: ip_local_port_range...通过

正在验证操作系统内核参数: rmem_default...通过

正在验证操作系统内核参数: rmem_max...通过

正在验证操作系统内核参数: wmem_default...通过

正在验证操作系统内核参数: wmem_max...通过

正在验证操作系统内核参数: aio-max-nr...通过

正在验证操作系统内核参数: panic_on_oops...通过

正在验证包: kmod-20-21 (x86_64)...通过

正在验证包: kmod-libs-20-21 (x86_64)...通过

正在验证包: binutils-2.23.52.0.1...通过

正在验证包: compat-libcap1-1.10...通过

正在验证包: libgcc-4.8.2 (x86_64)...通过

正在验证包: libstdc++-4.8.2 (x86_64)...通过

正在验证包: libstdc++-devel-4.8.2 (x86_64)...通过

正在验证包: sysstat-10.1.5...通过

正在验证包: ksh...通过

正在验证包: make-3.82...通过

正在验证包: glibc-2.17 (x86_64)...通过

正在验证包: glibc-devel-2.17 (x86_64)...通过

正在验证包: libaio-0.3.109 (x86_64)...通过

正在验证包: libaio-devel-0.3.109 (x86_64)...通过

正在验证包: nfs-utils-1.2.3-15...通过

正在验证包: smartmontools-6.2-4...通过

正在验证包: net-tools-2.0-0.17...通过

正在验证组件 "Oracle Notification Service (ONS)" 的端口可用性...通过

正在验证组件 "Oracle Cluster Synchronization Services (CSSD)" 的端口可用性...通过

正在验证具有相同 UID 的用户: 0...通过

正在验证当前组 ID...通过

正在验证Root 用户一致性...通过

正在验证包: cvuqdisk-1.0.10-1...通过

正在验证主机名...通过

正在验证节点连接性...

正在验证主机文件...通过

正在验证检查流经子网的最大 (MTU) 大小数据包...通过

正在验证子网 "192.168.1.0" 的子网掩码一致性...通过

正在验证子网 "10.10.16.0" 的子网掩码一致性...通过

正在验证节点连接性...通过

正在验证多点传送或广播检查...通过

正在验证网络时间协议 (NTP)...通过

正在验证相同核心文件名模式...通过

正在验证用户掩码...通过

正在验证用户不在组中 "root": grid...通过

正在验证时区一致性...通过

正在验证节点之间的时间偏移量...通过

正在验证resolv.conf 完整性...通过

正在验证DNS/NIS 名称服务...通过

正在验证域套接字...通过

正在验证/boot 装载...通过

正在验证守护程序 "avahi-daemon" 未配置且未运行...通过

正在验证守护程序 "proxyt" 未配置且未运行...通过

正在验证等同用户...通过

正在验证RPM Package Manager 数据库...通过

正在验证/dev/shm 作为临时文件系统装载...通过

正在验证路径/var的文件系统装载选项...通过

正在验证DefaultTasksMax 参数...通过

正在验证zeroconf 检查...通过

正在验证ASM 过滤器驱动程序配置...通过

集群服务设置 的预检查成功。

CVU 操作已执行: stage -pre crsinst

日期: 2026-4-11 9:11:21

CVU 主目录: /u01/app/19.3.0/grid/

用户: grid

十六、安装GI

[grid@19c-ypw-rac1:/home/grid]$cd $ORACLE_HOME

[grid@19c-ypw-rac1:/u01/app/19.3.0/grid]$export LANG=en_US.UTF-8

[grid@19c-ypw-rac1:/u01/app/19.3.0/grid]$export CV_ASSUME_DISTID=OL7

[grid@19c-ypw-rac1:/u01/app/19.3.0/grid]$./gridSetup.sh

##带补丁安装(19.12)

[grid@19c-ypw-rac1:/u01/app/19.3.0/grid]$./gridSetup.sh -applyRU /home/soft/32900083/32895426/

集群名称和SCAN名称必须以字母开头,不允许数字在前

点击“Next”会出现INS-40912报错时执行以下命令临时将网卡禁用 (要在两节点全部执行)

ifconfig bond0:1 down

OCR只需要配置三块盘即可,目的是实现仲裁

执行root.sh脚本会提示报错信息,也是因为linux 8 ssh版本问题,需要临时设置一下export CV_ASSUME_DISTID=OL7 (root用户执行)

查看集群状态

十七、安装DatabaseSoft

[oracle@19c-ypw-rac1:/home/oracle]$cd $ORACLE_HOME

[oracle@19c-ypw-rac1:/u01/app/oracle/product/19.3.0/dbhome_1]$

export LANG=en_US.UTF-8

[oracle@19c-ypw-rac1:/u01/app/oracle/product/19.3.0/dbhome_1]$

export CV_ASSUME_DISTID=OL7

[oracle@19c-ypw-rac1:/u01/app/oracle/product/19.3.0/dbhome_1]$./runInstaller

十八、DBCA创建数据库

[oracle@19c-ypw-rac1:/home/oracle]$dbca

十九、查询集群和实例状态

二十、安装常见问题

  1. GI安装点击“SSH Connectivity”步骤报错 INS-06006

原因:19c安装依赖Scp,但Redhat8系统scp命令默认使用SFTP协议,所以导致报错

解决方法如下:

1. 备份原始 scp 命令

bash

mv /usr/bin/scp /usr/bin/scp.orig

2. 创建包装脚本

bash

cat > /usr/bin/scp << 'EOF'

#!/bin/bash

/usr/bin/scp.orig -T "$@"

EOF

3. 设置执行权限

bash

chmod 555 /usr/bin/scp

4. 验证包装是否生效

bash

# 测试 scp 能否正常使用

scp -p /etc/hosts root@192.168.1.51:/tmp/test

5、集群安装完成后恢复原始 scp

为了恢复系统的原始 scp 行为(避免对其他应用产生潜在影响),在集群所有节点上执行以下命令:

bash

mv /usr/bin/scp.orig /usr/bin/scp

chmod 755 /usr/bin/scp # 恢复默认权限

注意:若你后续还计划升级 Oracle 版本或应用补丁,可以暂时保留包装,但建议在完全确认集群稳定后恢复

  1. GI安装过程中手动执行root.sh提示集群创建失败,CVU资源配置失败

原因:root.sh脚本在redhat8新操作系统上执行调用的其他脚本执行失败,是19.3版本的BUG(Bug 30187055)

解决方法如下:

# 以 root 用户执行(新终端)

# 设置环境变量

export CV_ASSUME_DISTID=OL7

export LANG=en_US.UTF-8

export LC_ALL=en_US.UTF-8

# 创建 srvctl 包装器

cd /u01/app/19.3.0/grid/bin

cp srvctl srvctl.orig

cat > srvctl << 'EOF'

#!/bin/bash

if [[ "$*" == *"add cvu"* ]] || [[ "$*" == *"config nodeapps"* ]]; then

echo "[BYPASS] srvctl $*"

exit 0

fi

exec /u01/app/19.3.0/grid/bin/srvctl.orig "$@"

EOF

chmod 755 srvctl

# 执行 root.sh

cd /u01/app/19.3.0/grid

./root.sh

# 恢复原始 srvctl

mv srvctl.orig srvctl

如果将来需要 CVU 功能,可以随时手动添加:

bash

# 以 grid 用户执行

su - grid

# 设置环境

export LANG=en_US.UTF-8

export LC_ALL=en_US.UTF-8

# 添加 CVU 资源

srvctl add cvu

# 启动 CVU

srvctl start cvu

# 验证

crsctl stat res ora.cvu -t

注意:在 RHEL 8 上,即使添加 CVU,可能仍然会有一些警告,但不影响使用。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论