Oracle RAC集群部署全流程实战
Oracle Real Application Clusters(RAC)是Oracle公司为实现高可用性、负载均衡与横向扩展能力而设计的企业级数据库集群架构。在数据中台、数字孪生与数字可视化系统中,RAC集群是支撑核心业务连续性、保障海量实时数据写入与查询稳定性的关键基础设施。本文将系统性地阐述Oracle RAC集群的完整部署流程,涵盖硬件准备、操作系统配置、网络规划、存储设置、集群软件安装、数据库创建及后期验证,适用于具备中高级运维能力的企业技术团队。
Oracle RAC部署对底层基础设施有严格要求,任何环节的疏漏都将导致集群无法启动或运行不稳定。
RAC要求所有节点访问同一套共享存储,推荐方案:
✅ 建议使用企业级SAN或NVMe共享存储,避免使用NAS或本地磁盘模拟共享。
Oracle RAC支持Linux(Red Hat、Oracle Linux)、AIX、Solaris等平台,以下以Oracle Linux 8.x为例。
# 关闭防火墙与SELinuxsudo systemctl stop firewalld && sudo systemctl disable firewalldsudo setenforce 0sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config# 配置主机名与hosts解析hostnamectl set-hostname racnode1echo "192.168.1.10 racnode1 racnode1-vip" >> /etc/hostsecho "192.168.1.11 racnode2 racnode2-vip" >> /etc/hostsecho "192.168.2.10 racnode1-priv" >> /etc/hostsecho "192.168.2.11 racnode2-priv" >> /etc/hostsgroupadd -g 501 oinstallgroupadd -g 502 dbagroupadd -g 503 operuseradd -u 501 -g oinstall -G dba,oper oracleecho "oracle:Oracle123" | chpasswd编辑 /etc/sysctl.conf:
fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 17179869184kernel.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应用配置:
sudo sysctl -p编辑 /etc/security/limits.conf:
oracle soft nproc 16384oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 10240oracle hard stack 32768为保障私网通信稳定性,建议配置bonding:
# 创建bond0(私网)nmcli con add type bond ifname bond0 mode active-backupnmcli con modify bond0 bond.options "mode=active-backup,miimon=100"nmcli con add type ethernet slave-type bond ifname eth1 master bond0nmcli con add type ethernet slave-type bond ifname eth2 master bond0nmcli con up bond0使用/usr/sbin/oracleasm工具扫描并标记磁盘:
# 初始化ASMsudo /usr/sbin/oracleasm init# 扫描磁盘sudo /usr/sbin/oracleasm scandisks# 标记磁盘sudo /usr/sbin/oracleasm createdisk OCR1 /dev/sdb1sudo /usr/sbin/oracleasm createdisk VOTE1 /dev/sdc1sudo /usr/sbin/oracleasm createdisk DATA1 /dev/sdd1sudo /usr/sbin/oracleasm createdisk RECO1 /dev/sde1# 验证sudo /usr/sbin/oracleasm listdisks⚠️ 所有节点必须完成相同磁盘标记,确保ASM能跨节点识别。
Grid Infrastructure是RAC的集群管理核心,包含Clusterware与ASM。
从Oracle官网下载对应版本的Grid Infrastructure(如19c):
linuxx64_193000_grid_home.ziplinuxx64_193000_database_home.zip解压至 /opt/oracle/grid:
unzip linuxx64_193000_grid_home.zip -d /opt/oracle/gridcd /opt/oracle/grid创建响应文件 grid_install.rsp,关键参数如下:
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0oracle.install.option=CRS_CONFIGORACLE_HOSTNAME=racnode1INVENTORY_LOCATION=/u01/app/oraInventorySELECTED_LANGUAGES=enORACLE_HOME=/u01/app/19.0.0/gridORACLE_BASE=/u01/app/gridoracle.install.asm.SYSASMPassword=Oracle123oracle.install.asm.diskGroup.name=DATAoracle.install.asm.diskGroup.redundancy=EXTERNALoracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/DATA1oracle.install.asm.diskGroup.diskDiscoveryString=/dev/oracleasm/disks/*oracle.install.crs.config.gpnp.scanName=rac-scanoracle.install.crs.config.gpnp.scanPort=1521oracle.install.crs.config.clusterName=rac-clusteroracle.install.crs.config.nodeList=racnode1,racnode2oracle.install.crs.config.privateInterface=eth1:192.168.2.0执行安装:
./gridSetup.sh -silent -responseFile /opt/oracle/grid/grid_install.rsp -ignorePrereqFailure安装完成后,以root身份在所有节点执行脚本:
/u01/app/oraInventory/orainstRoot.sh/u01/app/19.0.0/grid/root.sh在Grid Infrastructure安装成功后,部署数据库软件。
创建 db_install.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.isCustomInstall=falseoracle.install.db.DBA_GROUP=dbaoracle.install.db.OPER_GROUP=operoracle.install.db.config.starterdb.type=GENERAL_PURPOSE执行安装:
./runInstaller -silent -responseFile /opt/oracle/db_install.rsp -ignorePrereqFailure执行root脚本:
/u01/app/oracle/product/19.0.0/dbhome_1/root.sh使用DBCA(Database Configuration Assistant)图形化或静默方式创建数据库。
dbca -silent \ -createDatabase \ -templateName General_Purpose.dbc \ -gdbname orcl \ -sid orcl \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -nationalCharacterSet AL16UTF16 \ -totalMemory 8192 \ -databaseType MULTIPURPOSE \ -automaticMemoryManagement true \ -storageType ASM \ -diskGroupName DATA \ -recoveryGroupName RECO \ -nodeinfo racnode1,racnode2 \ -sampleSchema true \ -sysPassword Oracle123 \ -systemPassword Oracle123# 检查集群服务crsctl check clustercrsctl stat res -t# 检查数据库实例srvctl status database -d orcl✅ 正常输出应显示两个实例均处于
OPEN状态。
srvctl add listener -l LISTENER -p 1521srvctl start listener -l LISTENER使用SQL*Plus从不同客户端连接SCAN地址:
sqlplus sys/Oracle123@rac-scan:1521/orcl as sysdba执行:
select instance_name, host_name from v$instance;多次执行,应看到实例在racnode1与racnode2之间轮换,证明负载均衡生效。
在racnode1上执行:
shutdown -h now观察racnode2是否自动接管服务,客户端连接是否无中断。
ocrconfig -export /backup/ocr.bakadrci| 问题 | 原因 | 解决方案 |
|---|---|---|
CRS-4535: Cannot communicate with Cluster Ready Services | 时间不同步 | 使用NTP同步所有节点时间 |
ORA-15042: ASM disk is missing | 磁盘未被识别 | 重新扫描并标记ASM磁盘 |
TNS-12541: TNS:no listener | 监听器未启动 | srvctl start listener |
| VIP无法漂移 | 网络子网配置错误 | 检查public/private网段是否隔离 |
Oracle RAC部署是一项系统工程,涉及硬件、网络、存储、操作系统、集群软件、数据库等多层协同。在数据中台架构中,RAC为实时分析、数字孪生仿真、可视化大屏等高并发场景提供了零宕机、高吞吐、强一致的底层支撑。
✅ 部署前务必进行完整压力测试与故障演练,避免上线后出现不可控风险。
如需快速构建企业级RAC环境,降低运维复杂度,可考虑采用云原生数据库托管方案。申请试用&https://www.dtstack.com/?src=bbs
✅ 企业用户建议采用自动化部署工具(如Ansible + Terraform)标准化RAC部署流程,提升效率与一致性。申请试用&https://www.dtstack.com/?src=bbs
对于希望实现数据库与数字可视化平台无缝对接的团队,RAC集群的稳定性和扩展性是构建数据驱动决策体系的基石。申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料提示:Oracle RAC并非万能方案。若业务对延迟敏感但并发量不高,单实例+Data Guard可能是更经济的选择。请根据实际业务SLA与预算综合评估。