数据库教程FGMT22‑Oracle RAC+DG生产实战(2):Oracle19c/26ai RA

数据库教程FGMT22‑Oracle RAC+DG生产实战(2):Oracle19c/26ai RAC for Linux8/9安装+补丁

说明:本套风哥教程本章为两套完全独立的双节点RAC集群部署实战,两套集群互不连通、互不依赖; 第一套集群:Oracle19c RAC,节点fgedu‑net‑cn1fgedu‑net‑cn2,操作系统RHEL8,每节点64G内存8CPU; 第二套集群:Oracle26ai RAC,节点fgedu‑net‑cn1fgedu‑net‑cn2,操作系统RHEL9,采用传统zip介质,不使用Gold‑Image镜像模式,每节点64G内存8CPU; 两套集群数据库SID分别为fgedudb1fgedudb2,数据库名fgedudb,业务测试用户名fgedu,统一根目录/fgedudb

前言

Oracle Real Application Clusters(RAC)是Oracle企业级核心高可用集群技术,依靠Grid Infrastructure底层集群件实现多节点共享存储、节点故障自动隔离、业务负载横向扩展。RAC部署复杂度远高于单机数据库,网络规划、共享ASM存储、操作系统内核、ssh互信、udev磁盘权限、时间同步任何一处疏漏,都会造成GI集群启动失败、节点驱逐、业务频繁抖动。风哥教程本文分别完成两套独立RAC集群完整实施:Oracle19c RAC部署于RHEL8;Oracle26ai RAC部署于RHEL9,26ai使用传统zip介质,不使用Gold Image镜像。内容覆盖硬件网络存储规划、操作系统标准化配置、GI Grid Infrastructure静默部署、ASM磁盘组创建、RAC数据库DBCA建库、RU滚动补丁、opatchauto工具、上线验收清单、高频故障排查,为本套教程后续DataGuard容灾部署打下坚实基础。风哥 itpux‑com

本套风哥教程面向DBA、数据库架构师、实施运维工程师;两套RAC集群硬件规格均为每节点64G物理内存、8颗逻辑CPU;风哥教程本文分为前言大纲、核心理论知识、实战操作演练、风哥针对本文总结四大模块;实战章节包含大量可直接复制shell、SQL脚本,读者可在两套独立测试集群完整复现部署、打补丁全流程。网上搜索风哥教程可以学习全套数据库教程

内容大纲

  1. RAC集群整体架构,两套独立集群硬件、网络、共享存储规划,19c与26ai RAC版本差异
  2. RAC核心理论:GI集群件、CRSD/CSSD/EVMD后台进程、OCR/Voting表决磁盘、Cache‑Fusion缓存融合原理
  3. RAC网络体系:公网、Interconnect私网、VIP、SCAN‑VIP解析规范,集群时间同步chrony约束
  4. ASM存储架构,磁盘组冗余模式,udev设备权限,cvuqdisk包作用
  5. RAC补丁体系:RU/RUR,opatchauto滚动补丁原理,滚动补丁约束、回退风险
  6. CVU集群校验工具,部署前后全套校验项
  7. 第一套集群实战:Oracle19c RAC RHEL8完整部署,操作系统配置、ssh等价性、GI静默部署、ASM配置、DBCA创建RAC CDB/PDB数据库
  8. Oracle19c RAC滚动RU补丁完整实操,opatchauto应用、datapatch字典升级、补丁回退
  9. 第二套集群实战:Oracle26ai RAC RHEL9部署,传统zip介质不使用Gold Image,GI部署、ASM、RAC数据库创建
  10. Oracle26ai RAC补丁运维、版本特有变更说明
  11. RAC集群上线完整验收检查清单
  12. RAC部署、打补丁高频报错故障分析与处理方案

一、核心理论知识

本章节为本套风哥教程理论基础,掌握RAC集群底层组件、网络存储约束、补丁原理,规避部署阶段埋下生产隐患。风哥教程 113257174

1.1 RAC两层架构:Grid Infrastructure与Database Home

RAC分为GI集群基础设施层、数据库二进制层。GI版本必须大于或等于数据库Home版本,集群所有节点GI、数据库版本必须完全一致

  1. Grid Infrastructure(GI):包含Oracle Clusterware集群件、ASM存储管理、OCR集群注册、Voting表决磁盘、CRSD、CSSD、EVMD、CTSS后台进程;负责节点心跳检测、脑裂防护、资源管理、ASM磁盘管理。GI家目录/fgedudb/grid
    • CRSD:集群资源管理,管理VIP、SCAN、监听、ASM、数据库资源;
    • CSSD:集群同步服务,节点心跳,检测节点故障,触发节点驱逐;
    • EVMD:事件管理进程,集群事件通知;
    • CTSS:集群时间同步服务,chrony时间同步异常时接管集群时间。
  2. Oracle Database Home:RAC数据库二进制程序目录/fgedudb/dbhome,集群全部节点Home路径、权限、版本保持完全一致。

Cache‑Fusion缓存融合:RAC核心机制,节点之间SGA内存块通过Interconnect私网高速传输,避免频繁磁盘IO;私网网络抖动、丢包,直接触发CSS节点驱逐重启。网上搜索风哥教程可以学习全套数据库教程

1.2 RAC网络组件规范

RAC四类IP,所有节点/etc/hosts解析必须正确,VIP、SCAN‑VIP禁止操作系统层面预先绑定网卡,由GI集群接管管理

  1. Public公网IP:主机物理网卡,SSH远程管理主机;
  2. Private Interconnect私网互联IP:Cache‑Fusion数据块交换核心网络,生产建议双网卡bond做链路冗余;
  3. VIP虚拟IP:每个节点一个VIP,节点故障自动漂移至存活节点,实现客户端连接快速故障切换;
  4. SCAN‑VIP:Single Client Access Name,最多3个SCAN虚拟IP,提供客户端统一访问入口,实现连接负载均衡。

生产硬性约束:私网和公网必须不同网段;所有节点主机名、IP解析双向互通;集群节点之间配置grid、oracle用户ssh等价互信,无密码访问。

1.3 ASM、OCR与Voting表决磁盘

  1. OCR磁盘(Oracle Cluster Registry):保存集群全部资源元数据,VIP、SCAN、数据库、监听资源配置;
  2. Voting File表决磁盘:CSS节点心跳仲裁,用来防止脑裂,必须配置奇数份表决磁盘(3份/5份);
  3. ASM磁盘组:OCRVOTE磁盘组存放OCR与Voting;DATA磁盘组存放RAC数据库数据文件;RECO磁盘组存放归档、快速恢复区;ASM支持外部冗余、普通冗余、高冗余。
  4. cvuqdisk RPM包:CVU校验工具依赖包,集群全部节点必须安装,用于共享磁盘发现与权限检测。风哥数据库教程 itpux‑com

1.4 两套集群版本差异说明

  1. Oracle19c RAC(RHEL8):企业主流LTS长期支持版本,zip介质部署,opatchauto支持完整滚动补丁,生产大规模落地,稳定性成熟。
  2. Oracle26ai RAC(RHEL9):新一代AI数据库,官方优先推荐Gold Image镜像;本教程使用传统zip介质,不启用Gold Image;底层集群组件部分重构,部分系统依赖包、opatch行为与19c存在细微差异,适合技术预研、新业务试点。

1.5 RAC RU滚动补丁体系

  1. RU Release Update:季度综合补丁,包含BUG修复、安全补丁;RAC支持滚动rolling补丁,逐个节点打补丁,业务不中断;
  2. RUR Release Update Revision:RU月度小修订补丁;
  3. opatchauto:RAC集群专用补丁工具,自动停止本节点GI、数据库资源,应用二进制补丁,启动资源,滚动切换到下一节点;
  4. datapatch:二进制补丁完成后执行,升级CDB/PDB内部数据字典;RAC环境仅需要在一个节点执行,自动同步全部实例;
  5. 补丁回退:opatchauto rollback回退二进制补丁,之后同样执行datapatch回退字典变更;>

风险:滚动补丁前务必备份GI Home、DB Home,做RMAN全库备份;若搭配后续DG容灾,主备集群GI、数据库补丁版本必须100保持一致。网上搜索风哥教程可以学习全套数据库教程

1.6 CVU集群校验工具

runcluvfy.shCVU集群校验工具,部署前做全套预检查,部署完成后做集群完整性校验;覆盖内核参数、rpm包、ssh互信、网络连通、共享磁盘、时间同步、用户权限。生产部署,预检查全部ERROR级别问题必须修复,WARNING需要评估风险。

1.7 RAC上线验收关键点

GI集群全部资源状态Online;ASM磁盘组全部mount;RAC多实例分别运行不同节点;PDB保存open状态;告警日志无ORA、CRS报错;时间同步正常;补丁版本核对;启停资源演练;备份策略配置。 上51CTO搜索风哥可以学习全套数据库教程

二、实战操作演练

环境说明: 环境一:19c RHEL8 RAC集群,节点fgedu‑net‑cn1fgedu‑net‑cn2,每节点64G内存8CPU;SID:fgedudb1(cn1)、fgedudb2(cn2),数据库名fgedudb。 环境二:26ai RAC RHEL9 RAC集群,节点fgedu‑net‑cn1fgedu‑net‑cn2,每节点64G内存8CPU;SID:fgedudb1(cn1)、fgedudb2(cn2),数据库名fgedudb;26ai使用传统zip介质,不使用Gold Image镜像。 除特别说明,操作系统配置脚本两个节点全部执行;GI软件安装仅在第一个节点执行,安装程序自动分发软件到第二个节点;root执行系统配置,grid用户执行GI相关操作,oracle用户执行数据库操作。

第一部分 环境一:Oracle19c RAC RHEL8 双节点完整部署

2.1 操作系统标准化配置(两个节点root用户执行)

2.1.1硬件与系统基础检查

#节点分别确认主机名
hostname
free -h
lscpu
cat /etc/redhat‑release
cat /proc/swaps
cat /sys/kernel/mm/transparent_hugepage/enabled
chronyc sources

节点1输出hostname:fgedu‑net‑cn1;节点2输出hostname:fgedu‑net‑cn2;每节点物理内存64G,逻辑CPU 8颗。

2.1.2 /etc/hosts配置,两节点内容完全一致

cat >> /etc/hosts <<EOF
#公网
10.10.10.101 fgedu‑net‑cn1
10.10.10.102 fgedu‑net‑cn2
#VIP
10.10.10.111 fgedu‑net‑cn1‑vip
10.10.10.112 fgedu‑net‑cn2‑vip
#Interconnect私网
192.168.20.101 fgedu‑net‑cn1‑priv
192.168.20.102 fgedu‑net‑cn2‑priv
#SCAN‑VIP 3个
10.10.10.121 fgedu‑scan
10.10.122 fgedu‑scan
10.10.10.123 fgedu‑scan
EOF

2.1.3 安装oracle‑database‑preinstall‑19c预安装包

yum install -y oracle‑database‑preinstall‑19c

2.1.4 创建操作系统用户与用户组,两节点执行

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 asmadmin
groupadd -g 54326 asmdba
groupadd -g 54327 asmoper

useradd -u 54321 -g oinstall -G asmadmin,asmdba,asmoper grid
useradd -u 54322 -g oinstall -G dba,oper,asmdba oracle

echo "grid" | passwd --stdin grid
echo "oracle" | passwd --stdin oracle

2.1.5 OFA目录创建,两节点执行

mkdir -p /fgedudb/grid
mkdir -p /fgedudb/dbhome
mkdir -p /fgedudb/app/oraInventory
mkdir -p /fgedudb/oradata/fgedudb
mkdir -p /fgedudb/fast_recovery_area/fgedudb
mkdir -p /fgedudb/media
chown -R grid:oinstall /fgedudb/grid
chown -R oracle:oinstall /fgedudb/dbhome
chmod -R 775 /fgedudb

2.1.6 udev规则配置共享ASM磁盘,两节点执行

共享磁盘设备示例:/dev/sdb,/dev/sdc,/dev/sdd用于OCRVOTE;/dev/sde,/dev/sdf用于DATA;/dev/sdg,/dev/sdh用于RECO。

cat > /etc/udev/rules.d/99‑asm‑disks.rules <<EOF
KERNEL=="sd*",SUBSYSTEM=="block",ENV{DEVTYPE}=="disk",OWNER="grid",GROUP="asmadmin",MODE="0660"
EOF
udevadm control --reload‑rules
udevadm trigger

2.1.7 sysctl内核参数配置,适配64G内存8CPU,两节点执行

cat >> /etc/sysctl.conf <<EOF
fs.aio‑max‑nr=1048576
fs.file‑max=6815744
kernel.sem=250 32000 100 128
kernel.shmmni=4096
kernel.shmall=8388608
kernel.shmmax=34359738368
net.ipv4.ip_local_port_range=9000 65500
net.rmem_default=262144
net.wmem_default=262144
net.rmem_max=4194304
net.wmem_max=4194304
net.core.rmem_max=4194304
net.core.wmem_max=4194304
vm.swappiness=10
EOF
sysctl -p

2.1.8 limits.conf资源限制,两节点执行

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

2.1.9 关闭透明大页、chrony时间同步、防火墙SELinux,两节点执行

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
grubby --update‑kernel‑args=transparent_hugepage=never

systemctl enable --now chronyd
chronyc -a burst 4/4

systemctl disable firewalld
systemctl stop firewalld
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
setenforce 0

2.1.10 grid、oracle用户环境变量,两节点分别配置

grid用户~/.bash_profile

su - grid
cat >> ~/.bash_profile <<'EOF'
export ORACLE_BASE=/fgedudb/grid
export ORACLE_HOME=/fgedudb/grid
export ORACLE_SID=+ASM1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
EOF
source ~/.bash_profile

oracle用户~/.bash_profile

su - oracle
cat >> ~/.bash_profile <<'EOF'
export ORACLE_BASE=/fgedudb/app/oracle
export ORACLE_HOME=/fgedudb/dbhome
export ORACLE_SID=fgedudb1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
EOF
source ~/.bash_profile

2.1.11 配置grid、oracle用户ssh等价互信(节点1 grid执行)

su - grid
cd /fgedudb/grid/oui/prov/resources/scripts
./sshUserSetup.sh -user grid -hosts "fgedu‑net‑cn1 fgedu‑net‑cn2" -advanced -noPromptPassphrase
./sshUserSetup.sh -user oracle -hosts "fgedu‑net‑cn1 fgedu‑net‑cn2" -advanced -noPromptPassphrase

2.1.12 安装cvuqdisk rpm包,两节点root执行

从GI介质目录取出rpm包,节点1 scp传到节点2

#节点1
su - root
scp /fgedudb/media/cv/rpm/cvuqdisk‑1.0.10‑1.rpm root@fgedu‑net‑cn2:/tmp
export CVUQDISK_GRP=oinstall
rpm -ivh /fgedudb/media/cv/rpm/cvuqdisk‑1.0.10‑1.rpm

#节点2 root
export CVUQDISK_GRP=oinstall
rpm -ivh /tmp/cvuqdisk‑1.0.10‑1.rpm

2.1.13 CVU预检查(节点1 grid)

su - grid
cd /fgedudb/grid
export CV_ASSUME_DISTID=OL8
./runcluvfy.sh stage -pre crsinst -n fgedu‑net‑cn1,fgedu‑net‑cn2 -fixup -verbose

修复全部ERROR级别报错,WARNING逐条评估。网上搜索风哥教程可以学习全套数据库教程

2.2 Grid Infrastructure GI静默部署(仅节点1 grid用户)

上传GI zip介质LINUX.X64_193000_grid_home.zip/fgedudb/media

su - grid
cd /fgedudb/media
unzip LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME
cd $ORACLE_HOME
./gridSetup.sh -silent -ignorePrereq \
ORACLE_BASE=/fgedudb/grid \
ORACLE_HOME=/fgedudb/grid \
oracle.install.option=CRS_CONFIG \
oracle.install.crs.config.clusterName=FGEDU‑CRS \
oracle.install.crs.config.gpnp.scanName=fgedu‑scan \
oracle.install.crs.config.gpnp.scanPort=1521 \
oracle.install.crs.config.clusterNodes=fgedu‑net‑cn1:fgedu‑net‑cn1‑vip,fgedu‑net‑cn2:fgedu‑net‑cn2‑vip \
oracle.install.crs.config.networkInterfaceList=ens192:10.10.10.0:public,ens224:192.168.20.0:private \
oracle.install.crs.config.storageOption=ASM_STORAGE \
oracle.install.crs.config.asmDiskGroupName=OCRVOTE \
oracle.install.crs.config.asmDiskDiscoveryString=/dev/sd* \
oracle.install.crs.config.asmRedundancy=NORMAL \
oracle.install.asm.SYSASMPassword=fgedudb \
oracle.install.asm.monitorPassword=fgedudb \
oracle.install.config.asmDiskList=/dev/sdb,/dev/sdc,/dev/sdd \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSASM_GROUP=asmadmin \
oracle.install.db.OSOPER_GROUP=oper \
INVENTORY_LOCATION=/fgedudb/app/oraInventory

GI安装完成,按照输出提示,两个节点依次root执行orainstRoot.sh、root.sh脚本

2.2.1 GI部署完成,集群状态核查(节点1 grid)

crsctl check crs
crsctl stat res -t
crsctl query css votedisk
ocrcheck
srvctl status asm
asmcmd lsdg

全部集群资源状态必须为Online。风哥数据库教程 itpux‑com

2.2.2 ASMCA创建DATA、RECO业务ASM磁盘组(grid用户)

asmcmd
create diskgroup DATA normal redundancy
disk '/dev/sde','/dev/sdf'
attribute 'compatible.asm'='19.0.0.0','compatible.rdbms'='19.0.0.0';

create diskgroup RECO normal redundancy
disk '/dev/sdg','/dev/sdh'
attribute 'compatible.asm'='19.0.0.0','compatible.rdbms'='19.0.0.0';
exit

2.3 Oracle RAC数据库软件静默部署(节点1 oracle用户)

上传db介质LINUX.X64_193000_db_home.zip/fgedudb/media

su - oracle
cd /fgedudb/media
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
cd $ORACLE_HOME
./runInstaller -silent -ignorePrereq \
ORACLE_BASE=/fgedudb/app/oracle \
ORACLE_HOME=/fgedudb/dbhome \
oracle.install.option=INSTALL_DB_SWONLY \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=dba \
oracle.install.db.OSDGDBA_GROUP=dba \
oracle.install.db.OSKMDBA_GROUP=dba \
oracle.install.db.OSRACDBA_GROUP=dba \
oracle.install.db.CLUSTER_NODES=fgedu‑net‑cn1,fgedu‑net‑cn2 \
INVENTORY_LOCATION=/fgedudb/app/oraInventory

软件部署完成,两个节点root执行root.sh脚本。

2.3.1 netca静默配置RAC集群监听(节点1 oracle)

netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp
srvctl status listener

2.3.2 DBCA静默创建RAC CDB/PDB多实例数据库

dbca -silent -createDatabase \
‑templateName General_Purpose.dbc \
‑gdbName fgedudb ‑sid fgedudb \
‑characterSet AL32UTF8 \
‑sysPassword fgedudb ‑systemPassword fgedudb \
‑createAsContainerDatabase true \
‑numberOfPDBs 1 \
‑pdbName fgedu_pdb \
‑pdbAdminPassword fgedudb \
‑databaseType MULTIPURPOSE \
‑RACOneNode false \
‑nodelist fgedu‑net‑cn1,fgedu‑net‑cn2 \
‑memoryMgmtType auto_sga \
‑totalMemory 49152 \
‑storageType ASM \
‑asmDiskGroupName DATA \
‑redoLogFileSize 200 \
‑recoveryAreaDestination RECO \
‑emConfiguration NONE

2.3.3 RAC数据库基础验证

sqlplus / as sysdba
show pdbs;
alter pluggable database all open;
alter pluggable database all save state;
alter session set container=fgedu_pdb;
create user fgedu identified by fgedudb default tablespace users temporary tablespace temp;
grant connect,resource,select_catalog_role to fgedu;
alter session set container=cdb$root;
select instance_name,host_name,status from gv$instance;
exit;

确认fgedudb1运行在cn1,fgedudb2运行在cn2。

2.4 Oracle19c RAC滚动RU补丁完整实操

重要:滚动补丁前,GI Home、DB Home做操作系统备份;RMAN做全库备份;滚动补丁逐个节点操作,打完节点业务切换至其他存活节点

  1. 节点1,升级OPatch工具版本,上传RU补丁介质p37642901_190000_Linux‑x86‑64.zip/fgedudb/media/patch
su - root
cd /fgedudb/media/patch
unzip p6880880_190000_Linux‑x86‑64.zip -d /fgedudb/grid/OPatch
unzip p37642901_190000_Linux‑x86‑64.zip

#GI Home opatchauto预检查
export PATH=/fgedudb/grid/OPatch:$PATH
opatchauto prereq CheckConflictAgainstOHWithDetail -ph /fgedudb/media/patch/37642901
  1. 节点1执行GI滚动补丁(root执行opatchauto)
opatchauto apply /fgedudb/media/patch/37642901 -oh /fgedudb/grid

脚本自动停止本节点GI全部资源,应用二进制补丁,重新启动GI,集群资源漂移到节点2。

  1. 节点1,执行DB Home滚动补丁
opatchauto apply /fgedudb/media/patch/37642901 -oh /fgedudb/dbhome

节点1补丁全部完成,确认crsctl资源全部Online;切换到节点2,完全重复上面GI、DB Home opatchauto apply步骤

  1. 两个节点二进制补丁全部完成,仅节点1执行datapatch升级数据字典
su - oracle
export ORACLE_HOME=/fgedudb/dbhome
sqlplus / as sysdba
startup;
exit;
cd $ORACLE_HOME/OPatch
./datapatch -verbose
sqlplus / as sysdba
@?/rdbms/admin/utlrp.sql
select owner,object_name,object_type,status from dba_objects where status='INVALID';
exit;
  1. 补丁版本核对
su - grid
$ORACLE_HOME/OPatch/opatch lsinventory
su - oracle
$ORACLE_HOME/OPatch/opatch lsinventory

2.4.1 RAC RU补丁回退实操(故障应急)

两个节点依次执行,先节点1回退GI、DB,再节点2回退GI、DB,完成后执行datapatch。

#root节点1
export PATH=/fgedudb/grid/OPatch:$PATH
opatchauto rollback /fgedudb/media/patch/37642901 -oh /fgedudb/grid
opatchauto rollback /fgedudb/media/patch/37642901 -oh /fgedudb/dbhome

全部节点回退完成,节点1执行datapatch、utlrp.sql。

第二部分 环境二:Oracle26ai RAC RHEL9双节点部署(传统zip介质,不使用Gold Image)

集群节点fgedu‑net‑cn1fgedu‑net‑cn2,RHEL9,每节点64G内存8CPU;完全独立集群,不依赖19c环境。

2.5 RHEL9操作系统标准化配置(两节点root执行)

2.5.1硬件系统检查

hostname
free -h
lscpu
cat /etc/redhat‑release
cat /proc/swaps
cat /sys/kernel/mm/transparent_hugepage/enabled
chronyc sources

节点1 hostname输出fgedu‑net‑cn1,节点2输出fgedu‑net‑cn2

2.5.2 /etc/hosts配置,两节点完全相同(同19c集群IP规划)

cat >> /etc/hosts <<EOF
10.10.10.101 fgedu‑net‑cn1
10.10.10.102 fgedu‑net‑cn2
10.10.10.111 fgedu‑net‑cn1‑vip
10.10.10.112 fgedu‑net‑cn2‑vip
192.168.20.101 fgedu‑net‑cn1‑priv
192.168.20.102 fgedu‑net‑cn2‑priv
10.10.10.121 fgedu‑scan
10.10.10.122 fgedu‑scan
10.10.10.123 fgedu‑scan
EOF

2.5.3 安装26ai预安装rpm包

dnf install -y oracle‑ai‑database‑preinstall‑26ai

2.5.4 用户组、目录、udev、sysctl、limits.conf,两节点执行

用户组UID/GID、目录路径、udev磁盘规则、sysctl内核参数、limits资源限制和19c集群保持一致; 关闭透明大页、chrony时间同步、防火墙、SELinux操作与19c流程一致。

2.5.5 grid、oracle用户bash_profile环境变量,两节点

grid用户

su - grid
cat >> ~/.bash_profile <<'EOF'
export ORACLE_BASE=/fgedudb/grid
export ORACLE_HOME=/fgedudb/grid
export ORACLE_SID=+ASM1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
EOF
source ~/.bash_profile

oracle用户

su - oracle
cat >> ~/.bash_profile <<'EOF'
export ORACLE_BASE=/fgedudb/app/oracle
export ORACLE_HOME=/fgedudb/dbhome
export ORACLE_SID=fgedudb1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
EOF
source ~/.bash_profile

2.5.6 ssh等价互信、cvuqdisk包安装、CVU预检查(节点1 grid)

操作流程与19c RAC一致;注意RHEL9 CV_ASSUME_DISTID设置为OL9。

su - grid
cd /fgedudb/grid/oui/prov/resources/scripts
./sshUserSetup.sh -user grid -hosts "fgedu‑net‑cn1 fgedu‑net‑cn2" -advanced -noPromptPassphrase
./sshUserSetup.sh -user oracle -hosts "fgedu‑net‑cn1 fgedu‑net‑cn2" -advanced -noPromptPassphrase

export CV_ASSUME_DISTID=OL9
./runcluvfy.sh stage -pre crsinst -n fgedu‑net‑cn1,fgedu‑net‑cn2 -fixup -verbose

2.6 Oracle26ai GI Grid Infrastructure静默部署(节点1 grid,zip介质,不使用Gold Image)

上传26ai GI zip介质LINUX.X64_260000_grid_home.zip/fgedudb/media

su - grid
cd /fgedudb/media
unzip LINUX.X64_260000_grid_home.zip -d $ORACLE_HOME
cd $ORACLE_HOME
./gridSetup.sh -silent -ignorePrereq \
ORACLE_BASE=/fgedudb/grid \
ORACLE_HOME=/fgedudb/grid \
oracle.install.option=CRS_CONFIG \
oracle.install.crs.config.clusterName=FGEDU‑26AI‑CRS \
oracle.install.crs.config.gpnp.scanName=fgedu‑scan \
oracle.install.crs.config.gpnp.scanPort=1521 \
oracle.install.crs.config.clusterNodes=fgedu‑net‑cn1:fgedu‑net‑cn1‑vip,fgedu‑net‑cn2:fgedu‑net‑cn2‑vip \
oracle.install.crs.config.networkInterfaceList=ens192:10.10.10.0:public,ens224:192.168.20.0:private \
oracle.install.crs.config.storageOption=ASM_STORAGE \
oracle.install.crs.config.asmDiskGroupName=OCRVOTE \
oracle.install.crs.config.asmDiskDiscoveryString=/dev/sd* \
oracle.install.crs.config.asmRedundancy=NORMAL \
oracle.install.asm.SYSASMPassword=fgedudb \
oracle.install.asm.monitorPassword=fgedudb \
oracle.install.config.asmDiskList=/dev/sdb,/dev/sdc,/dev/sdd \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSASM_GROUP=asmadmin \
oracle.install.db.OSOPER_GROUP=oper \
INVENTORY_LOCATION=/fgedudb/app/oraInventory

GI安装结束,两个节点执行root脚本;核查集群资源、votedisk、ocr、ASM状态。

crsctl check crs
crsctl stat res -t
crsctl query css votedisk
ocrcheck
asmcmd lsdg

asmcmd创建DATA、RECO磁盘组,兼容属性设置为26.0.0.0。

2.7 Oracle26ai RAC数据库软件部署,DBCA建库

上传db zip介质,解压部署数据库Home,执行runInstaller静默集群软件安装;netca配置监听;dbca静默创建RAC CDB/PDB数据库,总内存48G。

su - oracle
cd /fgedudb/media
unzip LINUX.X64_260000_db_home.zip -d $ORACLE_HOME
cd $ORACLE_HOME
./runInstaller -silent -ignorePrereq \
ORACLE_BASE=/fgedudb/app/oracle \
ORACLE_HOME=/fgedudb/dbhome \
oracle.install.option=INSTALL_DB_SWONLY \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=dba \
oracle.install.db.OSDGDBA_GROUP=dba \
oracle.install.db.OSKMDBA_GROUP=dba \
oracle.install.db.OSRACDBA_GROUP=dba \
oracle.install.db.CLUSTER_NODES=fgedu‑net‑cn1,fgedu‑net‑cn2 \
INVENTORY_LOCATION=/fgedudb/app/oraInventory

两个节点执行root脚本;netca配置集群监听;dbca建库。

netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp

dbca -silent -createDatabase \
‑templateName General_Purpose.dbc \
‑gdbName fgedudb ‑sid fgedudb \
‑characterSet AL32UTF8 \
‑sysPassword fgedudb ‑systemPassword fgedudb \
‑createAsContainerDatabase true \
‑numberOfPDBs 1 \
‑pdbName fgedu_pdb \
‑pdbAdminPassword fgedudb \
‑databaseType MULTIPURPOSE \
‑RACOneNode false \
‑nodelist fgedu‑net‑cn1,fgedu‑net‑cn2 \
‑memoryMgmtType auto_sga \
‑totalMemory 49152 \
‑storageType ASM \
‑asmDiskGroupName DATA \
‑redoLogFileSize 200 \
‑recoveryAreaDestination RECO \
‑emConfiguration NONE

建库完成,打开PDB,save state,创建业务用户fgedu,验证gv$instance多实例状态。网上搜索风哥教程可以学习全套数据库教程

2.8 Oracle26ai RAC补丁运维简要说明

本套风哥教程26ai RAC使用传统zip介质,虽然官方主推Gold Image镜像,opatchauto滚动补丁工具依然可用;整体流程和19c大体一致,但部分opatch参数、RU包内容存在版本差异;打补丁前务必阅读对应RU的README文档;二进制补丁完成后同样执行datapatch升级字典。

2.9 RAC集群上线验收检查清单(两套集群通用)

  1. 操作系统层:两节点hostname、hosts解析双向正常;chrony时间同步正常;透明大页关闭;内核参数、limits核对;swap配置合理。
  2. GI集群层:crsctl check crs全部组件online;crsctl stat res -t所有集群资源Target=Online、State=Online;OCR、Voting磁盘状态正常;SCAN、VIP资源运行正常。
  3. ASM层:OCRVOTE、DATA、RECO磁盘组全部mount;磁盘组冗余配置符合规划。
  4. RAC数据库层:两个实例分别运行在不同节点;CDB$ROOT、PDB全部open;alter pluggable database all save state执行完成;字符集AL32UTF8;归档模式开启;FRA正常配置。
  5. 补丁版本核对:GI Home、DB Home opatch lsinventory核对RU版本;数据库执行datapatch完成字典升级;utlrp编译后无无效对象。
  6. 连通性测试:SCAN地址可以连接RAC数据库;业务用户fgedu可登录PDB;执行基础SQL查询正常。
  7. 故障演练:单节点资源停止启动演练;确认资源可以漂移至另外节点。
  8. 备份:配置RMAN全库备份,验证备份集可用;保存部署文档、补丁回退脚本。

2.10 RAC部署与补丁高频故障排查

  1. GI安装CVU报错缺少cvuqdisk包:两个节点全部安装对应rpm包,导出CVUQDISK_GRP=oinstall环境变量。
  2. ssh等价互信失败:~/.ssh目录权限700,私钥600;hosts主机名解析双向正常。
  3. CSS节点驱逐:Interconnect私网丢包抖动;chrony时间不同步;表决磁盘IO异常。
  4. opatchauto滚动补丁失败:执行prereq预检查,排查补丁冲突;补丁介质损坏;GI/DB Home目录权限异常;可执行resume恢复中断补丁会话。
  5. DBCA建库ASM磁盘组看不到:ASM磁盘组未mount;udev磁盘权限grid:asmadmin不正确;asm_diskstring参数配置错误。
  6. PDB实例重启后mount状态:没有执行alter pluggable database xxx save state;保存PDB状态。
  7. datapatch执行报错:RAC数据库所有实例完全open;二进制补丁版本与数据库版本不匹配。 上51CTO搜索风哥可以学习全套数据库教程

三、风哥针对本文总结

本套风哥教程完成两套独立RAC集群完整实战部署;第一套Oracle19c RAC部署于RHEL8双节点;第二套Oracle26ai RAC部署于RHEL9双节点,26ai采用传统zip介质,不使用Gold‑Image镜像模式;覆盖RAC两层GI+DB架构、网络规划、共享ASM/OCR/Voting磁盘、操作系统全套标准化配置、ssh等价互信、cvuqdisk包、CVU预校验、GI静默部署、ASM磁盘组创建、DBCA创建RAC CDB/PDB集群数据库;opatchauto滚动RU补丁、datapatch字典升级、补丁回退;RAC上线验收清单,部署与补丁阶段高频故障分析。

  1. RAC集群GI版本必须大于或等于数据库Home版本,集群全部节点GI、数据库二进制版本必须100保持一致;RAC网络公网、私网、VIP、SCAN‑VIP规划严谨,VIP、SCAN‑VIP禁止操作系统层面预先绑定网卡,由GI集群接管;Interconnect私网抖动丢包直接触发CSS节点驱逐,生产建议双网卡bond冗余。
  2. OCR/Voting表决磁盘必须配置奇数份,规避脑裂风险;全部节点共享磁盘udev权限必须固化为grid:asmadmin;cvuqdisk rpm包集群每个节点都需要安装,CVU预检查ERROR级别问题必须修复。
  3. Oracle19c为成熟LTS生产版本;Oracle26ai官方主推Gold Image镜像,本教程使用传统zip介质仅用于技术预研;生产上线26ai RAC优先参考官方Gold Image部署文档。
  4. RAC RU季度补丁支持opatchauto滚动补丁,业务不停机;逐个节点操作,本节点打补丁过程集群资源自动漂移至其他存活节点;二进制补丁完成后,必须执行datapatch完成CDB/PDB字典升级,RAC集群仅需在一个节点执行;补丁前务必备份GI、DB Home,完成RMAN全库备份,保留完整补丁回退手段。
  5. GI部署完成,使用crsctl stat res -t核查全部集群资源Target与State均为Online;ASM磁盘组全部正常mount;RAC两个数据库实例分别运行于不同集群节点;PDB务必执行alter pluggable database all save state保存开机open状态。
  6. RAC上线验收不能仅看数据库可以启动;完整核对操作系统、GI集群、ASM磁盘组、RAC多实例、PDB状态、补丁版本、连通性、备份有效性;简单故障演练验证资源漂移行为。
  7. 滚动补丁属于高风险变更,正式生产执行前,务必在测试集群完整复现补丁全流程,记录操作步骤、回退脚本;若后续搭配DataGuard容灾,主备集群GI与数据库补丁版本必须严格一致。
  8. 本套教程两套RAC集群,为后续RAC搭配DataGuard容灾部署打下基础;全部shell、SQL脚本建议读者在两套独立测试集群完整复现,理解RAC集群网络存储约束、滚动补丁风险之后,再应用到企业真实RAC项目实施。
0
0
0
0
评论
未登录
暂无评论