Oracle RAC集群部署实战:双节点配置与共享存储设置
在企业级数据中台架构中,高可用性与横向扩展能力是保障业务连续性的核心要素。Oracle Real Application Clusters(RAC)作为Oracle官方提供的集群数据库解决方案,允许多个节点共享同一数据库实例,实现负载均衡与故障自动切换。在数字孪生、实时分析与高并发交易场景中,Oracle RAC部署已成为关键基础设施的首选方案。
本文将深入解析双节点Oracle RAC集群的完整部署流程,涵盖操作系统配置、共享存储搭建、网络规划、集群软件安装与数据库创建等关键环节,确保部署过程可复现、可验证、可运维。
Oracle RAC依赖于三个核心组件协同工作:共享存储、私有网络和公共网络。
⚠️ 注意:Oracle RAC不支持NFS作为共享存储介质,必须使用块设备(如SAN、iSCSI、ASM磁盘组)。
推荐使用Oracle Linux 8.8或Red Hat Enterprise Linux 8.8,内核版本需≥4.18。安装时选择“Server with GUI”或“Server”模式,确保包含以下软件包:
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make sysstat unixODBC unixODBC-devel unzip关闭防火墙与SELinux:
systemctl stop firewalld && systemctl disable firewalldsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config| 角色 | IP地址 | 用途 |
|---|---|---|
| Node1 Public | 192.168.1.10 | 客户端访问 |
| Node2 Public | 192.168.1.11 | 客户端访问 |
| Node1 Private | 192.168.2.10 | 心跳与缓存融合 |
| Node2 Private | 192.168.2.11 | 心跳与缓存融合 |
| Node1 VIP | 192.168.1.100 | 故障转移虚拟IP |
| Node2 VIP | 192.168.1.101 | 故障转移虚拟IP |
| SCAN IP | 192.168.1.102~104(3个) | 客户端统一入口 |
✅ 所有节点需在
/etc/hosts中配置静态解析,禁止依赖DNS:
192.168.1.10 node1.example.com node1192.168.1.11 node2.example.com node2192.168.2.10 node1-priv.example.com node1-priv192.168.2.11 node2-priv.example.com node2-priv192.168.1.100 node1-vip.example.com node1-vip192.168.1.101 node2-vip.example.com node2-vip192.168.1.102 scan.example.com scan192.168.1.103 scan.example.com scan192.168.1.104 scan.example.com scanOracle RAC必须使用共享存储。在物理服务器上,可通过iSCSI或光纤通道挂载LUN。本例使用iSCSI模拟共享磁盘。
在存储服务器上创建3个LUN(各50GB),分别用于:
# 使用targetcli创建LUNtargetcli /backstores/block create name=ocr_disk dev=/dev/sdbtargetcli /backstores/block create name=data_disk dev=/dev/sdctargetcli /backstores/block create name=fra_disk dev=/dev/sddtargetcli /iscsi create iqn.2024-07.com.oracle:rac-storagetargetcli /iscsi/iqn.2024-07.com.oracle:rac-storage/tpg1/luns create /backstores/block/ocr_disktargetcli /iscsi/iqn.2024-07.com.oracle:rac-storage/tpg1/luns create /backstores/block/data_disktargetcli /iscsi/iqn.2024-07.com.oracle:rac-storage/tpg1/luns create /backstores/block/fra_disktargetcli /iscsi/iqn.2024-07.com.oracle:rac-storage/tpg1/acls create iqn.1994-05.com.redhat:node1targetcli /iscsi/iqn.2024-07.com.oracle:rac-storage/tpg1/acls create iqn.1994-05.com.redhat:node2在Node1与Node2执行:
yum install -y iscsi-initiator-utilsiscsiadm -m discovery -t sendtargets -p 192.168.1.200iscsiadm -m node -p 192.168.1.200 --login验证磁盘是否识别:
lsblk | grep -E "(sdb|sdc|sdd)"创建/etc/udev/rules.d/99-oracle-asm.rules:
KERNEL=="sdb", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29d8a1b2e4f1a8b5c3d7e9f0a1", SYMLINK+="asm-ocr1", OWNER="grid", GROUP="asmadmin", MODE="0660"KERNEL=="sdc", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29d8a1b2e4f1a8b5c3d7e9f0a2", SYMLINK+="asm-data", OWNER="grid", GROUP="asmadmin", MODE="0660"KERNEL=="sdd", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29d8a1b2e4f1a8b5c3d7e9f0a3", SYMLINK+="asm-fra", OWNER="grid", GROUP="asmadmin", MODE="0660"重载规则并验证:
udevadm control --reload-rulesudevadm triggerls -l /dev/asm-*创建Oracle安装用户组与用户:
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,asmadmin,asmdba,oper griduseradd -u 1101 -g oinstall -G dba,oper,asmdba oracle设置密码:
passwd gridpasswd oracle配置环境变量(/home/grid/.bash_profile):
export ORACLE_BASE=/u01/app/gridexport ORACLE_HOME=/u01/app/19.0.0/gridexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibexport ASM_DISKSTRING='/dev/asm*'同理配置/home/oracle/.bash_profile,设置ORACLE_BASE=/u01/app/oracle,ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1。
/tmp/grid,执行:cd /tmp/grid./runInstaller/dev/asm-ocr1, /dev/asm-ocr2, /dev/asm-ocr3作为OCR/Voting Disk/dev/asm-data/dev/asm-fra✅ 安装完成后,验证集群状态:
crsctl check clustercrsctl stat res -t输出应显示所有资源为ONLINE。
/tmp/databasecd /tmp/database./runInstallerdbca -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 40 \ -emConfiguration NONE💡 建议在创建数据库前,使用
srvctl config database验证RAC实例注册状态。
部署完成后,执行以下验证:
# 查看实例状态srvctl status database -d RACDB# 查看监听器srvctl status listener# 查看ASM磁盘组使用率asmcmd lsdg# 检查缓存融合性能(关键指标)sqlplus / as sysdbaSQL> select * from v$ges_stat;建议开启自动内存管理(AMM)与并行查询,针对数字孪生场景优化PGA与SGA比例。
ocrconfig -export /backup/ocr_backup.dmpcrsctl check cluster -verbosesrvctl命令执行🚀 企业级部署中,建议结合自动化工具(如Ansible)实现集群配置标准化。如需快速验证RAC部署方案,可申请试用专业集群管理平台,降低运维复杂度:申请试用&https://www.dtstack.com/?src=bbs
| 问题 | 原因 | 解决方案 |
|---|---|---|
| CRS-4535: Cannot communicate with clusterware | 时间不同步 | 使用NTP同步所有节点时间,确保偏差<1秒 |
| ASM磁盘无法识别 | udev规则未生效 | 重启udev服务,检查设备权限与符号链接 |
| DBCA卡在“Creating Database” | 共享存储权限错误 | 确保grid用户对ASM磁盘有读写权限 |
| VIP无法浮动 | 网络子网配置错误 | 检查public网络是否在同一子网,禁用防火墙 |
Oracle RAC部署虽复杂,但其带来的高可用性、弹性扩展与零停机维护能力,使其成为金融、制造、能源等行业核心系统不可替代的架构选择。在数字孪生系统中,RAC可支撑千万级实时数据写入;在数据中台架构下,其多节点并行处理能力显著提升ETL与OLAP性能。
部署成功后,建议结合监控系统(如Zabbix或Prometheus)采集ASM IOPS、缓存命中率、节点心跳延迟等关键指标,构建可视化运维看板。
如需进一步降低部署门槛,提升集群稳定性,可参考专业厂商提供的自动化部署方案:申请试用&https://www.dtstack.com/?src=bbs如需获取完整脚本模板与配置文件包,欢迎访问:申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料