Skip to content

Oracle RAC 集群安装

安装前准备

系统要求

硬件要求

  • 服务器:至少 2 台相同配置的服务器
  • 处理器:每台服务器至少 4 核心,推荐 8 核心以上
  • 内存:每台服务器至少 8 GB,推荐 16 GB 以上
  • 存储空间
    • 系统分区:每台服务器至少 10 GB
    • /tmp 分区:每台服务器至少 1 GB
    • Grid 基础设施:每台服务器至少 10 GB
    • Oracle 软件:每台服务器至少 6 GB
    • 共享存储:根据数据量确定,至少 50 GB

软件要求

  • 操作系统:对应 Oracle 版本支持的操作系统版本
    • Linux:Oracle Linux 7.4+,RHEL 7.4+,SLES 12+ 等
  • 内核参数:已配置适合 Oracle RAC 安装的内核参数
  • 必需软件包
    • Linux:binutils, compat-libcap1, compat-libstdc++-33, gcc, gcc-c++, glibc, glibc-devel, ksh, libaio, libaio-devel, libgcc, libstdc++, libstdc++-devel, libXi, libXtst, make, sysstat, unixODBC, unixODBC-devel 等

网络配置

网络要求

  • 公共网络:用于客户端连接,每台服务器至少 1 个网络接口
  • 私有网络:用于节点间通信,每台服务器至少 1 个网络接口,推荐 2 个(冗余)
  • 网络带宽
    • 公共网络:至少 1 Gbps
    • 私有网络:至少 10 Gbps,推荐 25 Gbps
  • 网络延迟:私有网络延迟应低于 1 ms

网络配置步骤

  1. 配置主机名

    • 为每台服务器配置主机名
    • 为每台服务器配置 VIP 主机名
    • 为每台服务器配置 SCAN 主机名
  2. 配置 /etc/hosts 文件

    text
    # 公共网络
    192.168.1.101  node1
    192.168.1.102  node2
    
    # VIP 地址
    192.168.1.111  node1-vip
    192.168.1.112  node2-vip
    
    # SCAN 地址
    192.168.1.121  scan-cluster
    192.168.1.122  scan-cluster
    192.168.1.123  scan-cluster
    
    # 私有网络
    10.0.0.101     node1-priv
    10.0.0.102     node2-priv
  3. 配置网络接口

    • 配置公共网络接口
    • 配置私有网络接口
    • 禁用私有网络的防火墙

存储配置

共享存储要求

  • 存储类型:SAN 或 NAS
  • 文件系统:支持 ASM 或 OCFS2
  • 分区
    • OCR/Voting Disk:至少 3 个分区,每个 200 MB 以上
    • 数据文件:根据数据量确定
    • 重做日志:每个节点至少 3 组,每组至少 2 个成员
    • 归档日志:根据备份策略确定

ASM 磁盘配置

  1. 创建共享磁盘

    • 在存储阵列上创建共享磁盘
    • 配置 LUN 映射到所有节点
  2. 配置 ASM 磁盘

    • 在每台服务器上配置 multipath
    • 配置 udev 规则或 ASMLib
    • 验证所有节点都能看到共享磁盘

用户和组创建

创建 Oracle 组

bash
# 在所有节点上执行
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin

创建 Oracle 用户

bash
# 在所有节点上执行
useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba oracle
useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba grid

# 设置密码
passwd oracle
passwd grid

环境变量配置

Grid 用户环境变量

编辑 grid 用户的 .bash_profile 文件:

bash
# Grid 环境变量
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.0.0/grid
export ORACLE_SID=+ASM1  # 节点 1
export ORACLE_SID=+ASM2  # 节点 2
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

Oracle 用户环境变量

编辑 oracle 用户的 .bash_profile 文件:

bash
# Oracle 环境变量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORACLE_SID=ORCL1  # 节点 1
export ORACLE_SID=ORCL2  # 节点 2
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

网格基础设施安装

下载安装介质

  • 从 Oracle 官网下载

解压安装包

bash
# 在节点 1 上执行
mkdir -p /u01/app/19.0.0/grid
chown -R grid:oinstall /u01/app
chmod -R 775 /u01/app

# 切换到 grid 用户
su - grid

# 解压安装包
unzip LINUX.X64_193000_grid_home.zip -d /u01/app/19.0.0/grid

启动安装向导

bash
# 在节点 1 上执行
cd /u01/app/19.0.0/grid
./gridSetup.sh

安装步骤

  1. 配置安全更新

    • 取消勾选"我希望通过 My Oracle Support 接收安全更新"
    • 点击"下一步"
  2. 选择安装选项

    • 选择"配置 Oracle Grid Infrastructure for a New Cluster"
    • 点击"下一步"
  3. 集群配置

    • 选择"配置标准集群"
    • 点击"下一步"
  4. 集群名称和 SCAN 配置

    • 输入集群名称
    • 输入 SCAN 名称和端口
    • 点击"下一步"
  5. 集群节点

    • 点击"添加"按钮,添加所有节点
    • 输入节点名称和虚拟主机名
    • 点击"下一步"
  6. 网络配置

    • 配置公共网络和私有网络
    • 选择网络类型
    • 点击"下一步"
  7. 存储选项

    • 选择"使用 Oracle 自动存储管理 (ASM)"
    • 点击"下一步"
  8. ASM 磁盘组

    • 创建 OCR 和 Voting Disk 磁盘组
    • 选择冗余级别(外部/正常/高)
    • 选择 ASM 磁盘
    • 设置 ASM 密码
    • 点击"下一步"
  9. 数据库管理选项

    • 选择"使用 Oracle Enterprise Manager (EM) Cloud Control"或"不使用 EM Cloud Control"
    • 点击"下一步"
  10. 操作系统组

    • 验证操作系统组配置
    • 点击"下一步"
  11. 安装位置

    • 验证 Oracle 基目录和 Grid 主目录
    • 点击"下一步"
  12. 先决条件检查

    • 系统会自动检查先决条件
    • 解决所有警告和错误
    • 点击"下一步"
  13. 概要

    • 检查安装配置信息
    • 点击"安装"
  14. 执行配置脚本

    • 安装过程中会提示执行配置脚本
    • 在所有节点上以 root 用户执行脚本:
      bash
      /u01/app/oraInventory/orainstRoot.sh
      /u01/app/19.0.0/grid/root.sh
  15. 完成

    • 安装完成后,点击"关闭"

数据库软件安装

解压安装包

bash
# 在节点 1 上执行
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle

# 切换到 oracle 用户
su - oracle

# 解压安装包
unzip LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.0.0/dbhome_1

启动安装向导

bash
# 在节点 1 上执行
cd /u01/app/oracle/product/19.0.0/dbhome_1
./runInstaller

安装步骤

  1. 配置安全更新

    • 取消勾选"我希望通过 My Oracle Support 接收安全更新"
    • 点击"下一步"
  2. 选择安装选项

    • 选择"安装数据库软件 - 仅安装"
    • 点击"下一步"
  3. 系统类

    • 选择"服务器类"
    • 点击"下一步"
  4. 数据库安装选项

    • 选择"Oracle Real Application Clusters 数据库安装"
    • 点击"下一步"
  5. 集群节点

    • 验证所有节点都已选择
    • 点击"下一步"
  6. 安装类型

    • 选择"企业版"
    • 点击"下一步"
  7. 安装位置

    • 验证 Oracle 基目录和软件位置
    • 点击"下一步"
  8. 操作系统组

    • 验证操作系统组配置
    • 点击"下一步"
  9. 先决条件检查

    • 系统会自动检查先决条件
    • 解决所有警告和错误
    • 点击"下一步"
  10. 概要

    • 检查安装配置信息
    • 点击"安装"
  11. 执行配置脚本

    • 安装过程中会提示执行配置脚本
    • 在所有节点上以 root 用户执行脚本:
      bash
      /u01/app/oracle/product/19.0.0/dbhome_1/root.sh
  12. 完成

    • 安装完成后,点击"关闭"

数据库创建

启动 Database Configuration Assistant

bash
# 在节点 1 上执行
su - oracle
cd /u01/app/oracle/product/19.0.0/dbhome_1/bin
./dbca

创建步骤

  1. 数据库操作

    • 选择"创建数据库"
    • 点击"下一步"
  2. 创建模式

    • 选择"高级配置"
    • 点击"下一步"
  3. 部署类型

    • 选择"Oracle Real Application Clusters 数据库"
    • 选择"管理员管理的数据库"
    • 点击"下一步"
  4. 数据库标识

    • 输入全局数据库名
    • 输入 SID 前缀
    • 选择"创建为容器数据库"
    • 输入可插拔数据库名称
    • 点击"下一步"
  5. 存储选项

    • 选择"使用 Oracle 自动存储管理 (ASM)"
    • 选择或创建数据文件磁盘组
    • 点击"下一步"
  6. 快速恢复区

    • 启用快速恢复区
    • 选择或创建快速恢复区磁盘组
    • 设置大小
    • 点击"下一步"
  7. 网络配置

    • 选择监听器
    • 点击"下一步"
  8. 初始化参数

    • 配置内存、进程、字符集等参数
    • 点击"下一步"
  9. 创建选项

    • 选择"创建数据库"
    • 选择"生成数据库创建脚本"
    • 点击"下一步"
  10. 概要

    • 检查数据库配置信息
    • 点击"完成"
  11. 创建数据库

    • 系统会自动创建数据库
    • 点击"关闭"

安装后配置

集群状态检查

bash
# 在任意节点上执行
# 检查集群状态
crsctl status cluster -all

# 检查资源状态
crsctl status resource -all

# 检查 ASM 状态
asmcmd
ASMCMD> lsct
ASMCMD> exit

# 检查监听器状态
lsnrctl status

# 检查数据库状态
sqlplus / as sysdba
SQL> SELECT instance_name, status FROM v$instance;
SQL> SELECT name, open_mode FROM v$database;
SQL> exit;

网络配置

SCAN 配置

  • 验证 SCAN 配置

    bash
    srvctl config scan
  • 验证 VIP 配置

    bash
    srvctl config nodevip -all

存储配置

ASM 磁盘组

  • 检查 ASM 磁盘组

    bash
    asmcmd
    ASMCMD> lsdg
    ASMCMD> exit
  • 创建数据磁盘组

    bash
    asmcmd
    ASMCMD> creategroup -t data - redundancy external DATA_DISKGRP DISK '/dev/oracleasm/disks/DISK*'
    ASMCMD> exit

数据库配置

服务配置

  • 创建服务

    bash
    srvctl add service -db ORCL -service ORCL_SERVICE -preferred node1,node2 -available node2,node1 -failovermethod BASIC -failoverretry 180 -failoverdelay 5 -clbgoal SHORT
    srvctl start service -db ORCL -service ORCL_SERVICE
  • 验证服务

    bash
    srvctl status service -db ORCL

常见问题及解决方案

安装失败

问题:节点间通信失败

  • 原因:私有网络配置错误、防火墙阻止或网络延迟过高
  • 解决方案
    • 检查私有网络配置
    • 禁用私有网络的防火墙
    • 检查网络延迟和带宽

问题:共享存储无法访问

  • 原因:存储映射错误、多路径配置错误或权限问题
  • 解决方案
    • 检查存储映射
    • 验证多路径配置
    • 检查磁盘权限

集群启动失败

问题:CRS 服务无法启动

  • 原因:OCR 损坏、网络问题或权限问题
  • 解决方案
    • 检查 OCR 状态
    • 检查网络连接
    • 验证权限配置

问题:节点无法加入集群

  • 原因:网络问题、时间同步问题或配置错误
  • 解决方案
    • 检查网络连接
    • 确保节点时间同步
    • 验证集群配置

数据库问题

问题:数据库实例无法启动

  • 原因:参数文件错误、数据文件损坏或资源限制
  • 解决方案
    • 检查告警日志
    • 验证参数文件
    • 检查数据文件状态

问题:服务无法启动

  • 原因:依赖资源不可用、配置错误或权限问题
  • 解决方案
    • 检查服务配置
    • 验证依赖资源状态
    • 检查权限配置

最佳实践

安装前

  • 充分规划:根据业务需求规划集群规模和配置
  • 硬件准备:确保所有节点硬件配置一致
  • 网络准备:确保网络带宽和延迟满足要求
  • 存储准备:确保共享存储配置正确
  • 文档:准备详细的安装计划和配置文档

安装过程

  • 遵循向导:严格按照安装向导的步骤进行操作
  • 合理配置:根据实际需求配置集群参数
  • 记录信息:记录所有配置信息和密码
  • 解决问题:及时解决安装过程中遇到的问题

安装后

  • 全面检查:检查集群状态、服务状态和网络配置
  • 安全加固:配置密码策略、审计和访问控制
  • 性能调优:根据实际负载调整数据库参数
  • 文档更新:更新安装文档,记录所有操作和配置

日常维护

  • 定期备份:建立定期备份策略
  • 监控:配置集群和数据库监控
  • 更新:及时应用补丁和更新
  • 测试:定期测试故障转移和恢复流程

常见问题(FAQ)

Q1: 如何选择 Oracle RAC 集群的节点数量?

A1: 选择 Oracle RAC 集群节点数量的方法:

  • 业务需求:根据并发用户数和吞吐量需求确定
  • 硬件资源:考虑服务器的 CPU 和内存资源
  • 高可用性:至少 2 个节点,推荐 3-4 个节点
  • 性能:节点数量增加到一定程度后,性能提升会递减
  • 成本:节点数量越多,硬件和许可成本越高

Q2: 如何配置 Oracle RAC 的网络冗余?

A2: 配置 Oracle RAC 网络冗余的方法:

  • 私有网络冗余

    • 为每台服务器配置至少 2 个私有网络接口
    • 在安装过程中配置多个私有网络
    • 启用网络绑定或链路聚合
  • 公共网络冗余

    • 为每台服务器配置至少 2 个公共网络接口
    • 配置负载均衡或故障转移

Q3: 如何选择 Oracle RAC 的存储冗余级别?

A3: 选择 Oracle RAC 存储冗余级别的方法:

  • 外部冗余:依赖存储阵列的 RAID 保护,适合高端存储阵列
  • 正常冗余:ASM 提供双重镜像,适合一般企业存储
  • 高冗余:ASM 提供三重镜像,适合关键业务系统

Q4: 如何测试 Oracle RAC 的故障转移功能?

A4: 测试 Oracle RAC 故障转移功能的方法:

  • 节点故障测试

    bash
    # 模拟节点故障
    crsctl stop crs -f
    # 或
    reboot
  • 实例故障测试

    bash
    # 模拟实例故障
    sqlplus / as sysdba
    SQL> SHUTDOWN ABORT;
  • 服务故障测试

    bash
    # 停止服务
    srvctl stop service -db ORCL -service ORCL_SERVICE
    # 检查服务是否自动启动
    srvctl status service -db ORCL

Q5: 如何扩展 Oracle RAC 集群?

A5: 扩展 Oracle RAC 集群的方法:

  1. 准备新节点

    • 配置硬件和操作系统
    • 配置网络和存储
    • 创建用户和组
  2. 扩展 Grid Infrastructure

    • 在现有节点上运行 Grid 安装程序
    • 选择"添加节点到集群"
    • 按照向导完成安装
  3. 扩展数据库软件

    • 在现有节点上运行数据库安装程序
    • 选择"添加节点到集群"
    • 按照向导完成安装
  4. 添加数据库实例

    • 使用 DBCA 添加数据库实例
    • 或手动创建实例
  5. 更新服务配置

    • 更新服务的首选和可用节点
    • 重启服务