Oracle RAC集群部署实战:双节点配置与共享存储设置
在企业级数据中台架构中,高可用性与高性能是核心诉求。Oracle Real Application Clusters(RAC)作为Oracle官方提供的集群数据库解决方案,允许多个节点共享同一数据库实例,实现负载均衡与故障自动切换,是构建稳定数据服务底座的关键技术。本文将深入解析Oracle RAC在双节点环境下的完整部署流程,涵盖操作系统配置、共享存储搭建、网络规划、集群软件安装及数据库创建,为企业提供可落地的部署指南。
在开始部署前,必须确保硬件与软件环境满足Oracle官方推荐标准:
⚠️ 注意:Oracle RAC依赖共享存储架构,不能使用本地磁盘作为数据文件存储。必须使用SAN、NAS或Oracle ASM磁盘组。
Oracle RAC的核心在于“共享存储”——多个节点必须能同时访问同一份数据文件。常见的实现方式为使用Oracle Automatic Storage Management(ASM),它提供卷管理、条带化与镜像功能,替代传统文件系统。
| 类型 | 适用场景 | 推荐度 |
|---|---|---|
| SAN(光纤通道) | 高性能、低延迟、企业级 | ⭐⭐⭐⭐⭐ |
| iSCSI | 成本较低,适合中等负载 | ⭐⭐⭐⭐ |
| NFS(仅限Oracle 19c+) | 简化部署,但性能受限 | ⭐⭐ |
推荐使用光纤通道SAN或iSCSI,确保多路径冗余(Multipath)配置,避免单点故障。
在Linux系统中,使用device-mapper-multipath工具实现路径冗余:
# 安装多路径工具yum install -y device-mapper-multipath# 生成配置文件mpathconf --enable --with_multipathd y# 扫描发现共享磁盘multipath -ll# 编辑 /etc/multipath.conf,定义别名与策略defaults { user_friendly_names yes path_grouping_policy multibus}配置完成后,重启服务并验证:
systemctl restart multipathdmultipath -ll输出应显示每个磁盘有多个路径(如:dm-0 对应 mpatha),表明多路径生效。
为避免设备名重启后变化,需通过UDEV规则绑定永久设备名:
# 查看磁盘UUIDls -la /dev/disk/by-id/ | grep -i "your-san-disk"# 创建UDEV规则文件:/etc/udev/rules.d/99-oracle-asm.rulesKERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29b8a1e5a4b4d1a5e4e5a4b4d1a", SYMLINK+="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"重启udev并验证:
udevadm control --reload-rulesudevadm triggerls -l /dev/asm-disk*✅ 此步骤是RAC部署中最易出错环节之一,务必确保每个ASM磁盘在所有节点上拥有完全一致的设备名与权限。
Oracle RAC依赖两个独立网络:
| 网络类型 | 用途 | 推荐配置 |
|---|---|---|
| 公共网络(Public Network) | 客户端连接、应用访问 | 10.10.10.0/24,静态IP,绑定VIP |
| 私有网络(Private Network) | 节点间心跳、缓存融合(Cache Fusion) | 192.168.10.0/24,独立网卡,无网关 |
❗ 私有网络必须禁止路由,仅用于节点间通信。建议使用1Gbps以上网卡,避免心跳超时导致节点驱逐(Split Brain)。
配置示例(节点1):
# 公共网络nmcli con modify eth0 ipv4.addresses 10.10.10.10/24nmcli con modify eth0 ipv4.gateway 10.10.10.1nmcli con modify eth0 ipv4.dns 8.8.8.8nmcli con up eth0# 私有网络nmcli con modify eth1 ipv4.addresses 192.168.10.1/24nmcli con modify eth1 ipv4.method manualnmcli con up eth1在节点2上配置对应IP(如10.10.10.11、192.168.10.2),并确保两节点间能互相ping通。
Grid Infrastructure是RAC的集群管理层,包含Clusterware与ASM。
/u01/app/19.0.0/gridexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/19.0.0/gridexport PATH=$ORACLE_HOME/bin:$PATH推荐使用静默安装提升一致性:
./runInstaller -silent -responseFile /tmp/grid_install.rsp \ -ignorePrereqFailure \ -oracleBase /u01/app/oracle \ -oracleHome /u01/app/19.0.0/grid \ -inventoryLocation /u01/app/oraInventory \ -clusterName rac-cluster \ -nodeList node1,node2 \ -asmDiskGroupName DATA \ -asmDiskString 'ORCL:*' \ -asmsnmpPassword your_asm_pwd🔧 响应文件需提前生成,包含所有节点IP、磁盘组名称、ASM密码等参数。
安装完成后,以root身份执行两个脚本:
/u01/app/oraInventory/orainstRoot.sh/u01/app/19.0.0/grid/root.shcrsctl check clustercrsctl stat res -tolsnodes -n输出应显示所有节点为“ONLINE”,资源状态为“ONLINE”。
/u01/app/oracle/product/19.0.0/dbhome_1./runInstaller -silent -responseFile /tmp/db_install.rsp \ -oracleBase /u01/app/oracle \ -oracleHome /u01/app/oracle/product/19.0.0/dbhome_1 \ -inventoryLocation /u01/app/oraInventory \ -ignorePrereqFailure执行root脚本:
/u01/app/oracle/product/19.0.0/dbhome_1/root.shdbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname RACDB \ -sid RACDB \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -nationalCharacterSet AL16UTF16 \ -databaseType MULTIPURPOSE \ -memoryPercentage 40 \ -emConfiguration NONE \ -storageType ASM \ -diskGroupName DATA \ -recoveryGroupName FRA \ -nodeList node1,node2 \ -sampleSchema true \ -sysPassword your_sys_pwd \ -systemPassword your_system_pwd✅ 数据库创建后,自动在两个节点上启动实例,监听器自动注册。
验证数据库状态:
srvctl status database -d RACDBsqlplus / as sysdbaselect instance_name, host_name from v$instance;输出应显示两个实例(如RACDB_1、RACDB_2),分别运行在不同节点。
sga_target与pga_aggregate_target,避免节点间内存争用crsctl、dmesg、oemcli持续监控集群健康| 问题 | 原因 | 解决方案 |
|---|---|---|
CRS-4535: Cannot communicate with cluster manager | 时间不同步 | 同步所有节点NTP,重启crs |
ORA-15042: ASM disk is missing | UDEV规则未生效 | 重新加载udev规则,检查设备权限 |
TNS-12541: TNS:no listener | 监听器未注册 | 执行lsnrctl start,检查tnsnames.ora |
| 节点被驱逐 | 私有网络延迟 > 300ms | 检查交换机配置,更换网线或网卡 |
Oracle RAC集群通过共享存储与多节点并发访问,实现了数据库层面的高可用与弹性扩展,是构建金融、政务、制造等关键业务系统的核心组件。尽管部署复杂,但其带来的业务连续性价值远超运维成本。建议在生产环境部署前,于测试环境完整演练至少3次,确保每一步配置可复现。
若您正在规划新一代数据平台架构,建议结合自动化运维工具(如Ansible)实现RAC部署标准化。同时,可考虑将RAC与数据湖、实时分析引擎结合,构建统一的数据服务中台。
申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料企业级数据架构的稳定性,始于一次精准的RAC部署。从共享存储到心跳网络,每一个细节都决定着系统的生死。不要低估配置的复杂性,但更不要畏惧它——掌握它,您就掌握了企业数据服务的主动权。