Oracle RAC集群部署实战:双节点高可用配置
在现代企业数据架构中,高可用性与零停机服务已成为核心诉求。尤其在数据中台、实时分析与数字孪生系统中,数据库的稳定性直接决定业务连续性。Oracle Real Application Clusters(RAC)作为Oracle官方提供的集群解决方案,允许多个节点共享同一数据库实例,实现负载均衡与故障自动切换,是构建企业级高可用数据库平台的黄金标准。
本文将基于生产环境实践,系统讲解Oracle RAC双节点部署全流程,涵盖硬件准备、操作系统配置、共享存储设置、集群软件安装、数据库创建与验证,帮助技术团队构建稳定、可扩展、可运维的RAC环境。
Oracle RAC的核心理念是“多实例共享单数据库”。与单实例数据库不同,RAC由两个或更多节点(Instance)组成,每个节点运行独立的Oracle实例,但共同访问同一组数据文件、控制文件和重做日志文件——这些文件必须部署在共享存储上。
⚠️ 注意:Oracle RAC对网络延迟极为敏感。私有网络延迟应控制在1ms以内,否则可能触发误判节点宕机。
| 组件 | 推荐配置 |
|---|---|
| 节点数量 | 2(最小高可用配置) |
| CPU | 每节点 ≥ 16核(Intel Xeon Silver或以上) |
| 内存 | 每节点 ≥ 64GB(建议128GB以上) |
| 存储 | 共享存储 ≥ 2TB(SSD优先) |
| 网络接口 | 公共网络:2×1Gbps/10Gbps;私有网络:2×10Gbps(冗余) |
| 操作系统 | Oracle Linux 8.8 或 Red Hat Enterprise Linux 8.8(64位) |
| 接口 | 用途 | IP地址 | 子网掩码 |
|---|---|---|---|
| eth0 | 公共网络 | 192.168.1.101 | 255.255.255.0 |
| eth0 | 公共网络 | 192.168.1.102 | 255.255.255.0 |
| eth1 | 私有网络(Interconnect) | 10.10.10.101 | 255.255.255.0 |
| eth1 | 私有网络(Interconnect) | 10.10.10.102 | 255.255.255.0 |
| VIP | 节点1虚拟IP | 192.168.1.111 | 255.255.255.0 |
| VIP | 节点2虚拟IP | 192.168.1.112 | 255.255.255.0 |
| SCAN IP | 客户端接入 | 192.168.1.120 | 255.255.255.0 |
✅ SCAN(Single Client Access Name)是Oracle 11g后引入的特性,通过DNS轮询实现客户端自动连接任意可用节点,无需硬编码IP。
在两个节点上执行统一配置,确保环境一致性。
systemctl stop firewalld && systemctl disable firewalldsetenforce 0sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/confighostnamectl set-hostname racnode1hostnamectl set-hostname racnode2编辑 /etc/hosts:
192.168.1.101 racnode1 racnode1.example.com192.168.1.102 racnode2 racnode2.example.com10.10.10.101 racnode1-priv racnode1-priv.example.com10.10.10.102 racnode2-priv racnode2-priv.example.com192.168.1.111 racnode1-vip192.168.1.112 racnode2-vip192.168.1.120 rac-scangroupadd -g 1000 oinstallgroupadd -g 1001 dbagroupadd -g 1002 operuseradd -u 1100 -g oinstall -G dba,oper oracleecho "oracle:Oracle123" | chpasswdfs.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 -poracle soft nofile 1024oracle hard nofile 65536oracle soft nproc 16384oracle hard nproc 16384oracle soft stack 10240oracle hard stack 32768oracle soft memlock 3145728oracle hard memlock 3145728Oracle RAC必须使用共享存储。推荐使用ASM(Automatic Storage Management),它是Oracle内置的集群文件系统,专为RAC优化。
安装多路径工具:
yum install -y device-mapper-multipathsystemctl enable multipathd --now编辑 /etc/multipath.conf,添加存储厂商配置(以华为/戴尔为例):
defaults { user_friendly_names yes}devices { device { vendor "DELL" product "PERC H730" path_grouping_policy multibus hardware_handler "0" path_checker readsector0 failback immediate }}重启服务并查看设备:
systemctl restart multipathdmultipath -ll使用 oracleasm 工具标记共享磁盘:
oracleasm createdisk DISK1 /dev/mapper/mpathboracleasm createdisk DISK2 /dev/mapper/mpathcoracleasm listdisks确保两个节点都能看到相同磁盘:
oracleasm listdisks# 输出应包含:DISK1 DISK2在任一节点执行安装(建议使用图形界面,或静默安装):
从Oracle官网下载 linuxx64_193000_grid_home.zip
unzip linuxx64_193000_grid_home.zipcd grid./runInstaller✅ 安装过程中,脚本会自动在两个节点上执行root.sh,需在提示时分别在两个节点终端执行。
安装完成后,验证集群状态:
crsctl check clustercrsctl stat res -t输出应显示所有资源为ONLINE状态。
unzip linuxx64_193000_db_home.zipcd dbhome_1./runInstaller -silent -responseFile /tmp/db.rsp响应文件需提前配置好:
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0oracle.install.option=INSTALL_DB_SWONLYORACLE_HOSTNAME=racnode1UNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/u01/app/oraInventorySELECTED_LANGUAGES=enORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1ORACLE_BASE=/u01/app/oracleoracle.install.db.InstallEdition=EEoracle.install.db.OSDBA_GROUP=dbaoracle.install.db.OSOPER_GROUP=operoracle.install.db.OSBACKUPDBA_GROUP=dbaoracle.install.db.OSDGDBA_GROUP=dbaoracle.install.db.OSKMDBA_GROUP=dbaoracle.install.db.OSRACDBA_GROUP=dbaSECURITY_UPDATES_VIA_MYORACLESUPPORT=falseDECLINE_SECURITY_UPDATES=truedbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbname ORCL \ -sid ORCL \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -nationalCharacterSet AL16UTF16 \ -registerWithDirService FALSE \ -listeners LISTENER \ -nodeinfo racnode1,racnode2 \ -storageType ASM \ -diskGroupName DATA \ -databaseType OLTP \ -automaticMemoryManagement true \ -totalMemory 16384 \ -sampleSchema true💡 建议开启归档模式(ARCHIVELOG)以支持备份与恢复。
创建完成后,验证数据库服务:
srvctl status database -d ORCL输出示例:
Instance ORCL_1 is running on node racnode1Instance ORCL_2 is running on node racnode2使用SQL*Plus从客户端连接SCAN IP:
CONNECT scott/tiger@rac-scan:1521/ORCL执行 SELECT instance_name FROM v$instance;,多次查询应看到实例名在两个节点间轮换。
在racnode1上强制关闭:
shutdown -h now观察:
srvctl status database -d ORCL 显示仅一个实例运行✅ 业务无感知切换,证明RAC高可用生效。
crsctl、srvctl 定期巡检。在构建数据中台、支撑数字孪生系统时,数据库的可用性不是“可选项”,而是“必选项”。Oracle RAC通过双节点共享存储架构,实现了真正的高可用、零中断、弹性扩展能力。虽然部署复杂,但其稳定性与企业级支持能力,远超开源方案。
若您正在规划新一代数据平台,或希望将现有单实例数据库升级为高可用架构,Oracle RAC仍是当前最成熟、最可靠的解决方案之一。
申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料建议在生产环境部署前,先在测试环境完整演练一次,确保每一步操作可复现、可回滚。RAC的成功,不在于安装速度,而在于运维的规范与预案的完备。