Oracle RAC集群部署实战:双节点配置与共享存储优化
在企业级数据中台建设中,高可用性与高性能是核心诉求。Oracle Real Application Clusters(RAC)作为Oracle官方提供的集群解决方案,允许多个节点共享同一数据库实例,实现负载均衡与故障自动切换。在数字孪生、实时分析、金融交易等对系统连续性要求严苛的场景中,Oracle RAC部署已成为保障业务不中断的关键基础设施。
本文将深入解析双节点Oracle RAC集群的完整部署流程,并重点优化共享存储架构,确保系统在高并发、低延迟环境下的稳定运行。所有操作均基于Oracle Linux 8.x与Oracle Database 19c环境,适用于生产级部署。
Oracle RAC依赖于共享存储、网络冗余与时间同步三大基石。任何一项配置失误都将导致集群无法启动。
# /etc/hosts 示例192.168.1.10 racnode1.example.com racnode1192.168.1.11 racnode2.example.com racnode210.10.10.10 racnode1-priv.example.com racnode1-priv10.10.10.11 racnode2-priv.example.com racnode2-priv192.168.1.100 racnode1-vip.example.com racnode1-vip192.168.1.101 racnode2-vip.example.com racnode2-vip共享存储是RAC的“心脏”。推荐使用以下三种方案:
| 方案 | 适用场景 | 优势 | 风险 |
|---|---|---|---|
| ASM + FC SAN | 中大型企业 | 高性能、低延迟、成熟稳定 | 成本高,依赖光纤交换机 |
| ASM + iSCSI | 中小型部署 | 成本低,基于以太网 | 延迟较高,需优化TCP参数 |
| NFS over 10Gbps | 云环境或混合架构 | 易管理,支持快照 | 非Oracle官方推荐,存在单点风险 |
推荐配置:使用两台存储控制器构建双活SAN,划分LUN并映射至两个节点。每个节点应能看到相同的LUN列表。
# 使用multipath检测共享磁盘multipath -ll# 输出示例:mpatha (3600601601bb40d001a1e3d4f8d3a8e11) dm-0 DELL,MD3220size=200G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw|-+- policy='service-time 0' prio=50 status=active| |- 1:0:0:1 sdb 8:16 active ready running| `- 2:0:0:1 sdd 8:48 active ready running`-+- policy='service-time 0' prio=10 status=enabled |- 1:0:1:1 sdc 8:32 active ready running `- 2:0:1:1 sde 8:64 active ready running✅ 关键点:所有共享磁盘必须设置为共享型设备,避免节点间锁冲突。使用
udev规则绑定持久设备名,防止重启后设备名变更导致ASM无法识别。
# /etc/udev/rules.d/99-oracle-asm.rulesKERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="3600601601bb40d001a1e3d4f8d3a8e11", SYMLINK+="asm-disk1", OWNER="grid", GROUP="dba", MODE="0660"创建专用用户与组,确保权限隔离:
groupadd -g 1000 oinstallgroupadd -g 1001 dbagroupadd -g 1002 opergroupadd -g 1003 asmadmingroupadd -g 1004 asmdbagroupadd -g 1005 asmoperuseradd -u 1100 -g oinstall -G dba,asmdba,oper griduseradd -u 1101 -g oinstall -G dba,asmdba,oper oracle⚠️ 注意:grid用户负责CRS与ASM管理,oracle用户负责数据库实例。二者不可混淆。
编辑/etc/sysctl.conf,应用以下关键参数:
fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 10737418240kernel.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:
grid soft nofile 1024grid hard nofile 65536grid soft nproc 16384grid hard nproc 16384grid soft stack 10240grid hard stack 32768oracle soft nofile 1024oracle hard nofile 65536oracle soft nproc 16384oracle hard nproc 16384oracle soft stack 10240oracle hard stack 32768RAC要求节点间时间偏差小于100毫秒。推荐使用Chrony:
yum install chrony -ysystemctl enable --now chronyd# 编辑 /etc/chrony.conf,添加NTP服务器server ntp.aliyun.com iburst验证同步状态:
chronyc sources -vGrid Infrastructure(GI)是RAC的集群管理层,包含OCR、Voting Disk与CRS服务。
使用Oracle Universal Installer(OUI)的runcluvfy工具验证环境:
./runcluvfy.sh stage -pre crsinst -n racnode1,racnode2 -verbose修复所有警告项,特别是网络连通性、共享存储可见性与权限问题。
./runInstallerrac-cluster)、SCAN名称(如rac-scan.example.com)DATA的磁盘组,冗余模式选EXTERNAL(若使用RAID10)或NORMAL(双副本)grid用户为管理员✅ 重要提示:在安装过程中,系统会自动在共享存储上创建OCR与Voting Disk。确保这些文件位于独立于数据文件的磁盘上,避免I/O竞争。
安装完成后,以root身份在两个节点执行:
/u01/app/19.0.0/grid/root.shdbcaRACDB+DATA)| 优化项 | 实施方法 |
|---|---|
| ASM条带化 | 创建磁盘组时指定AU大小为4MB(默认1MB),提升大文件读写效率 |
| 磁盘组冗余 | 生产环境推荐NORMAL冗余(双副本),避免单盘故障导致服务中断 |
| I/O调度器 | 将磁盘调度器设为deadline或noop,避免CFQ在SSD上引入延迟 |
| ASM预读 | 设置_asm_readahead_multiplier=16,加速顺序读取 |
| 网络优化 | 在私网启用Jumbo Frames(MTU=9000),减少TCP包数量 |
# 查看ASM参数sqlplus / as sysasmSQL> show parameter asm# 修改预读参数(需重启ASM实例)ALTER SYSTEM SET "_asm_readahead_multiplier"=16 SCOPE=SPFILE;部署后,启用Oracle Enterprise Manager(OEM)或使用crsctl监控集群状态:
crsctl check clustercrsctl stat res -t建议配置邮件告警,当VIP切换、ASM磁盘离线或节点宕机时自动通知运维团队。
模拟节点宕机测试:
# 在racnode1上强制关机shutdown -h now观察racnode2是否自动接管VIP与服务:
srvctl status database -d RACDB# 应显示:Instance RACDB1 is not running on node racnode1# Instance RACDB2 is running on node racnode2验证客户端连接是否无缝切换:
tnsping rac-scansqlplus user/pass@rac-scan/RACDB✅ 成功标准:连接时间<3秒,无报错,数据一致性完整。
ocrconfig -export导出配置Oracle RAC部署不是一次性任务,而是持续优化的过程。在数字孪生、实时风控、智能调度等场景中,RAC提供的“零停机”能力,是保障业务连续性的基石。通过合理的共享存储设计、网络隔离与参数调优,您可构建出具备金融级可靠性的数据库集群。
如需快速验证RAC架构在您业务场景中的表现,或希望获得自动化部署脚本支持,可申请专业环境试用,降低部署门槛:申请试用&https://www.dtstack.com/?src=bbs
对于正在规划数据中台架构的企业,建议将RAC与分布式缓存、流处理引擎结合,形成“存储-计算-分析”一体化架构。我们提供从硬件选型到灾备方案的全栈咨询服务:申请试用&https://www.dtstack.com/?src=bbs
若您希望实现数据库层的弹性扩展与智能运维,欢迎进一步了解我们的自动化部署平台,加速RAC集群上线周期:申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料