Oracle RAC集群部署实战:双节点高可用配置
在企业级数据中台架构中,数据库的高可用性与连续性是保障业务连续运转的核心基石。Oracle Real Application Clusters(RAC)作为Oracle官方推出的集群解决方案,允许多个节点共享同一数据库实例,实现负载均衡、故障自动切换与无缝扩展。本文将深入解析Oracle RAC在双节点环境下的完整部署流程,涵盖硬件准备、操作系统配置、共享存储设置、集群软件安装、数据库创建及验证测试等关键环节,为企业构建稳定、高性能、可扩展的数据库平台提供可落地的实战指南。
Oracle RAC的核心理念是“共享一切,独立运行”。多个节点(通常为2个或以上)通过高速网络互联,访问同一套共享存储设备,每个节点运行独立的Oracle实例,但共同操作同一个数据库。这种架构实现了:
在双节点部署中,建议采用以下拓扑结构:
| 组件 | 配置建议 |
|---|---|
| 节点数量 | 2个(生产环境最低推荐) |
| 网络接口 | 至少3个:Public(业务)、Private(心跳)、VIP(虚拟IP) |
| 存储类型 | 共享块存储(ASM磁盘组)或NFS(仅限测试) |
| 操作系统 | Oracle Linux 8.x / Red Hat Enterprise Linux 8.x |
| 存储管理 | Oracle Automatic Storage Management (ASM) |
📌 关键提示:RAC依赖底层存储的高可用性。建议使用企业级SAN或NAS设备,避免使用本地磁盘或普通文件系统。
| 接口 | IP地址 | 用途 |
|---|---|---|
| eth0 | 192.168.1.101 | Node1 Public |
| eth0 | 192.168.1.102 | Node2 Public |
| eth1 | 192.168.10.101 | Node1 Private (Heartbeat) |
| eth1 | 192.168.10.102 | Node2 Private |
| VIP | 192.168.1.111 | Node1 Virtual IP |
| VIP | 192.168.1.112 | Node2 Virtual IP |
| SCAN IP | 192.168.1.120 | Single Client Access Name |
🚫 禁止在Private网络中使用DHCP,必须静态分配IP。
确保所有节点的/etc/hosts文件包含完整解析:
192.168.1.101 node1.example.com node1192.168.1.102 node2.example.com node2192.168.10.101 node1-priv.example.com node1-priv192.168.10.102 node2-priv.example.com node2-priv192.168.1.111 node1-vip.example.com node1-vip192.168.1.112 node2-vip.example.com node2-vip192.168.1.120 scan.example.com scan✅ 推荐使用DNS服务器(如BIND)管理SCAN IP,避免hosts文件在集群扩展时失效。
systemctl stop firewalld && systemctl disable firewalldsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/configgroupadd -g 1000 oinstallgroupadd -g 1001 dbagroupadd -g 1002 operuseradd -u 1001 -g oinstall -G dba,oper oracleecho "oracle:Welcome123" | chpasswdfs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 1073741824kernel.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 生效。
oracle soft nofile 1024oracle hard nofile 65536oracle soft nproc 16384oracle hard nproc 16384oracle soft stack 10240oracle hard stack 32768yum 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 libXext libXt libXmu libXp libXpm libXineramaOracle RAC必须使用共享存储。推荐使用ASM(Automatic Storage Management)进行磁盘管理。
假设共享磁盘为 /dev/sdb, /dev/sdc, /dev/sdd,创建规则:
vi /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=="36000c29d1a1b3e4a1f7b5e4a1b3e4a1f", SYMLINK+="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"KERNEL=="sdc", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29d1a1b3e4a1f7b5e4a1b3e4a1f", SYMLINK+="asm-disk2", OWNER="oracle", GROUP="dba", MODE="0660"KERNEL=="sdd", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="36000c29d1a1b3e4a1f7b5e4a1b3e4a1f", SYMLINK+="asm-disk3", OWNER="oracle", GROUP="dba", MODE="0660"重启udev服务:
udevadm control --reload-rules && udevadm trigger验证设备:
ls -l /dev/asm-*下载Oracle Grid Infrastructure 19c或21c安装包,解压后执行:
./runInstaller -silent -responseFile /path/to/grid.rsp -ignorePrereqFailure安装过程中需指定:
/u01/app/19.0.0/griddbaDATA与FRA两个ASM磁盘组安装完成后,以root身份执行两个脚本:
/u01/app/oraInventory/orainstRoot.sh/u01/app/19.0.0/grid/root.sh在任一节点上执行:
./runInstaller -silent -responseFile /path/to/db.rsp -ignorePrereqFailure安装路径建议:
/u01/app/oracle/product/19.0.0/dbhome_1安装完成后,执行:
/u01/app/oracle/product/19.0.0/dbhome_1/root.sh⚠️ 注意:不要在此阶段创建数据库,需先完成集群验证。
使用DBCA(Database Configuration Assistant)图形化或静默方式创建数据库:
dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname RACDB \ -sid RACDB \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -nationalCharacterSet AL16UTF16 \ -totalMemory 4096 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement false \ -storageType ASM \ -diskGroupName DATA \ -recoveryAreaDestination FRA \ -nodeinfo node1,node2 \ -sampleSchema true创建完成后,验证数据库状态:
srvctl status database -d RACDB输出应显示:
Instance RACDB1 is running on node1Instance RACDB2 is running on node2使用SQL*Plus连接SCAN地址:
sqlplus sys/Welcome123@scan.example.com:1521/RACDB as sysdba执行:
SELECT instance_name, host_name FROM v$instance;多次执行,观察实例是否在两个节点间轮换。
在Node1上强制关闭Oracle服务:
srvctl stop instance -d RACDB -i RACDB1观察Node2是否自动接管,客户端连接是否无中断。
验证:
srvctl status database -d RACDB✅ 正常情况下,客户端连接在3~5秒内恢复,无数据丢失。
| 类别 | 建议 |
|---|---|
| 备份 | 使用RMAN + ASM快照,定期备份控制文件与归档日志 |
| 监控 | 部署Enterprise Manager Cloud Control或使用crsctl check cluster |
| 日志 | 定期检查 $GRID_HOME/log/ 与 $ORACLE_HOME/log/ 下的alert日志 |
| 升级 | 先升级Grid Infrastructure,再升级Database软件 |
| 安全 | 禁用默认账户,启用TNS加密,配置SSL连接 |
Oracle RAC双节点部署虽复杂,但其带来的高可用性、零停机维护与弹性扩展能力,使其成为金融、制造、能源等行业核心系统的首选。在构建数据中台的过程中,RAC不仅保障了数据服务的持续可用,也为后续的实时分析、数字孪生建模提供了稳定的数据源支撑。
若您的团队缺乏RAC部署经验,或希望快速验证架构可行性,可申请专业平台支持,降低实施风险:
申请试用&https://www.dtstack.com/?src=bbs
我们建议在非生产环境中先行部署测试环境,验证网络延迟、存储I/O吞吐与心跳稳定性。一旦确认架构可行,即可快速迁移至生产环境。
再次强调,RAC不是“一键部署”的产品,而是需要精细规划、持续监控与规范运维的系统工程。每一次心跳检测、每一块共享磁盘、每一个VIP配置,都直接影响系统的健壮性。
申请试用&https://www.dtstack.com/?src=bbs
如需获取完整的部署脚本模板、网络配置清单与故障排查手册,欢迎通过官方渠道获取企业级部署包,提升部署效率与成功率。
申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料