Oracle RAC 26ai双节点部署实战:从环境准备到高可用验证
如果你曾经在凌晨三点被数据库单点故障的告警电话叫醒或者经历过因为硬件维护导致业务停摆的尴尬时刻那么 Oracle RACReal Application Clusters对你来说可能不仅仅是一个技术方案而是保障业务连续性的生命线。但很多人在初次接触 RAC 时容易陷入一个误区认为只要把两个节点装上 Oracle 软件、连上共享存储就能自动获得高可用性。实际上RAC 部署中最容易出问题的往往不是软件安装本身而是前期环境准备和后期运维细节——特别是网络规划、共享存储配置和集群状态监控这三个关键环节。今天我们就以 Oracle 26ai 版本在 Linux 环境下的双节点 RAC 部署为例从实战角度拆解每个步骤背后的原理和注意事项。这不是一个简单的操作手册而是一个让你真正理解 RAC 工作机制的完整指南。1. 为什么 RAC 部署的关键在环境准备而不是软件安装很多人一拿到 RAC 安装包就急着运行安装程序结果在中间步骤频繁报错。实际上Oracle RAC 对底层环境的要求极为严格90% 的安装失败都源于环境配置不当。1.1 网络规划RAC 的神经系统RAC 集群依赖三套独立的网络体系每套网络都有不可替代的作用Public Network公网负责客户端连接和日常管理通信。在实际部署中建议使用绑定bonding模式提高可靠性。比如使用 mode1active-backup确保单网卡故障时自动切换# 查看网卡绑定状态 cat /proc/net/bonding/bond0Private Network私网是节点间的心跳网络负责缓存融合Cache Fusion数据同步。这是 RAC 性能的关键所在必须满足两个硬性要求网络延迟必须低于 1 毫秒必须使用专用交换机或 VLAN绝对禁止与公网混用你可以用以下命令测试私网质量# 测试延迟和丢包率 ping -c 100 -s 1472 192.168.10.11 # 使用更专业的网络测试工具 yum install -y iperf3 # 在节点2启动服务端 iperf3 -s # 在节点1测试带宽和抖动 iperf3 -c 192.168.10.11 -t 60 -JStorage Network存储网络如果使用 iSCSI 或 NFS 等基于 IP 的存储方案需要独立的网络通道。在企业环境中通常采用光纤通道FC或 NVMe over Fabrics 获得更低延迟。1.2 共享存储RAC 的心脏RAC 的核心思想是多个节点共享同一份数据。这意味着所有节点必须能够同时读写相同的磁盘设备。Oracle 官方推荐的方案是 ASMAutomatic Storage Management它本质上是一个专门为 Oracle 数据库设计的卷管理器。ASM 的优势不仅在于自动条带化和镜像更重要的是它与 Oracle 数据库内核深度集成能够感知数据块的热度并智能分布 I/O 负载。在规划 ASM 磁盘时要注意以下几点每个 ASM 磁盘应该来自不同的物理磁盘或 RAID 组避免单点故障建议使用 4MB 的分配单元AU_SIZE平衡大表扫描和小事务的性能为不同的用途创建独立的磁盘组DATA数据文件、FRA恢复文件、OCR集群注册信息1.3 操作系统一致性避免隐性问题RAC 要求所有节点的操作系统版本、内核版本、软件包版本完全一致。一个常见的坑是两个节点看似配置相同但细微的时区设置或语言环境差异可能导致集群软件行为异常。# 检查系统一致性 # 节点1执行后将命令输出保存为文件 cat /etc/os-release uname -r rpm -qa | sort node1_rpms.list # 节点2执行相同操作后对比差异 diff node1_rpms.list node2_rpms.list如果发现不一致的软件包需要先统一环境再继续安装。这一步虽然繁琐但能避免后续很多难以排查的问题。2. 分步实操从零构建双节点 RAC 集群环境准备就绪后我们进入具体的安装流程。Oracle RAC 安装分为两个主要阶段先安装 Grid Infrastructure集群基础架构再安装 Database 软件并创建数据库。2.1 第一阶段Grid Infrastructure 部署Grid Infrastructure 是 RAC 的基石包含集群管理、存储管理和高可用服务。安装前需要确认以下关键点用户和权限配置创建专用的操作系统用户和组。注意权限分离原则# 创建必要的用户组 groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 asmdba groupadd -g 54325 asmoper groupadd -g 54326 asmadmin # 创建 Grid Infrastructure 用户 useradd -u 54321 -g oinstall -G asmadmin,asmdba,asmoper,dba,oper grid # 创建 Database 用户稍后使用 useradd -u 54322 -g oinstall -G dba,oper,asmdba oracle共享存储初始化配置 ASM 磁盘。这里演示使用 Oracle ASMLib 的方式# 安装 ASMLib 工具包 yum install -y oracleasm-support oracleasmlib oracleasm-uname -r # 配置 ASMLib oracleasm configure -i # 按照提示设置默认用户和组 # 扫描磁盘设备 oracleasm scandisks oracleasm listdisks # 创建 ASM 磁盘 oracleasm createdisk DATA_DISK01 /dev/sdb1 oracleasm createdisk DATA_DISK02 /dev/sdc1 oracleasm createdisk FRA_DISK01 /dev/sdd1安装 Grid Infrastructure使用静默安装方式更适合生产环境。准备响应文件是关键# 解压安装包 unzip linuxx64_26ai_grid_home.zip -d /u01/app/26ai/grid # 创建响应文件模板 ./grid/runInstaller -generateResponseFile -destinationFile /home/grid/grid.rsp # 编辑响应文件重点配置以下参数 # oracle.install.optionHA_CONFIG # ORACLE_HOSTNAMEnode1 # ORACLE_BASE/u01/app/grid # INVENTORY_LOCATION/u01/app/oraInventory # SELECTED_LANGUAGESen,zh_CN # oracle.install.asm.OSDBAasmdba # oracle.install.asm.OSOPERasmoper # oracle.install.asm.OSASMasmadmin # oracle.install.crs.config.gpnp.scanNamerac-scan.example.com # oracle.install.crs.config.gpnp.scanPort1521 # 执行静默安装 ./grid/runInstaller -silent -responseFile /home/grid/grid.rsp -ignorePrereqFailure安装完成后以 root 身份在两个节点依次执行配置脚本# 在节点1执行 /u01/app/oraInventory/orainstRoot.sh /u01/app/26ai/grid/root.sh # 在节点2执行 /u01/app/26ai/grid/root.sh2.2 第二阶段Database 软件安装和数据库创建Grid Infrastructure 就绪后开始安装 Database 软件。这里有个重要决策点是使用 Oracle Universal Installer 图形界面还是静默安装对于生产环境我强烈推荐静默安装。不仅因为效率高更重要的是可以版本化控制安装参数便于后续重复部署和自动化管理。Database 软件安装# 解压安装包 unzip linuxx64_26ai_database.zip -d /u01/app/oracle/software # 准备响应文件 ./database/runInstaller -generateResponseFile -destinationFile /home/oracle/db.rsp # 关键配置参数 # oracle.install.optionINSTALL_DB_SWONLY # UNIX_GROUP_NAMEoinstall # ORACLE_HOME/u01/app/oracle/product/26ai/dbhome_1 # ORACLE_BASE/u01/app/oracle # oracle.install.db.InstallEditionEE # oracle.install.db.OSDBAdba # oracle.install.db.OSOPERoper # oracle.install.db.OSBACKUPdba # 静默安装 ./database/runInstaller -silent -responseFile /home/oracle/db.rsp使用 DBCA 创建 RAC 数据库这是最关键的步骤很多配置一旦设定就很难修改。# 启动 DBCA 静默模式 dbca -silent \ -createDatabase \ -templateName General_Purpose.dbc \ -gdbName racdb.example.com \ -sid racdb \ -characterSet AL32UTF8 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName pdb1 \ -useLocalUndoForPDBs true \ -sid racdb \ -sysPassword YourSysPass123! \ -systemPassword YourSystemPass123! \ -emConfiguration NONE \ -storageType ASM \ -diskGroupName DATA \ -recoveryGroupName FRA \ -sampleSchema true \ -databaseConfigType RAC \ -nodelist node1,node2 \ -totalMemory 4096创建完成后立即验证集群状态-- 检查实例状态 SELECT instance_name, host_name, status, database_status FROM gv$instance; -- 验证缓存融合功能 SELECT inst_id, name, value FROM gv$sysstat WHERE name LIKE %gc% AND value 0; -- 检查 ASM 磁盘组使用情况 SELECT name, total_mb, free_mb, usable_file_mb FROM v$asm_diskgroup;3. 安装后的关键验证确保高可用真正生效数据库创建成功只是第一步真正的考验是验证高可用功能是否按预期工作。很多团队在安装后只是简单测试连接就认为大功告成结果真正发生故障时才发现配置有问题。3.1 基础功能验证连接负载均衡测试RAC 应该能够将新连接均匀分布到各个节点。# 使用 SCAN 地址连接观察连接分配到哪个节点 sqlplus system/YourSystemPass123!rac-scan.example.com:1521/racdb # 在数据库内查看当前连接的实例 SELECT instance_name FROM v$instance;透明应用故障切换TAF测试模拟节点故障验证会话是否自动迁移。-- 在节点1上创建一个测试会话 INSERT INTO test_taf VALUES (1, 测试数据, SYSDATE); COMMIT; -- 突然关闭节点1的数据库实例 ALTER SYSTEM DISCONNECT SESSION sid,serial# IMMEDIATE; -- 在原来的会话中继续操作应该自动切换到节点2 SELECT * FROM test_taf;3.2 性能基准测试RAC 环境下的性能特征与单实例有很大不同需要特别关注缓存融合的开销。-- 测试跨节点数据访问性能 -- 在节点1上创建测试表 CREATE TABLE perf_test AS SELECT * FROM dba_objects; -- 在节点2上频繁访问该表 DECLARE v_count NUMBER; BEGIN FOR i IN 1..1000 LOOP SELECT COUNT(*) INTO v_count FROM perf_test; END LOOP; END; / -- 监控全局缓存效率 SELECT inst_id, name, value FROM gv$sysstat WHERE name IN (global cache blocks received, global cache blocks served);理想的缓存命中率应该在 90% 以上。如果发现过多的跨节点数据块传输可能需要调整数据分布或应用设计。3.3 故障恢复演练定期进行有计划的故障演练是保证 RAC 可靠性的关键。以下是一个标准的演练清单网络故障演练临时断开私网连接观察集群如何反应存储故障演练模拟一块 ASM 磁盘故障验证镜像保护机制节点故障演练正常关闭一个节点验证服务自动切换脑裂场景演练模拟网络分区验证投票磁盘机制每次演练后都要详细记录恢复时间和数据一致性状态不断完善应急预案。4. 生产环境运维要点从能用走向好用RAC 安装成功只是开始长期稳定运行需要建立完善的运维体系。以下是容易被忽视但至关重要的实践要点。4.1 监控体系构建基础的集群状态监控是必要的但还不够。一个完整的 RAC 监控体系应该包括集群层监控# 定期检查集群状态 crsctl status resource -t # 监控节点间网络延迟 cluvfy comp health -n all -verbose数据库层监控-- 监控全局队列性能 SELECT * FROM v$cr_block_server; -- 监控实例间锁竞争 SELECT * FROM v$dlm_stats;应用层监控通过业务视角验证集群健康度比如关键事务的响应时间分布。4.2 备份恢复策略RAC 环境的备份恢复比单实例更复杂需要特别注意使用 RMAN 备份时确保连接到正确的实例定期验证备份的可用性特别是归档日志的连续性制定详细的灾难恢复流程明确各种故障场景下的恢复步骤# RAC 环境下的 RMAN 备份示例 rman target sys/YourSysPass123!racdb1 RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK CONNECT sys/YourSysPass123!racdb1; ALLOCATE CHANNEL ch2 DEVICE TYPE DISK CONNECT sys/YourSysPass123!racdb2; BACKUP DATABASE PLUS ARCHIVELOG; RELEASE CHANNEL ch1; RELEASE CHANNEL ch2; }4.3 性能优化持续进行RAC 性能优化是一个持续的过程重点关注以下几个方面应用设计优化尽量减少跨实例的数据访问通过数据分区将相关数据放在同一实例上。数据库参数调优特别注意与集群相关的参数如cluster_database_instances、cluster_interconnects等。系统资源规划定期评估硬件资源使用情况提前规划扩容方案。5. 常见问题深度排查从现象到根因即使按照最佳实践部署RAC 环境中仍然可能出现各种问题。关键在于建立系统化的排查思路。5.1 节点驱逐问题排查节点被意外驱逐是 RAC 环境中最严重的问题之一。排查思路如下检查集群日志首先查看$GRID_HOME/log/hostname/alerthostname.log分析时间线确定驱逐发生的确切时间关联系统日志和网络监控数据网络质量分析检查私网在故障时间点的延迟和丢包率资源竞争分析检查当时是否有资源瓶颈导致心跳超时5.2 性能问题排查RAC 性能问题往往比单实例更复杂需要多维度分析-- 快速定位性能瓶颈的查询 SELECT inst_id, event, total_waits, time_waited_micro FROM gv$system_event WHERE wait_class Idle ORDER BY time_waited_micro DESC; -- 检查跨实例等待事件 SELECT * FROM v$waitclassmetric WHERE wait_class_name Cluster;5.3 连接管理问题连接池配置不当是 RAC 环境常见的问题源确保连接字符串正确使用 SCAN 地址验证负载均衡配置是否生效检查连接超时和故障切换设置监控连接分布是否均衡Oracle RAC 的部署和运维确实比单实例数据库复杂得多但这种复杂性换来的是业务连续性的质的提升。真正的价值不在于安装成功的那一刻而在于当硬件故障、网络中断或其他意外情况发生时业务能够几乎无感知地继续运行。最重要的是要把 RAC 看作一个完整的体系而不仅仅是软件组合。从前期规划、中期部署到后期运维每个环节都需要严谨的态度和系统化的方法。只有这样RAC 才能真正成为支撑关键业务的可靠基石。

相关新闻

Nino:C#与Unity高性能序列化库的设计原理与实战应用

Nino:C#与Unity高性能序列化库的设计原理与实战应用

1. 项目概述:为什么我们需要Nino? 如果你是一个C#或Unity开发者,尤其是在处理网络通信、数据持久化或者跨平台数据交换时,肯定对序列化这个概念不陌生。简单来说,序列化就是把一个内存中的对象,转换成一串可…

2026/7/23 6:57:38阅读更多 →
免费开源直播录制软件 OBS Studio 32.2.0 发布,新增功能、变更及多项错误修复!

免费开源直播录制软件 OBS Studio 32.2.0 发布,新增功能、变更及多项错误修复!

免费开源的视频录制与直播串流软件 OBS Studio 32.2.0 正式发布,带来新功能、变更及众多错误修复,提升使用体验。新功能亮点OBS Studio 32.2.0 有诸多新功能。如将 add source dropdown 替换为新对话框,前端 API 增添复制粘贴功能&#xff0c…

2026/7/23 6:57:37阅读更多 →
嵌入式开发为何需要计算机体系结构:从CS61C到实战优化

嵌入式开发为何需要计算机体系结构:从CS61C到实战优化

去年秋天,一位做嵌入式开发的朋友在调试一块定制板卡时遇到了奇怪的问题:设备在连续运行几十小时后会偶发内存越界,但排查了所有应用层代码都没找到原因。最后发现是芯片的Cache一致性机制在特定时序下未被正确配置,导致DMA传输的…

2026/7/23 6:55:37阅读更多 →
C++实现信号微分:有限差分与Savitzky-Golay滤波器的原理、对比与实战

C++实现信号微分:有限差分与Savitzky-Golay滤波器的原理、对比与实战

1. 项目概述:为什么我们需要微分器?在信号处理、控制系统、物理仿真乃至游戏开发中,我们常常会遇到一个核心问题:如何从一组离散的、可能带有噪声的数据点中,可靠地计算出其变化率,也就是导数。比如&#x…

2026/7/23 8:26:06阅读更多 →
Linux C编程实战:从系统调用到项目开发的全链路指南

Linux C编程实战:从系统调用到项目开发的全链路指南

1. 项目概述:为什么你需要一套实战资源如果你正在学习或者打算深入Linux C编程,大概率会遇到一个经典困境:理论学了一大堆,从指针到内存管理,从数据结构到系统调用,概念都懂,但打开编辑器准备写…

2026/7/23 8:26:06阅读更多 →
没有官网,也能做GEO吗?很多企业第一步就搞错了

没有官网,也能做GEO吗?很多企业第一步就搞错了

最近被问得比较多的一个问题是: “我们公司还没有官网,能不能先做GEO?”有人觉得可以。 只要在公众号、新闻平台、行业网站多发一些内容,AI早晚会看到。 也有人觉得,没有官网就完全做不了GEO,其实&#…

2026/7/23 8:26:06阅读更多 →
租房好好的突然被平台单方面解约 这事真的太闹心了!

租房好好的突然被平台单方面解约 这事真的太闹心了!

涨租不成那就赶人走?背后的小心思你看懂了吗上周刷到好几个网友的吐槽,都是刚住了大半年,突然收到租房平台的单方面解约通知,理由千奇百怪,什么房东要收房自住,什么房屋需要整体整改,翻来覆去就…

2026/7/23 8:26:06阅读更多 →
基于XR Interaction Toolkit的PICO 4沉浸式交互开发实战

基于XR Interaction Toolkit的PICO 4沉浸式交互开发实战

1. 项目概述:从基础移动到沉浸交互的跨越 如果你正在用Unity为PICO 4开发应用,可能已经体验过Unity内置的XR Rig或一些基础的手柄移动方案。它们能跑起来,但总感觉差点意思——移动是瞬移的,抓取是僵硬的,整个交互过程…

2026/7/23 8:26:05阅读更多 →
2026 设计行业快速传输大文件 TOP5 测评,弥补传统 FTP 传输缓慢、配置复杂短板

2026 设计行业快速传输大文件 TOP5 测评,弥补传统 FTP 传输缓慢、配置复杂短板

一、引文/摘要设计行业3D模型、影视素材、高清工程图纸普遍达到GB至TB级别,传统FTP明文传输、弱网卡顿、运维繁琐等问题持续拖慢项目交付节奏。本次测评选取5款面向设计行业的大文件传输工具,围绕传输效率、安全合规、国产化适配、运维成本、多场景适配五…

2026/7/23 8:24:05阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →