Oracle RAC集群部署实战:双节点配置与共享存储设置
在企业级数据中台架构中,高可用性与高性能是核心诉求。Oracle Real Application Clusters(RAC)作为Oracle官方提供的集群解决方案,允许多个节点共享同一数据库实例,实现负载均衡与故障自动切换,是构建关键业务系统不可或缺的技术支柱。本文将深入解析Oracle RAC双节点部署的完整流程,涵盖操作系统配置、共享存储搭建、网络规划、集群软件安装与数据库创建,为企业提供可落地的部署指南。
Oracle RAC依赖于三个关键组件协同工作:共享存储、私有网络与公共网络。任何环节的缺失或错误配置,都将导致集群无法启动或数据不一致。
✅ 最佳实践:私有网络应使用专用网卡,且不与任何外部网络互通,防止心跳包被干扰。若使用虚拟化环境(如VMware),需启用“网络隔离”与“多路径I/O”支持。
在两个节点(node1、node2)上执行以下标准化配置:
# 关闭防火墙与SELinuxsudo systemctl stop firewalldsudo systemctl disable firewalldsudo setenforce 0sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config# 配置主机名与hosts文件hostnamectl set-hostname node1.example.comecho "192.168.1.10 node1.example.com node1" >> /etc/hostsecho "192.168.1.11 node2.example.com node2" >> /etc/hostsecho "192.168.2.10 node1-priv.example.com node1-priv" >> /etc/hostsecho "192.168.2.11 node2-priv.example.com node2-priv" >> /etc/hostsecho "192.168.1.100 node1-vip.example.com node1-vip" >> /etc/hostsecho "192.168.1.101 node2-vip.example.com node2-vip" >> /etc/hostsgroupadd -g 501 oinstallgroupadd -g 502 dbagroupadd -g 503 operuseradd -u 501 -g oinstall -G dba,oper oracleecho "oracle:Oracle123" | chpasswd编辑 /etc/sysctl.conf:
fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576执行 sysctl -p 生效。
编辑 /etc/security/limits.conf:
oracle soft nofile 1024oracle hard nofile 65536oracle soft nproc 16384oracle hard nproc 16384oracle soft stack 10240oracle hard stack 32768在两个节点上使用 lsblk 或 fdisk -l 查看共享磁盘,假设识别出 /dev/sdb, /dev/sdc, /dev/sdd 三块磁盘。
安装并配置 device-mapper-multipath:
sudo yum install -y device-mapper-multipathsudo systemctl enable multipathd --nowsudo multipath -ll编辑 /etc/multipath.conf:
defaults { user_friendly_names yes find_multipaths yes}devices { device { vendor "NETAPP" product "LUN" path_grouping_policy multibus path_selector "round-robin 0" hardware_handler "0" failback immediate no_path_retry queue }}重启服务并验证:
sudo systemctl restart multipathdsudo multipath -v3输出应显示类似 mpatha (3600a098038304477485d4c4e4f4d454d) 的多路径设备。
使用 oracleasm 工具标记磁盘(需安装Oracle ASMlib):
sudo /etc/init.d/oracleasm createdisk DATA1 /dev/mapper/mpathasudo /etc/init.d/oracleasm createdisk FRA1 /dev/mapper/mpathbsudo /etc/init.d/oracleasm listdisks⚠️ 注意:确保两个节点上均执行相同操作,且磁盘名称完全一致。
从Oracle官网下载:
linuxx64_193000_grid_home.zip(Grid Infrastructure 19c)linuxx64_193000_db_home.zip(Database 19c)解压至 /u01/app/grid 与 /u01/app/oracle/product/19.0.0/dbhome_1
创建响应文件 grid_install.rsp:
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0INVENTORY_LOCATION=/u01/app/oraInventorySELECTED_LANGUAGES=enORACLE_HOSTNAME=node1.example.comUNIX_GROUP_NAME=oinstallINSTALL_TYPE=CRSoracle.install.asm.SYSASMPassword=Oracle123oracle.install.asm.diskGroup.name=DATAoracle.install.asm.diskGroup.redundancy=EXTERNALoracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/DATA1oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/*oracle.install.asm.monitorPassword=Oracle123执行安装:
cd /u01/app/grid./runInstaller -silent -responseFile /tmp/grid_install.rsp -ignorePrereqFailure安装完成后,以root身份执行脚本:
sudo /u01/app/oraInventory/orainstRoot.shsudo /u01/app/grid/root.sh/u01/app/grid/bin/crsctl check cluster/u01/app/grid/bin/crsctl stat res -t输出应显示所有资源为 ONLINE,包括 ora.cluster_interconnect.haip 和 ora.cssd。
创建响应文件 db_install.rsp:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0oracle.install.option=INSTALL_DB_SWONLYORACLE_HOSTNAME=node1.example.comUNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/u01/app/oraInventorySELECTED_LANGUAGES=enORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1ORACLE_BASE=/u01/app/oracleoracle.install.db.InstallEdition=EEoracle.install.db.isCustomInstall=falseoracle.install.db.DBA_GROUP=dbaoracle.install.db.OPER_GROUP=operoracle.install.db.config.starterdb.type=GENERAL_PURPOSEoracle.install.db.config.starterdb.globalDBName=racdb.example.comoracle.install.db.config.starterdb.SID=racdboracle.install.db.config.starterdb.characterSet=AL32UTF8oracle.install.db.config.starterdb.memoryOption=trueoracle.install.db.config.starterdb.memoryLimit=2048oracle.install.db.config.starterdb.enableSecuritySettings=trueoracle.install.db.config.starterdb.password.ALL=Oracle123oracle.install.db.config.starterdb.password.SYS=Oracle123oracle.install.db.config.starterdb.password.SYSTEM=Oracle123执行安装:
cd /u01/app/oracle/product/19.0.0/dbhome_1./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereqFailuredbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname racdb \ -sid racdb \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -nationalCharacterSet AL16UTF16 \ -registerWithDirService false \ -listeners LISTENER \ -nodeinfo node1,node2 \ -storageType ASM \ -diskGroupName DATA \ -recoveryGroupName FRA \ -databaseType MULTIPURPOSE \ -memoryPercentage 30 \ -emConfiguration NONE \ -sampleSchema false安装完成后,使用 srvctl status database -d racdb 验证实例状态。
手动关闭一个节点的网络接口:
# 在node1上sudo ifdown eth0观察VIP是否自动漂移到node2:
/u01/app/grid/bin/srvctl status vip -n node1/u01/app/grid/bin/srvctl status vip -n node2客户端连接应无感知中断,验证RAC的高可用能力。
awrreport 生成性能快照v$gc* 视图,评估缓存融合效率v$asm_diskgroup 磁盘组使用率📌 企业级建议:在部署RAC前,务必进行压力测试与灾难恢复演练。RAC虽提供高可用,但架构复杂度远高于单实例,需配备专业DBA团队。
Oracle RAC部署不仅是技术操作,更是企业数据架构的基石工程。它为关键业务系统提供了连续性保障,是支撑数字孪生、实时分析与可视化决策的底层动力。在数据驱动的时代,稳定、可扩展、高可用的数据库平台,直接决定业务创新的速度与质量。
如需快速验证RAC部署方案,或希望获得专业团队的部署支持,可申请试用&https://www.dtstack.com/?src=bbs如需获取自动化部署脚本与配置模板,可申请试用&https://www.dtstack.com/?src=bbs如需评估RAC与云原生数据库的性价比,可申请试用&https://www.dtstack.com/?src=bbs
通过科学规划与严谨实施,Oracle RAC将成为您数据中台最可靠的引擎。
申请试用&下载资料