暂无图片
暂无图片
7
暂无图片
暂无图片
暂无图片

Oracle19c rac for centos7图形化部署实战

原创 飞天 2025-08-04
1235

一、背景

在近期的项目推进过程中,我们计划采用Oracle19c RAC数据库。为确保项目落地阶段的高效实施,同时沉淀标准化安装经验,特在本地虚拟机环境中开展全流程模拟搭建工作。本文将详细记录从环境准备、集群配置到数据库实例部署的完整过程,期望通过技术实践分享,为朋友们提供帮助。
声明:本文中的ip都是本地虚拟机中设置的ip,不涉及生产,如有雷同纯属巧合!

二、安装前规划

网络规划

主机名 public ip vip ip private ip scan ip scan name
node1 192.*.*.60 192.*.*.70 10.*.*.11 192.*.*.75 orclscan
node2 192.*.*.62 192.*.*.72 10.*.*.12 192.*.*.75 orclscan

三、主机配置

本次使用Centos7.9操作系统,安装操作系统过程略。

共享存储配置(node1 & node2)

windows主机上创建共享磁盘目录:

image.png

添加共享磁盘:

在node1节点操作:
添加一个大小5G的磁盘作为asm-ocr
image.png
image.png
image.png
image.png
image.png
image.png
同样的方法,再添加一个大小20G的磁盘作为asm-data
image.png

为了防止共享盘独占,需要找到node1节点的vmx文件,如下图:
image.png
编辑node1节点的vmx文件,在最后加入:

scsi1.sharedBus= "virtual" disk.locking= "false" diskLib.dataCacheMaxSize= "0" diskLib.dataCacheMaxReadAheadSize= "0" diskLib.DataCacheMinReadAheadSize= "0" diskLib.dataCachePageSize= "4096" diskLib.maxUnsyncedWrites= "0"

在node2节点操作:
image.png
image.png
同样的操作方式,在node2节点加入asm-data盘!

同样,编辑node2节点的vmx文件,在最后加入:

scsi1.sharedBus= "virtual" disk.locking= "false" diskLib.dataCacheMaxSize= "0" diskLib.dataCacheMaxReadAheadSize= "0" diskLib.DataCacheMinReadAheadSize= "0" diskLib.dataCachePageSize= "4096" diskLib.maxUnsyncedWrites= "0"

多路径配置(node1 & node2)

安装 multipath 绑定多路径

#安装并配置multipath yum install -y device-mapper* mpathconf --enable --with_multipathd y #列出所有可用块设备的信息 lsblk #查看共享盘的scsi_id /usr/lib/udev/scsi_id -g -u /dev/sdc /usr/lib/udev/scsi_id -g -u /dev/sdd

image.png

配置 multipath 文件:

cat >/etc/multipath.conf<<EOF defaults { user_friendly_names yes } blacklist { devnode "^sd[a-b]" } multipaths { multipath { wwid "36000c2926584a8045c9a2948e879401e" alias asm_ocr } multipath { wwid "36000c29dea988329e85ed6319586de9a" alias asm_data } } EOF

注意:wwid的值为上面获取的scsi_id,alias可自定义,这里配置1块OCR盘,1块DATA盘!

激活multipath多路径

#删除现有路径 multipath -F #格式化路径 multipath -v2 #查看多路径 multipath -ll

image.png
image.png

配置UDEV绑盘

rm -rf /dev/mapper/udev_info rm -rf /etc/udev/rules.d/99-oracle-asmdevices.rules cd /dev/mapper 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 while read -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*

image.png
注意: 这里由于没有创建 grid 用户,因此权限和组是 root,等创建 grid 用户后,再次重载 udev 即可!
确认配置完成后,分别在两个节点输入命令 ls /dev/asm* 查看是否已经成功绑定!
node2节点操作方式同node1节点。

网络配置(node1 & node2)

启动node1节点,登录node1节点:

#查看网卡编号 [root@node1 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.*.*.60 netmask 255.255.255.0 broadcast 192.*.*.255 inet6 fe80::278c:4ef0:51a0:76ee prefixlen 64 scopeid 0x20<link> ether 00:50:56:21:a1:ea txqueuelen 1000 (Ethernet) RX packets 479 bytes 44375 (43.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 282 bytes 41455 (40.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.31.237 netmask 255.255.255.0 broadcast 192.168.31.255 inet6 fe80::c7aa:dbf3:238c:425a prefixlen 64 scopeid 0x20<link> ether 00:0c:29:6c:e4:8a txqueuelen 1000 (Ethernet) RX packets 2403 bytes 150121 (146.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 76 bytes 10497 (10.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 108 bytes 9180 (8.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 108 bytes 9180 (8.9 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:30:a4:a4 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@node1 ~]# nmcli connection show NAME UUID TYPE DEVICE Wired connection 1 3a14e728-e688-3735-a3a6-56686811ecc7 ethernet ens36 ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33 virbr0 9ca1ac9f-e875-4c43-bd54-cd2dd817b13b bridge virbr0 可以看到,ens36网卡并没有激活,并且有多余的'Wired connection 1'连接。 #删除'Wired connection 1' [root@node1 ~]# nmcli connection delete 'Wired connection 1' Connection 'Wired connection 1' (3a14e728-e688-3735-a3a6-56686811ecc7) successfully deleted. [root@node1 ~]# nmcli connection show NAME UUID TYPE DEVICE ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33 virbr0 9ca1ac9f-e875-4c43-bd54-cd2dd817b13b bridge virbr0 #添加ens36网卡 [root@node1 ~]# nmcli connection add con-name ens36 type ethernet ifname ens36 Connection 'ens36' (0a0dc267-5cbe-4dd2-a1ef-c1aa6cf3e52b) successfully added. [root@node1 ~]# nmcli connection show NAME UUID TYPE DEVICE ens33 c96bc909-188e-ec64-3a96-6a90982b08ad ethernet ens33 ens36 0a0dc267-5cbe-4dd2-a1ef-c1aa6cf3e52b ethernet ens36 virbr0 9ca1ac9f-e875-4c43-bd54-cd2dd817b13b bridge virbr0 可以看到,ens36网卡已经成功激活。

启动node2节点,node2节点操作方式同node1节点。

node1节点使用nmcli配置Public IP、Private IP:

#配置Public IP nmcli connection modify ens33 ipv4.addresses 192.*.*.60/24 ipv4.gateway 192.*.*.2 ipv4.method manual autoconnect yes #配置Private IP nmcli connection modify ens36 ipv4.addresses 10.*.*.11/24 ipv4.method manual autoconnect yes #生效 nmcli connection up ens33 nmcli connection up ens36 nmcli connection show

node2节点使用nmcli配置Public IP、Private IP:

#配置Public IP nmcli connection modify ens33 ipv4.addresses 192.*.*.62/24 ipv4.gateway 192.*.*.2 ipv4.method manual autoconnect yes #配置Private IP nmcli connection modify ens36 ipv4.addresses 10.*.*.12/24 ipv4.method manual autoconnect yes #生效 nmcli connection up ens33 nmcli connection up ens36 nmcli connection show

挂载iso镜像(node1 & node2)

mount /dev/cdrom /mnt

image.png

配置yum源

cd /etc/yum.repos.d/ mkdir old mv *.repo old/ cat >>/etc/yum.repos.d/local.repo<<EOF [local] name=local baseurl=file:///mnt gpgcheck=0 enabled=1 EOF yum repolist all

image.png

安装依赖包(node1 & node2)

yum install -y bc \ binutils \ compat-libcap1 \ compat-libstdc++-33 \ elfutils-libelf \ elfutils-libelf-devel \ fontconfig-devel \ glibc \ glibc-devel \ ksh \ libaio \ libaio-devel \ libXrender \ libXrender-devel \ libX11 \ libXau \ libXi \ libXtst \ libgcc \ libstdc++ \ libstdc++-devel \ libxcb \ make \ policycoreutils \ policycoreutils-python \ smartmontools \ sysstat \ unzip \ psmisc \ xorg-x11-xauth \ net-tools \ nfs-utils \ gcc \ gcc-c++

系统安装盘里面没有compat-libstdc++-33包,需要提前下载并安装:

rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

image.png
检查依赖包安装情况

rpm -q bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ libstdc++-devel libxcb make policycoreutils policycoreutils-python smartmontools sysstat unzip psmisc xorg-x11-xauth net-tools nfs-utils gcc gcc-c++ | grep "not installed"

image.png

/etc/hosts配置(node1 & node2)

cat >>/etc/hosts<<EOF #Public IP 192.*.*.60 node1 192.*.*.62 node2 #Private IP 10.*.*.11 node1-priv 10.*.*.12 node2-priv #Vip IP 192.*.*.70 node1-vip 192.*.*.72 node2-vip #Scan IP 192.*.*.75 orclscan EOF

检查目录大小

df -h

image.png

检查内存和SWAP大小

free -h

image.png

关闭透明大页和numa(node1 & node2)

1、查看透明大页是否关闭(always 表示启用,never 表示禁用): cat /sys/kernel/mm/transparent_hugepage/enabled 2、修改 grub 配置文件添加"transparent_hugepage=never numa=off": vi /etc/default/grub 在GRUB_CMDLINE_LINUX…行最后添加transparent_hugepage=never GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet transparent_hugepage=never numa=off" GRUB_DISABLE_RECOVERY="true" 3、重新生成grub文件 当节点使用UEFI安装和启动时,使用如下命令: # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg 当节点使用传统BIOS安装和启动时,使用如下命令: # grub2-mkconfig -o /boot/grub2/grub.cfg 4、重启节点生效,重启后检查透明大页和numa是否生效,使用如下命令: cat /sys/kernel/mm/transparent_hugepage/enabled lscpu | grep -i numa sysctl -a | grep numa kernel.numa_balancing = 0

关闭防火墙(node1 & node2)

systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service

关闭selinux

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

检查 OS 时区(node1 & node2)

timedatectl status # 如果时区不正确,使用下面命令修改: # timedatectl set-timezone "Asia/Shanghai"

image.png

禁用chronyd(node1 & node2)

systemctl stop chronyd.service systemctl disable chronyd.service

配置NTP时间同步

只在node2节点执行,和node1节点同步,生产系统中需要和时间服务器同步:

yum install -y ntpdate ##192.*.*.60为时间服务器IP,每天12点同步系统时间 cat >>/var/spool/cron/root<<EOF 00 12 * * * /usr/sbin/ntpdate -u 192.*.*.60 && /usr/sbin/hwclock -w EOF #查看计划任务 crontab -l ##手动执行 /usr/sbin/ntpdate -u 192.*.*.60 && /usr/sbin/hwclock -w

#禁用avahi-daemon
avahi-daemon 会导致 RAC 的节点重启。

systemctl stop avahi-daemon.socket systemctl stop avahi-daemon.service systemctl disable avahi-daemon.socket systemctl disable avahi-daemon.service

系统参数配置(node1 & node2)

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 >>/etc/sysctl.conf<<EOF 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.ens33.rp_filter = 1 net.ipv4.conf.ens36.rp_filter = 2 EOF

注意:ens33和ens36要根据实际环境替换。
参数生效:

sysctl -p

系统资源限制配置(node1 & node2)

配置limits.conf:

cat >>/etc/security/limits.conf<<EOF 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 >>/etc/pam.d/login <<EOF session required pam_limits.so session required /lib64/security/pam_limits.so EOF

用户及组、目录创建(node1 & node2)

创建安装 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

创建用户:

/usr/sbin/useradd -u 54322 -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* ll /dev/dm*

image.png
可以看到,绑盘权限已经变成 grid 了!

创建软件目录:

mkdir -p /data/app/19.3.0/grid mkdir -p /data/app/grid mkdir -p /data/app/oracle/product/19.3.0/db mkdir -p /data/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 /data chown -R grid:oinstall /data/app/grid chown -R grid:oinstall /data/app/19.3.0/grid chown -R grid:oinstall /data/app/oraInventory chown -R oracle:oinstall /data/app/oracle chmod -R 775 /data

环境变量配置(node1 & node2)

grid用户环境变量:

cat >>/home/grid/.bash_profile<<EOF umask 022 export TMP=/tmp export TMPDIR=\$TMP export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export ORACLE_BASE=/data/app/grid export ORACLE_HOME=/data/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),需要自行修改!

oracle用户环境变量:

cat >>/home/oracle/.bash_profile<<EOF umask 022 export TMP=/tmp export TMPDIR=\$TMP export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export ORACLE_BASE=/data/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="[\`whoami\`@\`hostname\`:"'\$PWD]\$ ' EOF

注意: 每个节点的 ORACLE_HOSTNAME(node1/node2) 和 ORACLE_SID(orcl1/orcl2)不一样,需要自行修改!

安装介质上传并解压(node1)

安装包上传至node1节点 /soft 目录:

#创建安装介质存放目录 mkdir /soft #上传安装介质到/soft目录 LINUX.X64_193000_db_home.zip LINUX.X64_193000_grid_home.zip p37257886_190000_Linux-x86-64.zip p6880880_190000_Linux-x86-64.zip

注意: 19C 的安装包需要解压到对应的 ORACLE_HOME 目录下!

静默解压grid安装包:

chown -R grid:oinstall /soft su - grid -c "unzip -q /soft/LINUX.X64_193000_grid_home.zip -d /data/app/19.3.0/grid/"

静默解压oracle安装包:

chown -R oracle:oinstall /soft su - oracle -c "unzip -q /soft/LINUX.X64_193000_db_home.zip -d /data/app/oracle/product/19.3.0/db/"

静默解压补丁安装包:

cd /soft ##解压RU补丁包和OPatch补丁包 chown -R grid:oinstall /soft su - grid -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /data/app/19.3.0/grid" su - grid -c "unzip -q /soft/p37257886_190000_Linux-x86-64.zip -d /soft" chown -R oracle:oinstall /soft su - oracle -c "unzip -q -o /soft/p6880880_190000_Linux-x86-64.zip -d /data/app/oracle/product/19.3.0/db"

注意: 由于19C支持安装grid软件前打RU补丁,因此提前解压OPatch和RU补丁,为安装做准备!

root用户下,cvuqdisk安装(node1 & node2):

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

image.png

#传输到node2,安装 scp cvuqdisk-1.0.10-1.rpm node2:/soft rpm -ivh /soft/cvuqdisk-1.0.10-1.rpm

配置grid用户ssh互信(node1)

su - grid $ORACLE_HOME/oui/prov/resources/scripts/sshUserSetup.sh -user grid -hosts "node1 node2" -advanced -noPromptPassphrase

配置oracle用户ssh互信(node1)

su - grid $ORACLE_HOME/oui/prov/resources/scripts/sshUserSetup.sh -user oracle -hosts "node1 node2" -advanced -noPromptPassphrase

所有配置都完成后,重启虚拟机。此时可以保存虚拟机快照,以防安装过程中出错!

四、安装grid软件(node1)+ RU

su - grid cd $ORACLE_HOME export DISPLAY=192.*.*.15:0.0 #这个根据本地实际情况进行配置 ./gridSetup.sh -applyRU /soft/37257886

image.png
执行安装程序开始安装,通过-applyRU参数指向RU补丁解压位置,提前安装grid补丁。
./gridSetup.sh -applyRU /soft/37257886
这里首先进行的是补丁升级,然后再启动安装界面
image.png
image.png
填写集群名称和scan名字,scan名字和/etc/hosts一致
image.png
添加node2节点信息,进行互信
image.png
image.png
确保对应网卡和IP网段对应即可,19C心跳网段需要选ASM & Private,用于ASM实例的托管
image.png

选择ASM
image.png
不安装GIMR
image.png
修改路径,只有1块OCR盘,选择external
image.png
设置 sys/system 密码
image.png
不使用IPMI
image.png
不注册EM
image.png
image.png
image.png
image.png
image.png
image.png

image.png
image.png

image.png
image.png

root用户下,按顺序执行脚本:

#node1节点执行 /data/app/oraInventory/orainstRoot.sh #node2节点执行 /data/app/oraInventory/orainstRoot.sh #node1节点执行 /data/app/19.3.0/grid/root.sh #node2节点执行 /data/app/19.3.0/grid/root.sh

image.png
image.png
image.png
image.png
安装继续:
image.png
这个报错可以忽略!
安装完成:
image.png
检查集群状态:

su - grid crsctl stat res -t

image.png

检查 grid 补丁:

su - grid opatch lspatches sqlplus -v

image.png

五、创建ASM数据盘

asmca
image.png
image.png
image.png

检查 asm 磁盘:

asmcmd lsdg

image.png
建议重启两台主机,检查重启后 Grid 集群是否正常运行!

六、安装oracle软件(node1)+ RU

chown -R oracle:oinstall /soft #root用户下切换到oracle用户 su - oracle export DISPLAY=192.*.*.15:0.0 #进入ORACLE_HOME目录 cd $ORACLE_HOME #检查opatch版本 opatch version ##执行安装程序开始安装 ./runInstaller -applyRU /soft/37257886/

image.png
image.png
注意: 可以看到,已经开始对 ORACLE_HOME 进行补丁安装!

补丁打完,进入安装界面,选择仅安装 Oracle 软件:
image.png

选择集群模式:
image.png

选择节点,设置ssh互信:
image.png
image.png

选择企业版:
image.png

image.png
image.png

image.png
image.png

开始安装:
image.png
image.png
root 用户下,两个节点顺序执行 root.sh:

#节点1执行 /data/app/oracle/product/19.3.0/db/root.sh #节点2执行 /data/app/oracle/product/19.3.0/db/root.sh

image.png
image.png

安装完成:
image.png

检查补丁版本:

su - oracle opatch lspatches sqlplus -version

image.png

至此,Oracle 软件已成功安装!

七、建库

dbca

image.png
image.png

选择Advanced configuration:
image.png

image.png

选择节点:
image.png

填写实例名 orcl;选择安装 CDB 模式,不创建PDB:
image.png

默认即可,使用 OMF 模式:
image.png

不开闪回,不开归档,可以建完实例后再配置:
image.png
image.png

配置内存,使用 ASMM 模式:
image.png
配置Processes:
image.png

配置字符集:
image.png

image.png

指定密码:
image.png

image.png

安装预检查,DNS 相关忽略:
image.png

安装汇总信息:
image.png

经过漫长的等待,建库结束了!
image.png
检查数据库实例信息:
image.png
image.png

至此,数据库创建完成!

设置数据库归档

1、开启归档模式

#关闭数据库实例 srvctl stop database -d orcl #启动单个节点到mount模式 srvctl start instance -d orcl -i orcl1 -o mount #开启归档 sqlplus / as sysdba alter database archivelog; #设置归档路径 ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA'; exit; ##重启数据库实例 srvctl stop instance -d orcl -i orcl1 srvctl start database -d orcl ##检查归档 sqlplus / as sysdba archive log list

image.png
2、配置定期删除归档计划任务

##进入oracle用户 su - oracle mkdir -p /home/oracle/scripts/ ##写入脚本 { echo '#!/bin/bash' echo 'source ~/.bash_profile' echo 'deltime=`date +"20%y%m%d%H%M%S"`' echo "rman target / nocatalog msglog /home/oracle/scripts/del_arch_\${deltime}.log<<EOF" echo 'crosscheck archivelog all;' echo "delete noprompt archivelog until time 'sysdate-7';" echo "delete noprompt force archivelog until time 'SYSDATE-10';" echo 'EOF' } >>/home/oracle/scripts/del_arch.sh chmod +x /home/oracle/scripts/del_arch.sh

切换到 oracle 用户写入计划任务:

cat >>/var/spool/cron/oracle<<EOF 12 00 * * * /home/oracle/scripts/del_arch.sh EOF ##手动执行测试 su - oracle /home/oracle/scripts/del_arch.sh

配置数据库开机自启

##查看数据库是否随机器启动自动启动 ## root用户执行 /data/app/19.3.0/grid/bin/crsctl status resource ora.orcl.db -p|grep AUTO_START ##查看crs是否随机器启动自动启动 ##cat /etc/oracle/scls_scr/<node_name>/root/ohasdstr cat /etc/oracle/scls_scr/node1/root/ohasdstr 或者使用下面命令查看crs是否随机器启动自动启动 crsctl query crs autostart

image.png
配置数据库实例随集群服务自启动:

#root用户下执行 /data/app/19.3.0/grid/bin/crsctl modify resource "ora.orcl.db" -attr "AUTO_START=always" -unsupported

重启主机,测试集群都正常,至此,安装工作结束。

八、启动和关闭RAC

/data/app/19.3.0/grid/bin/crsctl stop cluster -all /data/app/19.3.0/grid/bin/crsctl start cluster -all

其他命令:

-关闭\启动单个实例 $ srvctl stop\start instance -d orcl -i orcl1 --关闭\启动所有实例 $ srvctl stop\start database -d orcl --关闭\启动CRS $ crsctl stop\start crs --关闭\启动集群服务 $ crsctl stop\start cluster -all crsctl start\stop crs 是单节管理 crsctl start\stop cluster [-all 所有节点] 可以管理多个节点 crsctl start\stop crs 管理crs 包含进程 OHASD crsctl start\stop cluster 不包含OHASD进程 要先启动 OHASD进程才可以使用 srvctl stop\start database 启动\停止所有实例及其启用的服务

九、碰到的问题

1、/usr/lib/udev/scsi_id -g -u /dev/sdc 命令获取不到设备的UUID信息。
解决办法:
打开虚拟机的vmx文件,加入下面内容,并重启虚拟机:

disk.EnableUUID = "TRUE"

2、安装grid软件,执行root.sh报错:CLSRSC-184: Configuration of ASM failed ,CLSRSC-258: Failed to configure and start ASM

[root@node1 ~]# /data/app/19.3.0/grid/root.sh Performing root user operation. The following environment variables are set as: ORACLE_OWNER= grid ORACLE_HOME= /data/app/19.3.0/grid Enter the full pathname of the local bin directory: [/usr/local/bin]: Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Creating /etc/oratab file... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root script. Now product-specific root actions will be performed. Relinking oracle with rac_on option Using configuration parameter file: /data/app/19.3.0/grid/crs/install/crsconfig_params The log of current session can be found at: /data/app/grid/crsdata/node1/crsconfig/rootcrs_node1_2025-05-12_02-05-11AM.log 2025/05/12 02:05:20 CLSRSC-594: Executing installation step 1 of 19: 'ValidateEnv'. 2025/05/12 02:05:20 CLSRSC-594: Executing installation step 2 of 19: 'CheckFirstNode'. 2025/05/12 02:05:23 CLSRSC-594: Executing installation step 3 of 19: 'GenSiteGUIDs'. 2025/05/12 02:05:25 CLSRSC-594: Executing installation step 4 of 19: 'SetupOSD'. Redirecting to /bin/systemctl restart rsyslog.service 2025/05/12 02:05:25 CLSRSC-594: Executing installation step 5 of 19: 'CheckCRSConfig'. 2025/05/12 02:05:25 CLSRSC-594: Executing installation step 6 of 19: 'SetupLocalGPNP'. 2025/05/12 02:05:42 CLSRSC-594: Executing installation step 7 of 19: 'CreateRootCert'. 2025/05/12 02:05:49 CLSRSC-594: Executing installation step 8 of 19: 'ConfigOLR'. 2025/05/12 02:06:05 CLSRSC-594: Executing installation step 9 of 19: 'ConfigCHMOS'. 2025/05/12 02:06:05 CLSRSC-594: Executing installation step 10 of 19: 'CreateOHASD'. 2025/05/12 02:06:12 CLSRSC-594: Executing installation step 11 of 19: 'ConfigOHASD'. 2025/05/12 02:06:12 CLSRSC-330: Adding Clusterware entries to file 'oracle-ohasd.service' 2025/05/12 02:06:40 CLSRSC-594: Executing installation step 12 of 19: 'SetupTFA'. 2025/05/12 02:06:40 CLSRSC-594: Executing installation step 13 of 19: 'InstallAFD'. 2025/05/12 02:06:40 CLSRSC-594: Executing installation step 14 of 19: 'InstallACFS'. 2025/05/12 02:06:50 CLSRSC-594: Executing installation step 15 of 19: 'InstallKA'. 2025/05/12 02:06:59 CLSRSC-594: Executing installation step 16 of 19: 'InitConfig'. ASM failed to start. Check /data/app/grid/cfgtoollogs/asmca/asmca-250512AM020731.log for details. 2025/05/12 02:07:55 CLSRSC-184: Configuration of ASM failed 2025/05/12 02:08:00 CLSRSC-258: Failed to configure and start ASM Died at /data/app/19.3.0/grid/crs/install/crsinstall.pm line 2628.

解决办法:虚拟机内存4G不够用,调整到5G后root.sh成功执行。
3、创建磁盘组时由于asm磁盘member状态,无法使用相应的asm磁盘:
image.png

解决办法:

dd if=/dev/zero of=/dev/asm_ocr bs=512 count=1024 dd if=/dev/zero of=/dev/asm_data bs=512 count=1024000 #例子说明: dd if=/dev/zero of=/dev/asm-disk1 bs=512 count=1024 if=文件名:输入文件名,缺省为标准输入。即指定源文件。 of=文件名:输出文件名,缺省为标准输出。即指定目的文件。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。 count=1024指拷贝1024块 /dev/zero是一个输入设备,可以用来初始化文件;

4、oracle软件安装时异常,重新安装时报错:

ERROR: The home is not clean. This home cannot be used since there was a failed OPatch execution in this home. Use a different home to proceed.

解决办法:$ORACLE_HOME/install/patch文件大小为0,删除掉。

十、参考文档

https://docs.oracle.com/en/database/oracle/oracle-database/19/rilin/index.html

关于作者:
网名:飞天,墨天轮2024年度优秀原创作者,拥有 Oracle 10g OCM 认证、PGCE认证、MySQL 8.0 OCP认证以及OBCA、KCP、KCSM、ACP、磐维等众多国产数据库认证证书,目前从事Oracle、Mysql、PostgresSQL、磐维数据库管理运维工作,喜欢结交更多志同道合的朋友,热衷于研究、分享数据库技术。
微信公众号:飞天online
墨天轮:https://www.modb.pro/u/15197
如有任何疑问,欢迎大家留言,共同探讨~~~

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

评论