- 安装准备
虚拟机: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单独做心跳网卡 (无心跳交换机)
- 修改网卡创建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
- 配置心跳网卡:
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
九、系统内核参数优化
- 配置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 | 不需要配置 | |
- 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" |
- 虚拟机添加共享磁盘(两个虚拟机全部添加)
添加完成后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互信认证
- 将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
- 安装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
- 配送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
十九、查询集群和实例状态
二十、安装常见问题
- 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 版本或应用补丁,可以暂时保留包装,但建议在完全确认集群稳定后恢复 |
- 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,可能仍然会有一些警告,但不影响使用。 |




