Oracle RAC集群部署实战:双节点配置与共享存储设置
在现代企业数据架构中,高可用性与弹性扩展已成为核心需求。对于需要7×24小时持续运行的关键业务系统,如金融交易、供应链管理、实时分析平台等,单点故障是不可接受的。Oracle Real Application Clusters(RAC)作为Oracle官方提供的集群解决方案,允许多个节点共享同一数据库实例,实现负载均衡与故障自动切换。本文将深入解析Oracle RAC在双节点环境下的完整部署流程,重点聚焦共享存储配置、网络规划、集群软件安装与验证,为数据中台建设提供坚实底层支撑。
Oracle RAC不是简单的多机部署,而是依赖于底层硬件与网络架构的精密协同。部署前必须满足以下硬性条件:
✅ 关键提示:私有网络延迟必须低于1ms,丢包率趋近于0。任何网络抖动都可能导致“脑裂”(Split-Brain)现象,引发集群崩溃。
共享存储是RAC的“心脏”。在双节点环境中,必须确保两个节点都能同时读写同一份数据文件、控制文件与重做日志。
在SAN环境中,通常通过光纤通道或iSCSI将LUN(逻辑单元号)映射至两个节点。使用lsblk或fdisk -l确认设备是否可见:
lsblk | grep -E "(sdb|sdc|sdd)"输出示例:
sdb 8:16 0 50G 0 disk sdc 8:32 0 50G 0 disk sdd 8:48 0 20G 0 disk 其中:
sdb:用于OCR(Oracle Cluster Registry)与Voting Disksdc:用于数据库数据文件sdd:用于快速恢复区(FRA)Linux系统重启后,设备名称可能变化。为确保ASM稳定识别,需配置udev规则:
vim /etc/udev/rules.d/99-oracle-asm.rules添加如下内容(根据实际WWID调整):
KERNEL=="sdb", SUBSYSTEM=="block", PROGRAM="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29b1a8e4d1a2b3c4d5e6f7a8b9c", SYMLINK+="asm-ocr", OWNER="grid", GROUP="asmadmin", MODE="0660"KERNEL=="sdc", SUBSYSTEM=="block", PROGRAM="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29b1a8e4d1a2b3c4d5e6f7a8b9d", 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=="36000c29b1a8e4d1a2b3c4d5e6f7a8b9e", SYMLINK+="asm-fra", OWNER="grid", GROUP="asmadmin", MODE="0660"重载规则并验证:
udevadm control --reload-rulesudevadm triggerls -l /dev/asm-*登录grid用户,启动ASM配置助手:
asmca在图形界面中:
DATA的磁盘组,冗余类型选择EXTERNAL(若存储本身提供RAID保护)asm-data设备FRA的磁盘组,用于归档日志与备份OCR的磁盘组,仅添加asm-ocr,冗余类型选择EXTERNAL⚠️ 注意:OCR与Voting Disk必须位于独立磁盘组,且不能与数据文件共用。Oracle官方建议OCR使用至少3个磁盘以支持高可用,但在双节点环境中,若存储层已具备冗余,单磁盘也可接受。
在两个节点上分别执行以下步骤:
关闭防火墙与SELinux:
systemctl stop firewalld && systemctl disable firewalldsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config配置主机名与DNS解析:
hostnamectl set-hostname racnode1echo "192.168.1.10 racnode1 racnode1.example.com" >> /etc/hostsecho "192.168.1.11 racnode2 racnode2.example.com" >> /etc/hostsecho "192.168.2.10 racnode1-priv racnode1-priv.example.com" >> /etc/hostsecho "192.168.2.11 racnode2-priv racnode2-priv.example.com" >> /etc/hosts安装依赖包:
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat libxcb libX11 libXau libXi libXtst libXrender libXextgroupadd -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挂载Oracle Grid Infrastructure 19c或21c安装介质,执行:
cd /media/oracle/grid./runInstaller选择“Install and Configure Oracle Grid Infrastructure for a Cluster”,点击“Next”。
rac-cluster)rac-scan.example.com),DNS需解析为3个IP(建议使用DNS轮询)/dev/asm-*)/u01/app/oraInventory/orainstRoot.sh与/u01/app/19.0.0/grid/root.sh安装完成后,验证集群状态:
crsctl check clustercrsctl stat res -t输出应显示所有资源为ONLINE,包括ora.cluster_interconnect.haip、ora.cssd、ora.diskmon等。
在Grid Infrastructure安装完成后,使用DBCA(Database Configuration Assistant)创建RAC数据库:
dbca选择“Create a Database” → “Oracle Real Application Clusters database” → “General Purpose or Transaction Processing”
RACDBracdb.example.com安装完成后,验证数据库实例状态:
srvctl status database -d RACDB应输出:
Instance RACDB1 is running on node racnode1Instance RACDB2 is running on node racnode2连接测试:
sqlplus sys@rac-scan:1521/racdb.example.com as sysdba成功连接后执行:
SELECT instance_name, host_name FROM v$instance;输出应显示两个实例分别运行在不同节点,证明负载均衡与高可用机制已生效。
ping -c 100 racnode1-priv持续检测延迟,若平均延迟>2ms,需排查交换机或网卡配置。ocrconfig -showbackupocrconfig -manualbackupadrci工具统一收集alert.log与trace文件,便于故障追溯。| 错误现象 | 原因 | 解决方案 |
|---|---|---|
| CRS-4535: Cannot communicate with cluster ready services | 时间不同步 | 使用chrony同步所有节点时间,确保误差<1秒 |
| ASM磁盘无法识别 | udev规则未生效 | 重新执行udevadm trigger,检查设备权限 |
| DBCA卡在“Creating database” | 共享存储权限错误 | 确保grid:asmadmin对ASM设备有读写权限 |
| VIP无法浮动 | 网络子网配置错误 | 检查公共网络与VIP是否在同一子网 |
Oracle RAC集群不仅是数据库的冗余方案,更是企业构建数字孪生、实时决策系统的核心基础设施。它确保了在节点故障、网络波动、硬件老化等场景下,业务连续性不被中断。在数据中台架构中,RAC为上游数据采集、模型计算、可视化分析提供稳定的数据源,避免因数据库宕机导致整个分析链路瘫痪。
如需进一步降低部署复杂度、提升运维效率,建议结合自动化工具(如Ansible)实现集群配置模板化。同时,可申请专业支持服务,加速项目落地:
申请试用&https://www.dtstack.com/?src=bbs
对于希望快速验证RAC架构可行性的团队,可先在VMware或KVM中搭建双节点测试环境,使用iSCSI模拟共享存储,完成全流程演练:
申请试用&https://www.dtstack.com/?src=bbs
最终,当系统稳定运行于生产环境,您将获得真正的业务韧性——这正是数字时代企业竞争力的底层保障。
申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料