Oracle RAC集群部署实战:双节点配置与共享存储设置
在现代企业数据架构中,高可用性与负载均衡是保障核心业务连续性的基石。Oracle Real Application Clusters(RAC)作为Oracle数据库的集群解决方案,允许多个节点同时访问同一数据库实例,实现无缝故障转移与横向扩展。对于构建数据中台、支撑数字孪生系统或实现高并发数字可视化平台的企业而言,部署一套稳定可靠的Oracle RAC集群,是提升系统韧性与性能的关键一步。
本文将聚焦于双节点Oracle RAC部署实战,深入解析共享存储配置、网络规划、集群软件安装与验证流程,确保部署过程可复现、可审计、可运维。
在开始部署前,必须满足以下硬性条件:
⚠️ 注意:本地磁盘或非共享存储无法支持RAC的多实例并发访问,部署将失败。
共享存储是RAC架构的“心脏”。在双节点环境中,所有节点必须能同时读写同一组数据文件、控制文件和重做日志。
在存储服务器上配置iSCSI Target安装targetcli工具,创建LUN:
sudo yum install targetcli -ysudo targetcli/backstores/block create db_disk1 /dev/sdb/backstores/block create db_disk2 /dev/sdc/iscsi create/iscsi/iqn.2023-07.com.example:storage/tpg1/luns create /backstores/block/db_disk1/iscsi/iqn.2023-07.com.example:storage/tpg1/luns create /backstores/block/db_disk2/iscsi/iqn.2023-07.com.example:storage/tpg1/acls create iqn.2023-07.com.example:node1/iscsi/iqn.2023-07.com.example:storage/tpg1/acls create iqn.2023-07.com.example:node2/iscsi/iqn.2023-07.com.example:storage/tpg1/portals create 10.10.10.10saveconfig在两个RAC节点上发现并挂载LUN
sudo yum install iscsi-initiator-utils -ysudo systemctl enable --now iscsidsudo iscsiadm -m discovery -t sendtargets -p 10.10.10.10sudo iscsiadm -m node -T iqn.2023-07.com.example:storage -p 10.10.10.10 --login验证磁盘可见性
lsblk# 应看到类似 sdb, sdc 的设备,且在两个节点上名称一致配置多路径(Multipath)增强可靠性
安装device-mapper-multipath,编辑/etc/multipath.conf:
defaults { user_friendly_names yes}devices { device { vendor "LIO-ORG" product "Block" path_grouping_policy multibus path_selector "round-robin 0" hardware_handler "0" failback immediate rr_weight priorities no_path_retry queue }}重启服务并验证:
sudo systemctl restart multipathdsudo multipath -ll输出示例:
mpatha (36001405b4a1e4b3d1f0a8e5d3b4c2a1d) dm-0 LIO-ORG,Blocksize=50G features='0' hwhandler='0' wp=rw|-+- policy='round-robin 0' prio=1 status=active| `- 3:0:0:1 sdb 8:16 active ready running`-+- policy='round-robin 0' prio=1 status=enabled `- 4:0:0:1 sdc 8:32 active ready running✅ 使用
/dev/mapper/mpatha作为ASM磁盘路径,避免设备名漂移。
确保两个节点的主机名唯一且可解析:
# /etc/hosts192.168.1.101 racnode1.example.com racnode1192.168.1.102 racnode2.example.com racnode210.10.10.101 racnode1-priv.example.com racnode1-priv10.10.10.102 racnode2-priv.example.com racnode2-priv192.168.1.110 racnode1-vip.example.com racnode1-vip192.168.1.111 racnode2-vip.example.com racnode2-vip✅ 禁用NetworkManager,使用
network.service管理网络,避免动态IP干扰。
RAC对时间同步要求极高,偏差超过100ms将导致集群分裂。
sudo yum install chrony -ysudo systemctl enable --now chronydsudo chronyc sources确保两个节点时间差小于1秒。
创建统一的Oracle用户组:
groupadd oinstallgroupadd dbagroupadd operuseradd -g oinstall -G dba,oper oracleecho "oracle:Oracle123" | chpasswdmkdir -p /u01/app/oraclechown -R oracle:oinstall /u01/app/oraclechmod -R 775 /u01/app/oracle设置内核参数(/etc/sysctl.conf)与资源限制(/etc/security/limits.conf),参考Oracle官方文档。
Grid Infrastructure是RAC的集群管理核心,包含OCR、Voting Disk、Clusterware。
解压安装包
unzip linuxx64_193000_grid_home.zip -d /u01/app/19.0.0/grid运行安装程序
cd /u01/app/19.0.0/grid./gridSetup.sh安装向导关键配置
/dev/mapper/mpatha,创建名为DATA的磁盘组Oracle123!)执行root脚本
在两个节点依次执行:
/u01/app/oraInventory/orainstRoot.sh/u01/app/19.0.0/grid/root.sh验证集群状态
/u01/app/19.0.0/grid/bin/crsctl check cluster/u01/app/19.0.0/grid/bin/crsctl stat res -t输出应显示所有资源为ONLINE,包括ora.cssd, ora.diskmon, ora.cluster_interconnect.haip。
解压数据库安装包
unzip linuxx64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1运行dbca创建RAC数据库
/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbca配置步骤
ORCL,启用“Configure Oracle RAC”racnode1, racnode2DATA磁盘组FRA验证数据库状态
srvctl status database -d ORCL# 输出应显示两个实例均运行# Instance ORCL_1 is running on node racnode1# Instance ORCL_2 is running on node racnode2登录任意节点验证:
SQL> select instance_name, host_name from gv$instance;输出应返回两个实例及其对应主机名。
在节点1上强制关闭Oracle服务:
srvctl stop instance -d ORCL -i ORCL_1观察节点2是否自动接管服务:
srvctl status database -d ORCL# 应显示 ORCL_2 running, ORCL_1 stopped客户端连接VIP(192.168.1.110)应仍能正常访问,无中断。
使用SQL*Plus或应用连接字符串:
(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=racnode1-vip)(PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=racnode2-vip)(PORT=1521)) (LOAD_BALANCE=yes) (CONNECT_DATA= (SERVER=DEDICATED) (SERVICE_NAME=ORCL) ))通过v$session查看会话分布,确认负载均衡生效。
ocrconfig -showbackupasmcmd lsdgsrvctl命令管理Oracle RAC部署虽复杂,但其带来的高可用、弹性扩展与零停机维护能力,是支撑数据中台、实时数字孪生与高并发可视化平台的底层保障。一次成功的部署,意味着您的核心业务将不再因单点故障而中断。
为加速部署进程,降低运维风险,建议使用专业平台进行自动化配置与监控。申请试用&https://www.dtstack.com/?src=bbs 提供企业级RAC部署模板与智能运维工具,帮助您缩短上线周期50%以上。
申请试用&https://www.dtstack.com/?src=bbs 支持一键生成集群配置脚本,兼容主流Linux发行版与存储架构,是企业数字化转型的可靠助手。
申请试用&https://www.dtstack.com/?src=bbs 已服务金融、制造、能源等行业头部客户,助力构建稳定、高效、可扩展的数据基础设施。
附:关键命令速查表
| 任务 | 命令 |
|---|---|
| 检查集群状态 | /u01/app/19.0.0/grid/bin/crsctl check cluster |
| 查看资源状态 | /u01/app/19.0.0/grid/bin/crsctl stat res -t |
| 启动数据库 | srvctl start database -d ORCL |
| 停止实例 | srvctl stop instance -d ORCL -i ORCL_1 |
| 查看ASM磁盘 | asmcmd lsdg |
| 验证VIP | ping racnode1-vip |
部署Oracle RAC不是终点,而是企业数据架构演进的起点。唯有扎实的规划与严谨的执行,才能让系统在风暴中依然稳健如初。
申请试用&下载资料