Ubuntu 上搭建 Oracle RAC 的可行路径与关键步骤
一 方案选择与前置条件
- 方案选择
- 生产推荐:使用 Oracle Grid Infrastructure + Oracle Database(RAC) 的标准集群架构,依赖 ASM 提供共享存储,配合 VIP/SCAN 实现高可用与负载均衡。
- 兼容性与版本:在 Ubuntu 22.04 上已有社区实践成功适配 Oracle 11g RAC(通过适配脚本与手工配置),但需充分测试与加固,生产环境仍建议优先选用受支持的 Oracle Linux/RHEL 搭配官方介质与流程。
- 基础环境
- 至少 2 台物理机/虚拟机,配置一致;每台至少 2 块网卡(公网/私网),私网建议使用 10GbE 或更高带宽。
- 共享存储:为 OCR/Voting Disk 与数据库数据提供共享磁盘,常用 ASM(支持块设备/共享文件系统);虚拟化环境需确保磁盘可见且具备稳定 UUID。
- 网络规划:公网用于客户端访问,私网用于集群心跳与缓存融合(Cache Fusion);准备 VIP 与 SCAN(单客户端接入点)。
二 网络与存储规划
- 网络
- 公网(Public):承载业务连接与 VIP;私网(Private/Interconnect):集群心跳、GCS/GES 通信,要求低时延与高吞吐。
- 规划示例(/etc/hosts 或 DNS 统一解析):
- 公网:192.168.88.100 rac1、192.168.88.101 rac2
- 私网:10.10.10.10 rac1-priv、10.10.10.11 rac2-priv
- 虚拟 IP:192.168.88.110 rac1-vip、192.168.88.111 rac2-vip
- SCAN:192.168.88.200 scan-ip
- 要求:各节点间公网/私网双向可达,名称解析一致,禁用或正确配置防火墙策略以放行相关端口与协议。
- 存储
- 共享磁盘:至少准备 3 块用于 OCR/Voting(冗余建议 3 份 OCR + 奇数个 Voting Disk),以及若干 DATA 磁盘组。
- 虚拟化/实验环境:优先使用 块设备(如 iSCSI/FC/NVMe over Fabrics),确保多路径与稳定 UUID;避免仅用文件镜像方式导致 SCSI-3 持久预留不可用。
三 安装与配置步骤
- 系统准备
- 安装必要工具与依赖,创建 oracle/oinstall/dba/asmadmin/asmdba/asmoper 等用户与组,配置 sudo 免密;统一 NTP/chrony 时间同步;SSH 互信(oracle 用户免密登录各节点)。
- 内核参数、资源限制、用户环境变量(ORACLE_BASE/ORACLE_HOME/GRID_HOME 等)按 Oracle 推荐值设置。
- Grid Infrastructure 安装
- 在首个节点以 grid 用户运行 runInstaller 安装 Grid Infrastructure(选择“Install and Configure Grid Infrastructure for a Cluster”),按向导完成:
- 集群名称、SCAN 名称与地址、节点列表、网卡角色(Public/Private)。
- 存储类型选择 ASM,创建 OCR 与 Voting 磁盘组;若使用 ASMLib,按发行版准备相应内核驱动与工具。
- Oracle RAC 数据库软件安装
- 以 oracle 用户运行 runInstaller 安装 Oracle Database 软件(仅软件),随后使用 DBCA 创建 RAC 数据库(选择 ASM 存储、创建 Service、配置 VIP/SCAN Listener)。
- 集群验证与启停
- 使用 cluvfy 进行前置检查与阶段验证:
cluvfy stage -pre crsinst -n all、cluvfy stage -post crsinst -n all;必要时 cluvfy stage create_database ... 执行阶段化建库。
- 常用运维:
crsctl start/stop crs、crsctl status res -t、srvctl status database -d <dbname>、lsnrctl status(SCAN Listener)。
四 常见问题与注意事项
- 兼容性与支持
- Ubuntu 并非 Oracle 官方首要支持平台;在 22.04 上可借助社区适配脚本完成 11g RAC 安装,但生产环境强烈建议选用 Oracle Linux/RHEL 并遵循官方文档与补丁策略。
- 网络与解析
- 确保 /etc/hosts 或 DNS 解析一致;公网/私网分离;VIP/SCAN 正确配置并可漂移;防火墙/安全组放行 UDP/TCP 多播、ASM/数据库监听端口 等必要流量。
- 存储与多路径
- 共享存储需支持 SCSI-3 Persistent Reservation;虚拟化/实验环境优先块设备与稳定 UUID;多路径(如 multipathd)需正确配置并测试故障切换。
- 时间同步与一致性
- 集群强烈依赖时间一致性;建议统一 NTP/chrony,避免节点间时钟漂移导致 CSS 异常。
- 安全与加固
- 禁用不必要服务,限制 root 直接登录,使用 sudo 精细化授权;按最小权限原则配置 oracle/asm 用户与组;审计关键操作与登录。
五 快速验证清单
- 集群资源:
crsctl status res -t 显示 SCAN、VIP、Listener、ASM、数据库实例均为 ONLINE。
- 网络连通:节点间公网/私网 ping 通;
nslookup 解析 SCAN 返回 3 个 VIP;srvctl config scan 与 srvctl status scan_listener 正常。
- 存储与磁盘组:
asmcmd lsdg 能看到 OCR 与 DATA 等磁盘组;v$asm_disk/v$asm_diskgroup 状态正常。
- 数据库可用性:
srvctl status database -d <dbname> 显示实例 OPEN;select instance_name, host_name, status from gv$instance; 两节点均 OPEN;应用通过 SCAN 连接并执行查询。