青年数据库学习互助会

VMware虚拟机上Oracle 19C RAC超详细静默安装部署流程(新手必看)

文章目录

  • 准备规划
    • 1.系统规划
    • 2.存储规划
    • 3.网络规划
  • 一、创建虚拟机
  • 二、安装操作系统
  • 三、安装前配置
    • 1.网络配置
    • 2.上传安装介质
    • 3.配置yum源
    • 4.安装依赖包
    • 5.配置 ISCSI 共享存储
      • 5.1 下载安装StarWind
      • 5.2 配置服务端StarWind ISCSI
      • 5.3 配置客户端ISCSI
    • 6.配置多路径
      • 6.1 安装 multipath 绑定多路径
      • 6.2 配置 multipath 文件
      • 6.3 配置UDEV绑盘
    • 7.hosts文件配置
    • 8.防火墙配置
    • 9.selinux 配置
    • 10.配置chrony时间同步
    • 11.关闭透明大页和NUMA
    • 12.avahi-daemon 配置
    • 13.系统参数配置
    • 13.系统资源限制配置
    • 14.用户及组、目录创建
    • 15.配置环境变量
    • 16.安装介质与补丁
  • 四、安装Grid软件
    • 1.用户互信
    • 2.安装前校验
    • 3.编辑相应文件
    • 4.开始安装
    • 5.磁盘组创建
  • 五、DB软件安装
    • 1.校验
    • 2.编辑响应文件
    • 3.安装软件
  • 六、数据库建库
    • 1.配置响应文件
    • 2.建库
    • 3.检查
  • 总结

准备规划

1.系统规划

节点
OS 版本
主机名
实例名
Grid/Oracle版本
1
Oracle Linux 7.9
node1
orcl1
19.29.0.0
2
Oracle Linux 7.9
node2
orcl2
19.29.0.0
Public IP
Virtual IP
192.168.10.101
192.168.10.103
192.168.10.102
192.168.10.104
Scan IP
Private IP
192.168.10.105
1.1.1.10
192.168.10.105
1.1.1.20

2.存储规划

磁盘名称
磁盘用途
磁盘大小
冗余模式
asm-ocr
OCR/Voting File
10G
EXTERNAL
asm-data
Data Files
20G
EXTERNAL

3.网络规划

Public IP

192.168.10.101   node1  
192.168.10.102   node2

Private IP

1.1.1.10   node1-priv  
1.1.1.20   node2-priv

Virtual IP

192.168.10.103 	node1-vip  
192.168.10.104  node2-vip

SCAN IP

192.168.10.105 	node-scan

本篇文章所用到的介质
链接: https://pan.baidu.com/s/1yp70WQDCmiL63VVs8V2lKQ?pwd=msra 提取码: msra

一、创建虚拟机

我这里用的是OracleLinux7.9
在这里插入图片描述

这里要给到至少200G,100G不够

在这里插入图片描述

添加网卡

在这里插入图片描述

内存给32G
处理器2核4G

在这里插入图片描述

创建两台虚拟机

在这里插入图片描述

二、安装操作系统

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、安装前配置

以下操作节点一和节点二都要执行

1.网络配置

先开个网卡,把远程连上进行操作

在这里插入图片描述

连上了

在这里插入图片描述

分别配置node1和node2的网络

先看一下我虚拟机中设的网关是多少
在这里插入图片描述

node1:

##配置Public IP
nmcli connection modify ens33 ipv4.addresses 192.168.10.101/24 ipv4.gateway 192.168.10.2 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify ens34 ipv4.addresses 1.1.1.10/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up ens34
nmcli connection up ens33
nmcli connection show

node2:

##配置Public IP
nmcli connection modify ens33 ipv4.addresses 192.168.10.102/24 ipv4.gateway 192.168.10.2 ipv4.method manual autoconnect yes
##配置Private IP
nmcli connection modify ens34 ipv4.addresses 1.1.1.20/24 ipv4.method manual autoconnect yes
##生效
nmcli connection up ens34
nmcli connection up ens33
nmcli connection show
在这里插入图片描述

up后连接会断开,新ip重新连接后show一下看看

在这里插入图片描述
在这里插入图片描述

2.上传安装介质

##创建安装介质存放目录
mkdir /soft
##上传安装介质到/soft目录
LINUX.X64_193000_db_home.zip
LINUX.X64_193000_grid_home.zip
p6880880_190000_Linux-x86-64.zip
p38291812_190000_Linux-x86-64.zip
p38298204_190000_Linux-x86-64.zip
OracleLinux-R7-U9-Server-x86_64-dvd.iso
compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
在这里插入图片描述

3.配置yum源

手动挂载本地镜像

##创建挂载目录
mkdir -p /mnt/iso
##挂载文件(镜像,只读)
mount -o loop,ro /soft/OracleLinux-R7-U9-Server-x86_64-dvd.iso /mnt/iso/
ll /mnt/iso/
在这里插入图片描述

手动配置yum源

##禁用自带repo,写入新repo
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak/
vi local.repo
##创建repo文件并写入以下内容
[local]
name=Local
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
##刷新缓存并验证
yum clean all
yum repolist
在这里插入图片描述

4.安装依赖包

yum groupinstall -y "Server with GUI"
yum install -y bc \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
elfutils-libelf \
elfutils-libelf-devel \
glibc \
glibc-devel \
ksh \
libaio \
libaio-devel \
libgcc \
libstdc++ \
libstdc++-devel \
libxcb \
libX11 \
libXau \
libXi \
libXtst \
libXrender \
libXrender-devel \
make \
net-tools \
nfs-utils \
smartmontools \
sysstat \
e2fsprogs \
e2fsprogs-libs \
fontconfig-devel \
expect \
unzip \
openssh-clients \
readline* \
tigervnc* \
psmisc --skip-broken

手动安装该 RPM 包

cd /soft
rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
##查询关键依赖包状态
rpm -q bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline | grep "not installed"
在这里插入图片描述

5.配置 ISCSI 共享存储

这里参考的是三哥的文章:
一步步教你Windows配置ISCSI共享存储:

https://luciferliu.blog.csdn.net/article/details/118087577

5.1 下载安装StarWind

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择安装

在这里插入图片描述

5.2 配置服务端StarWind ISCSI

先通过 cmd 命令行通过ipconfig查看一下本机ip地址

在这里插入图片描述

相互ping检查一下网络

在这里插入图片描述

新建StarWind Server

在这里插入图片描述
在这里插入图片描述

双击或者点击connect

在这里插入图片描述
在这里插入图片描述

Alias别名随便填

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择添加虚拟硬盘

在这里插入图片描述

选择镜像文件设备

在这里插入图片描述

创建新虚拟磁盘

在这里插入图片描述

这里分20G

在这里插入图片描述
在这里插入图片描述

数据写入同时同步到内存和磁盘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同样的方法创建DATA
这里分40G

在这里插入图片描述

同样的方法创建ARCH
这里分20G

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.3 配置客户端ISCSI

安装ISCSI

yum install -y iscsi-initiator-utils*

搜索服务端 ISCSI Target

iscsiadm -m discovery -t st -p 192.168.1.10

连接服务端 ISCSI 共享存储

iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:192.168.1.10-hx -p 192.168.1.10-l

sdd是我后面补的,所以前面没有写,但是要加上

在这里插入图片描述

6.配置多路径

6.1 安装 multipath 绑定多路径

##安装multipath
yum install -y device-mapper*
mpathconf --enable --with_multipathd y
##查看共享盘的scsi_id
/usr/lib/udev/scsi_id -g -u /dev/sdb
/usr/lib/udev/scsi_id -g -u /dev/sdc
/usr/lib/udev/scsi_id -g -u /dev/sdd
在这里插入图片描述

6.2 配置 multipath 文件

cat <<EOF>/etc/multipath.conf
defaults {
    user_friendly_names yes
}

blacklist {
  devnode "^sda"
}

multipaths {
  multipath {
  wwid "28c1031a4a85fbf7e"
  alias asm_ocr
  }

  multipath {
  wwid "2c9479c245a0427b9"
  alias asm_data
  }
  multipath {
  wwid "2c3e4942003596caa"
  alias asm_arch
  }
}
EOF

激活multipath多路径

multipath -F
multipath -v2
multipath -ll
在这里插入图片描述

6.3 配置UDEV绑盘

rm -rf /dev/mapper/udev_info
rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules
cd /dev/mapper
##UDEV绑盘
for i in asm_*;do
printf "%s %s\n""$i""$(udevadm info --query=all --name=/dev/mapper/"$i" | grep -i dm_uuid)">>/dev/mapper/udev_info
done
whileread-r line;do
dm_uuid=$(echo "$line"| awk -F'=''{print $2}')
disk_name=$(echo "$line"| awk '{print $1}')
echo "KERNEL==\"dm-*\",ENV{DM_UUID}==\"${dm_uuid}\",SYMLINK+=\"${disk_name}\",OWNER=\"grid\",GROUP=\"asmadmin\",MODE=\"0660\"">>/etc/udev/rules.d/99-oracle-asmdevices.rules
done </dev/mapper/udev_info
##重载udev
udevadm control --reload-rules
udevadm trigger--type=devices
ll /dev/asm*
在这里插入图片描述

7.hosts文件配置

配置hostname

##node1节点
hostnamectl set-hostname node1
##node2节点
hostnamectl set-hostname node2

配置hosts文件

cat <<EOF>>/etc/hosts
#Public IP
192.168.10.101  node1
192.168.10.102  node2

#Private IP
1.1.1.10 node1-priv
1.1.1.20 node2-priv

#Vip IP
192.168.10.103 node1-vip
192.168.10.104 node2-vip

#Scan IP
192.168.10.105 node-scan
EOF
在这里插入图片描述

8.防火墙配置

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
在这里插入图片描述

9.selinux 配置

配置selinux临时生效,临时Permissive宽松模式

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
setenforce 0
getenforce
在这里插入图片描述

10.配置chrony时间同步

node1

vi /etc/chrony.conf

server ntp.aliyun.com iburst
server ntp.tencent.com iburst
server ntp.ntsc.ac.cn iburst
driftfile /var/lib/chrony/drift
makestep 1.03
rtcsync
allow 192.168.10.0/24
allow 1.1.1.0/24
logdir /var/log/chrony

node2

vi /etc/chrony.conf
##先注释掉这几个注释掉公共服务器
#server 0.pool.ntp.org iburst
#server 1.pool.ntp.org iburst
#server 2.pool.ntp.org iburst
#server 3.pool.ntp.org iburst
server 192.168.10.101 iburst
driftfile /var/lib/chrony/drift
makestep 1.03
rtcsync
logdir /var/log/chrony
在这里插入图片描述
在这里插入图片描述

重启chrony并验证同步情况

systemctl restart chronyd
chronyc sources -v
chronyc tracking

node1(做为时间服务器):

210 Number of sources = 0

在这里插入图片描述
node2(做为客户端):

210 Number of sources = 1
偏移值在毫秒级以内同步就是正常。

在这里插入图片描述

配置定时任务

每天中午 12:00 同步

crontab -e
012***/usr/bin/chronyc -a makestep >/dev/null2>&1
crontab -l
在这里插入图片描述

11.关闭透明大页和NUMA

sed -i 's/quiet/quiet transparent_hugepage=never numa=off/'/etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
在这里插入图片描述

12.avahi-daemon 配置

yum install -y avahi*
systemctl stop avahi-daemon.socket
systemctl stop avahi-daemon.service
pgrep -f avahi-daemon | awk '{print "kill -9 "$2}'
systemctl disable avahi-daemon.socket
systemctl disable avahi-daemon.service

配置 NOZEROCONF:

cat <<EOF>>/etc/sysconfig/network
NOZEROCONF=yes
EOF
在这里插入图片描述

13.系统参数配置

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.conf
fs.aio-max-nr =1048576
fs.file-max =6815744
kernel.shmall = $shmall
kernel.shmmax = $shmmax
kernel.shmmni =4096
kernel.sem =25032000100128
net.ipv4.ip_local_port_range =900065500
net.core.rmem_default =262144
net.core.rmem_max =4194304
net.core.wmem_default =262144
net.core.wmem_max =1048576
net.ipv4.conf.ens33.rp_filter =1
net.ipv4.conf.ens34.rp_filter =2
EOF

生效系统参数:

sysctl -p
在这里插入图片描述

13.系统资源限制配置

配置limits.conf:

cat <<EOF>>/etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle hard memlock 134217728
oracle soft memlock 134217728

grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
EOF

配置pam.d/login:

cat <<EOF>>/etc/pam.d/login
session required pam_limits.so 
session required /lib64/security/pam_limits.so
EOF
在这里插入图片描述

14.用户及组、目录创建

创建安装 Oracle 数据库所需的用户、组以及安装目录

/usr/sbin/groupadd -g 54321 oinstall
/usr/sbin/groupadd -g 54322 dba
/usr/sbin/groupadd -g 54323 oper
/usr/sbin/groupadd -g 54324 backupdba
/usr/sbin/groupadd -g 54325 dgdba
/usr/sbin/groupadd -g 54326 kmdba
/usr/sbin/groupadd -g 54327 asmdba
/usr/sbin/groupadd -g 54328 asmoper
/usr/sbin/groupadd -g 54329 asmadmin
/usr/sbin/groupadd -g 54330 racdba

创建 grid/oracle 用户

/usr/sbin/useradd -u 11012-g oinstall -G asmadmin,asmdba,asmoper,dba,racdba,oper grid
/usr/sbin/useradd -u 54321-g oinstall -G asmdba,dba,backupdba,dgdba,kmdba,racdba,oper oracle
##修改用户密码为oracle
echo "oracle"|passwd oracle --stdin
echo "oracle"|passwd grid --stdin
##查看用户组
id grid
id oracle
##重载udev
udevadm control --reload-rules
udevadm trigger--type=devices
ll /dev/asm*
在这里插入图片描述
在这里插入图片描述

创建软件目录并赋权

mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/19.3.0/db
mkdir -p /u01/app/oraInventory
mkdir -p /backup
mkdir -p /home/oracle/scripts
chown -R oracle:oinstall /backup
chown -R oracle:oinstall /home/oracle/scripts
chown -R grid:oinstall /u01
chown -R grid:oinstall /u01/app/grid
chown -R grid:oinstall /u01/app/19.3.0/grid
chown -R grid:oinstall /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775/u01
在这里插入图片描述

15.配置环境变量

配置grid用户环境变量
node1:

cat <<EOF>>/home/grid/.bash_profile
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
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_SID 不一样(+ASM1/+ASM2)

node2:

cat <<EOF>>/home/grid/.bash_profile
################OracleBegin#########################
umask 022
export TMP=/tmp
export TMPDIR=\$TMP
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=+ASM2
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用户环境变量
node1:

cat <<EOF>>/home/oracle/.bash_profile
################OracleBegin#########################
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/db
export ORACLE_HOSTNAME=node1
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=orcl1
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\u@\h:\w]\\$ "
################OracleEnd#########################
EOF

每个节点的 ORACLE_HOSTNAME和 ORACLE_SID不一样

node2:

cat <<EOF>>/home/oracle/.bash_profile
################OracleBegin#########################
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/db
export ORACLE_HOSTNAME=node2
export ORACLE_TERM=xterm
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export ORACLE_SID=orcl2
export PATH=/usr/sbin:\$PATH
export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$PATH
alias sas='sqlplus / as sysdba'
export PS1="[\u@\h:\w]\\$ "
################OracleEnd#########################
EOF
在这里插入图片描述

16.安装介质与补丁

赋权并解压集群、数据库安装包
(后续安装只需要在node1执行)

##静默解压grid安装包
chown -R grid:oinstall /soft
su - grid -c "unzip -q /soft/LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid/"
##静默解压oracle安装包
chown -R oracle:oinstall /soft
su - oracle -c "unzip -q /soft/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/db/"
在这里插入图片描述

赋权并解压OPatch工具和补丁

cd /soft
##解压OPatch工具
su - grid -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/19.3.0/grid"
su - oracle -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /u01/app/oracle/product/19.3.0/db"
##解压Grid RU与DB RU
chown -R grid:oinstall /soft
su - grid -c "unzip -q /soft/p38291812_190000_Linux-x86-64.zip -d /soft"
chown -R oracle:oinstall /soft
su - oracle -c "unzip -q /soft/p38298204_190000_Linux-x86-64.zip -d /soft"

在这里插入图片描述
检查OPatch版本状态

su - grid
opatch version
在这里插入图片描述

cvuqdisk安装

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

在这里插入图片描述
将cvuqdisk从node1传输到node2

scp cvuqdisk-1.0.10-1.rpm 192.168.10.102:/soft/
##到node2中
rpm -ivh /soft/cvuqdisk-1.0.10-1.rpm
在这里插入图片描述

一切准备就绪后将node1和node2量节点reboot一下

四、安装Grid软件

1.用户互信

chown -R grid:oinstall /soft
su - grid
$ORACLE_HOME/oui/prov/resources/scripts/sshUserSetup.sh -user grid  -hosts "node1 node2"-advanced -noPromptPassphrase
su - oracle
$ORACLE_HOME/oui/prov/resources/scripts/sshUserSetup.sh -user oracle  -hosts "node1 node2"-advanced -noPromptPassphrase
##输入yes,输入4次密码即可。

在这里插入图片描述
在这里插入图片描述

2.安装前校验

su - grid
cd $ORACLE_HOME
./runcluvfy.sh stage -pre crsinst -n node1,node2 -verbose -fixup
##在节点 "node1" 上完成 "/tmp/CVU_19.0.0.0.0_grid/runfixup.sh" 的执行后
/tmp/CVU_19.0.0.0.0_grid/runfixup.sh
##修复完再次检查

在这里插入图片描述
根据提示进行修复

## 节点连接性失败:PRVG-1172 / 11067 / 11095修复
[root@node1~]# systemctl status virtqemud 2>/dev/null | head
[root@node1~]# systemctl disable --now libvirtd 2>/dev/null || true
[root@node1~]# systemctl disable --now virtqemud 2>/dev/null || true
[root@node1~]# ip addr del 192.168.122.1/24 dev virbr0
[root@node1~]# nmcli con show | egrep -i 'virbr|libvirt' || true
[root@node1~]# nmcli con delete virbr0 2>/dev/null || true
[root@node1~]# nmcli con delete "libvirt" 2>/dev/null || true
[root@node1~]# ip a | grep -E "virbr0|192\.168\.122\.1" -n
21:5: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN groupdefault qlen 1000
23:6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN groupdefault qlen 1000

##这里不管他也行
cat >/etc/resolv.conf <<'EOF'
nameserver 8.8.8.8
EOF

3.编辑相应文件

cp /u01/app/19.3.0/grid/install/response/gridsetup.rsp /home/grid/
vi gridsetup.rsp


oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=CRS_CONFIG

ORACLE_BASE=/u01/app/grid

oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin

# SCAN:LOCAL_SCAN + hosts 里固定一个IP
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.gpnp.scanName=node-scan
oracle.install.crs.config.gpnp.scanPort=1521
oracle.install.crs.config.SCANClientDataFile=

# 两节点独立集群
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.clusterName=rac-cluster

# public主机名:vip主机名:HUB
oracle.install.crs.config.clusterNodes=node1:node1-vip:HUB,node2:node2-vip:HUB

# 网卡角色:1=public,5=private(interconnect)
oracle.install.crs.config.networkInterfaceList=ens33:192.168.10.0:1,ens34:1.1.1.0:5

# 存储选 ASM
oracle.install.crs.config.storageOption=FLEX_ASM_STORAGE

# GIMR
oracle.install.crs.configureGIMR=true
oracle.install.asm.configureGIMRDataDG=true

oracle.install.asm.gimrDG.name=DATA
oracle.install.asm.gimrDG.redundancy=EXTERNAL
oracle.install.asm.gimrDG.AUSize=4
oracle.install.asm.gimrDG.disks=/dev/asm_data

# ASM 密码
oracle.install.asm.SYSASMPassword=oracle
oracle.install.asm.monitorPassword=oracle

# 关键:OCR/VOTE 磁盘组
oracle.install.asm.diskGroup.name=OCR
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disks=/dev/asm_ocr
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm*

oracle.install.asm.configureAFD=false

oracle.install.config.managementOption=NONE

# 建议先不让安装器自动跑 root.sh,后续按提示手工执行
oracle.install.crs.rootconfig.executeRootScript=false
oracle.install.crs.config.ignoreDownNodes=false
在这里插入图片描述

4.开始安装

cd /u01/app/19.3.0/grid
./gridSetup.sh -silent -ignorePrereqFailure -waitForCompletion -responseFile /home/grid/gridsetup.rsp

##以root用户在node1,node2执行脚本
/u01/app/oraInventory/orainstRoot.sh
/u01/app/19.3.0/grid/root.sh
##在node1的grid用户执行
/u01/app/19.3.0/grid/gridSetup.sh -executeConfigTools -silent -waitForCompletion -responseFile /home/grid/gridsetup.rsp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

警告可以忽略

查看集群状态

 crsctl stat res -t
在这里插入图片描述

5.磁盘组创建

asmca -silent -createDiskGroup -diskGroupName ARCH -diskList '/dev/asm_arch'-redundancy EXTERNAL
在这里插入图片描述

五、DB软件安装

1.校验

/u01/app/19.3.0/grid/runcluvfy.sh stage -pre dbinst -n node1,node2 -verbose

可忽略
在这里插入图片描述

2.编辑响应文件

cp $ORACLE_HOME/install/response/db_install.rsp /home/oracle
vi db_install.rsp 


oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY

UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/19.3.0/db

oracle.install.db.InstallEdition=EE

oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba

oracle.install.db.CLUSTER_NODES=node1,node2

# 只装软件,不建库:starterdb 全部留空
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.ConfigureAsContainerDB=
oracle.install.db.config.PDBName=
oracle.install.db.config.starterdb.characterSet=
oracle.install.db.config.starterdb.memoryOption=
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.password.PDBADMIN=
oracle.install.db.config.starterdb.managementOption=
oracle.install.db.config.starterdb.omsHost=
oracle.install.db.config.starterdb.omsPort=
oracle.install.db.config.starterdb.emAdminUser=
oracle.install.db.config.starterdb.emAdminPassword=
oracle.install.db.config.starterdb.enableRecovery=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=

# root 脚本你手工执行
oracle.install.db.rootconfig.executeRootScript=false
oracle.install.db.rootconfig.configMethod=
oracle.install.db.rootconfig.sudoPath=
oracle.install.db.rootconfig.sudoUserName=
在这里插入图片描述

3.安装软件

执行安装脚本

cd $ORACLE_HOME
./runInstaller -silent -ignorePrereqFailure -waitForCompletion -responseFile /home/oracle/db_install.rsp
在这里插入图片描述

分别在node1,node2执行root.sh脚本

/u01/app/oracle/product/19.3.0/db/root.sh

在这里插入图片描述
在这里插入图片描述

六、数据库建库

1.配置响应文件

cp $ORACLE_HOME/assistants/dbca/dbca.rsp /home/oracle/RACDB.rsp
cd /home/oralce
vi RACDB.rsp


responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=orcl
sid=orcl
databaseConfigType=RAC
RACOneNodeServiceName=
policyManaged=
createServerPool=
serverPoolName=
cardinality=
force=
pqPoolName=
pqCardinality=
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=orcpdb
useLocalUndoForPDBs=
pdbAdminPassword=Oracle123.
nodelist=node1,node2
templateName=/u01/app/oracle/product/19/db_1/assistants/dbca/templates/General_Purpose.dbc
sysPassword=Oracle123.
systemPassword=Oracle123.
oracleHomeUserPassword=
emConfiguration=
emExpressPort=5500
runCVUChecks=
dbsnmpPassword=
omsHost=
omsPort=
emUser=
emPassword=
dvConfiguration=
dvUserName=
dvUserPassword=
dvAccountManagerName=
dvAccountManagerPassword=
olsConfiguration=
datafileJarLocation=
datafileDestination=+DATA/{DB_UNIQUE_NAME}/
recoveryAreaDestination=
storageType=
diskGroupName=+DATA/{DB_UNIQUE_NAME}/
asmsnmpPassword=
recoveryGroupName=
characterSet=AL32UTF8
nationalCharacterSet=
registerWithDirService=
dirServiceUserName=
dirServicePassword=
walletPassword=
listeners=
variablesFile=
variables=
initParams=
sampleSchema=
memoryPercentage=
databaseType=MULTIPURPOSE
automaticMemoryManagement=
totalMemory=

2.建库

dbca -silent -createDatabase -responseFile /home/oracle/RACDB.rsp -ignorePreReqs
在这里插入图片描述

3.检查

srvctl config database-d orcl
srvctl statusdatabase-d orcl

ps -ef | grep smon

sqlplus /as sysdba

show pdbs

setlines200
col name for a60
select name from v$datafile;
select name from v$tempfile;
show parameter db_recovery_file_dest;

在这里插入图片描述
在这里插入图片描述


总结

这次我详细的把 19c RAC 从环境准备 → GI 安装 → ASM 磁盘组 → DB 软件 → DBCA 静默建库 整个流程非常详细的记录了下来。RAC 的难点往往不在安装命令本身,而在前置依赖和细节一致性。