Debian 上部署 Oracle RAC 的实用指南
一 规划与前置条件
- 目标架构:部署 Oracle Real Application Clusters(RAC),由 Grid Infrastructure(GI) 管理集群资源,数据库软件与实例运行在 GI 之上,共享存储建议使用 ASM。
- 节点与硬件:至少 2 台 服务器(物理机/虚拟机),建议 CPU/内存/磁盘 规格对称;内存建议 ≥16GB,共享存储具备低时延与冗余能力。
- 操作系统:建议使用 Debian 11(或 10)稳定版,集群内各节点保持 相同发行版与内核补丁级别;完成系统更新与基础加固。
- 网络规划:准备三类网络并配置静态 IP 与 FQDN,在 /etc/hosts 或 DNS 中可解析所有节点与 VIP/SCAN。
- 公有网络:客户端访问,默认监听端口 1521(可选 EM Express 8080)。
- 私有网络:节点间心跳与集群通信,建议使用 10Gbps+ 低时延网络。
- 虚拟 IP(VIP):客户端连接的浮动地址,故障时漂移到存活节点。
- SCAN:Single Client Access Name,提供单一接入点(需 DNS 轮询或 GNS)。
- 共享存储:优先 ASM(支持 NORMAL/HIGH 冗余);也可使用 SAN/NAS(FC/iSCSI)。磁盘划分建议跨控制器/阵列分布,避免单点故障。
二 系统安装与网络配置
- 系统与依赖
- 更新系统并安装常用编译与驱动依赖:
- sudo apt update && sudo apt upgrade -y
- sudo apt install -y gcc make libc6-dev libaio1 libaio-dev unixodbc unixodbc-dev ksh kmod oracleasm
- 用户与目录
- 创建 oracle/oinstall/dba 用户与组,创建目录并授权:
- sudo groupadd -r oinstall
- sudo groupadd -r dba
- sudo useradd -m -r -g oinstall -G dba oracle
- sudo mkdir -p /u01/app/oracle /u01/app/grid
- sudo chown -R oracle:oinstall /u01
- sudo chmod -R 775 /u01
- 环境变量(oracle 用户 ~/.bashrc)
- 数据库软件主目录示例(按版本调整):
- export ORACLE_BASE=/u01/app/oracle
- export ORACLE_HOME=$ORACLE_BASE/product/23C/dbhome_1
- export GRID_HOME=$ORACLE_BASE/product/23C/grid
- export PATH=$PATH:$ORACLE_HOME/bin:$GRID_HOME/bin
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$GRID_HOME/lib
- 主机名与解析
- 配置 /etc/hosts(示例):
- 192.168.10.11 node1.example.com node1
- 192.168.10.12 node2.example.com node2
- 192.168.10.21 node1-vip
- 192.168.10.22 node2-vip
- 192.168.10.31 racdb-scan
- 防火墙放行(UFW/iptables)
- 公网:1521(TNS)、8080(EM Express)
- 私网:4200–4299(集群心跳)、6200–6299(ASM 通信)
- VIP:与公网端口一致(由 GI 管理漂移)
三 安装 Grid Infrastructure
- 准备与校验
- 以 oracle 用户解压 GI 安装介质,使用 cluvfy 进行安装前检查:
- ./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup
- 安装步骤
- 运行安装程序(示例为静默模式,实际可用图形界面):
- ./runInstaller -silent -responseFile /path/to/grid.rsp -instRepo /tmp/grid_repo
- 安装选项要点:
- 选择 Cluster Installation,添加 node1、node2。
- 配置 SCAN 名称(如 racdb-scan)与 VIP(node1-vip、node2-vip)。
- 指定 ASM 作为共享存储,创建 OCR/Voting 磁盘组(如 +OCR、+VOTE)。
- 完成安装
- 按提示在各节点以 root 执行 root.sh。
- 安装后验证
- 查看集群与资源状态:
- crsctl stat res -t
- crsctl check cluster
- srvctl status listener
- 确认 SCAN 与 VIP 正常解析与漂移
四 安装 Oracle RAC 数据库软件与创建数据库
- 安装数据库软件(RAC 模式)
- 解压数据库安装介质,执行安装(示例):
- ./runInstaller -silent -responseFile /path/to/db.rsp -instRepo /tmp/db_repo
- 关键参数:指定 GI 主目录、数据库字符集 AL32UTF8、内存目标(如 8G)、ASM 磁盘组(如 +DATA)。
- 安装完成后以 root 在各节点执行 root.sh。
- 使用 DBCA 创建 RAC 数据库(静默)
- 示例(创建容器数据库):
- dbca -silent
-createDatabase
-templateName General_Purpose.dbc
-gdbName racdb
-sid racdb
-createAsContainerDatabase true
-numberOfPDBs 1
-pdbName pdb1
-datafileDestination +DATA
-recoveryAreaDestination +FRA
-characterSet AL32UTF8
-memoryPercentage 40
-emConfiguration NONE
- 常用运维命令:
- srvctl status database -d racdb
- srvctl start|stop database -d racdb
- srvctl status instance -d racdb -i racdb1
- srvctl config service -d racdb
- 如需创建传统非 CDB 数据库,将 -createAsContainerDatabase 设为 false
五 存储与高可用验证
- ASM 磁盘组与冗余
- 创建数据/归档/FRA 磁盘组(示例):
- CREATE DISKGROUP DATA NORMAL REDUNDANCY
FAILGROUP fg1 DISK ‘/dev/sdb1’
FAILGROUP fg2 DISK ‘/dev/sdc1’;
- CREATE DISKGROUP FRA EXTERNAL REDUNDANCY DISK ‘/dev/sdd1’;
- 扩展集群可配置 ASM 主机镜像 与 首选读取 故障组以优化跨站点性能与可用性。
- 高可用测试
- 节点故障:关闭某节点,验证 VIP 漂移、存活节点 实例自动启动 与客户端重连。
- 存储故障:拔除/下线一块共享盘,验证 ASM 镜像 保持数据可用并完成重新同步。
- 备份与监控
- 备份策略:配置 RMAN 定期备份(含控制文件/归档日志),验证 恢复 流程。
- 监控告警:部署 OEM 或 Prometheus + Grafana/Nagios,监控 CPU/内存/I/O/ASM 磁盘健康/空间 等关键指标。
六 常见问题与排错要点
- 节点间通信异常:检查 /etc/hosts 与 DNS、私网交换机/线缆、MTU 一致性与防火墙策略。
- SCAN 或 VIP 不可达:确认 DNS 轮询/GNS 配置、SCAN VIP 与 public 网络 在同一子网、监听已注册到 SCAN。
- ASM 磁盘发现失败:核对 多路径/udev 规则、磁盘权限(oracle:asmadmin)、磁盘未被占用。
- 安装前校验失败:使用 cluvfy 逐项修复(如时间同步、用户等效性、内核参数、包依赖)。
- GI/DB 启动失败:查看 $GRID_HOME/log/、$ORACLE_HOME/diag/、/var/log/syslog,按报错修复后执行 crsctl start cluster 或 srvctl start database。
注意:上述步骤涉及生产级数据库与集群部署,请在测试环境充分验证,并严格遵循 Oracle 官方文档 与贵组织变更流程。任何误操作可能导致数据丢失或业务中断。