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:44 阅读更多 →
免费开源直播录制软件 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:44 阅读更多 →
UE5 C++与UnLua脚本交互实战:接口调用与Lua栈操作详解

UE5 C++与UnLua脚本交互实战:接口调用与Lua栈操作详解

1. 项目概述:为什么要在UE5 C中调用UnLua?在虚幻引擎5(UE5)的开发中,我们常常面临一个经典的选择:用蓝图还是用C?蓝图可视化、上手快,适合快速原型和逻辑设计;C性能高、控…

2026/7/23 6:56:44 阅读更多 →

最新新闻

提示工程架构师:AI交互设计的核心技术解析

提示工程架构师:AI交互设计的核心技术解析

1. 提示工程架构师的角色定位与技术栈解析 提示工程架构师是AI时代新兴的技术岗位,主要负责设计、优化和管理AI系统的交互接口与指令体系。这个角色需要同时具备自然语言处理、心理学和系统工程的多学科知识,其核心工作是通过结构化提示词(pr…

2026/7/23 12:30:05 阅读更多 →
MSPM0看门狗定时器(IWDT/WWDT)原理、配置与嵌入式系统抗干扰设计

MSPM0看门狗定时器(IWDT/WWDT)原理、配置与嵌入式系统抗干扰设计

1. 项目概述在嵌入式系统开发,尤其是工业控制、汽车电子或医疗设备这类对可靠性要求极高的领域,系统死机或程序跑飞是绝对不能容忍的。想象一下,一个控制电机运转的微控制器因为电磁干扰或软件缺陷卡死在一个循环里,轻则设备停机&…

2026/7/23 12:30:05 阅读更多 →
WPF中给集合分块

WPF中给集合分块

1. 核心概念 Chunk() 是从 .NET 6 开始引入的一个 LINQ 扩展方法。 它的作用非常直接:将一个大型集合(如数组、List)按指定的固定大小分割成多个小的“数据块”(或批次)。 命名空间:System.Linq适用对象&am…

2026/7/23 12:30:05 阅读更多 →
Q-learning算法在Matlab中的迷宫路径规划实践

Q-learning算法在Matlab中的迷宫路径规划实践

1. 项目概述:当机器人走进迷宫 去年调试车间里那台总撞墙的移动机器人,让我意识到传统路径规划在未知环境中的局限性。直到把Q-learning算法引入项目,机器人才真正学会了"思考"。这次我们就用Matlab复现这个让机器人自主探索迷宫的…

2026/7/23 12:30:05 阅读更多 →
UE5 Lumen全局光照性能优化实战:从30帧到60帧的调优策略

UE5 Lumen全局光照性能优化实战:从30帧到60帧的调优策略

1. 项目概述:当Lumen成为帧率杀手 如果你正在用UE5做项目,尤其是那种对画面有追求的项目,大概率已经用上了Lumen全局光照和反射。这东西确实香,动态光照效果真实得不像话,但代价就是性能开销巨大。我的项目最初在目标场…

2026/7/23 12:30:05 阅读更多 →
程序员转型AI的四大路径与6个月速成指南

程序员转型AI的四大路径与6个月速成指南

1. AI浪潮下的程序员转型现状2023年被称为"AI元年",ChatGPT的横空出世彻底改变了技术行业的格局。根据LinkedIn最新发布的《全球AI人才报告》,AI相关岗位的招聘数量同比增长了320%,而传统开发岗位的增速仅为15%。这种巨大的差距正在…

2026/7/23 12:29:05 阅读更多 →

日新闻

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

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

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

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
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:01:26 阅读更多 →

周新闻

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

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

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

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/22 12:54:44 阅读更多 →

月新闻