外观
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
网络配置步骤
配置主机名:
- 为每台服务器配置主机名
- 为每台服务器配置 VIP 主机名
- 为每台服务器配置 SCAN 主机名
配置 /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配置网络接口:
- 配置公共网络接口
- 配置私有网络接口
- 禁用私有网络的防火墙
存储配置
共享存储要求
- 存储类型:SAN 或 NAS
- 文件系统:支持 ASM 或 OCFS2
- 分区:
- OCR/Voting Disk:至少 3 个分区,每个 200 MB 以上
- 数据文件:根据数据量确定
- 重做日志:每个节点至少 3 组,每组至少 2 个成员
- 归档日志:根据备份策略确定
ASM 磁盘配置
创建共享磁盘:
- 在存储阵列上创建共享磁盘
- 配置 LUN 映射到所有节点
配置 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.AL32UTF8Oracle 用户环境变量
编辑 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 官网下载:
- 访问 Oracle 技术网
- 下载 Grid Infrastructure 安装包
解压安装包
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安装步骤
配置安全更新:
- 取消勾选"我希望通过 My Oracle Support 接收安全更新"
- 点击"下一步"
选择安装选项:
- 选择"配置 Oracle Grid Infrastructure for a New Cluster"
- 点击"下一步"
集群配置:
- 选择"配置标准集群"
- 点击"下一步"
集群名称和 SCAN 配置:
- 输入集群名称
- 输入 SCAN 名称和端口
- 点击"下一步"
集群节点:
- 点击"添加"按钮,添加所有节点
- 输入节点名称和虚拟主机名
- 点击"下一步"
网络配置:
- 配置公共网络和私有网络
- 选择网络类型
- 点击"下一步"
存储选项:
- 选择"使用 Oracle 自动存储管理 (ASM)"
- 点击"下一步"
ASM 磁盘组:
- 创建 OCR 和 Voting Disk 磁盘组
- 选择冗余级别(外部/正常/高)
- 选择 ASM 磁盘
- 设置 ASM 密码
- 点击"下一步"
数据库管理选项:
- 选择"使用 Oracle Enterprise Manager (EM) Cloud Control"或"不使用 EM Cloud Control"
- 点击"下一步"
操作系统组:
- 验证操作系统组配置
- 点击"下一步"
安装位置:
- 验证 Oracle 基目录和 Grid 主目录
- 点击"下一步"
先决条件检查:
- 系统会自动检查先决条件
- 解决所有警告和错误
- 点击"下一步"
概要:
- 检查安装配置信息
- 点击"安装"
执行配置脚本:
- 安装过程中会提示执行配置脚本
- 在所有节点上以 root 用户执行脚本:bash
/u01/app/oraInventory/orainstRoot.sh /u01/app/19.0.0/grid/root.sh
完成:
- 安装完成后,点击"关闭"
数据库软件安装
解压安装包
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安装步骤
配置安全更新:
- 取消勾选"我希望通过 My Oracle Support 接收安全更新"
- 点击"下一步"
选择安装选项:
- 选择"安装数据库软件 - 仅安装"
- 点击"下一步"
系统类:
- 选择"服务器类"
- 点击"下一步"
数据库安装选项:
- 选择"Oracle Real Application Clusters 数据库安装"
- 点击"下一步"
集群节点:
- 验证所有节点都已选择
- 点击"下一步"
安装类型:
- 选择"企业版"
- 点击"下一步"
安装位置:
- 验证 Oracle 基目录和软件位置
- 点击"下一步"
操作系统组:
- 验证操作系统组配置
- 点击"下一步"
先决条件检查:
- 系统会自动检查先决条件
- 解决所有警告和错误
- 点击"下一步"
概要:
- 检查安装配置信息
- 点击"安装"
执行配置脚本:
- 安装过程中会提示执行配置脚本
- 在所有节点上以 root 用户执行脚本:bash
/u01/app/oracle/product/19.0.0/dbhome_1/root.sh
完成:
- 安装完成后,点击"关闭"
数据库创建
启动 Database Configuration Assistant
bash
# 在节点 1 上执行
su - oracle
cd /u01/app/oracle/product/19.0.0/dbhome_1/bin
./dbca创建步骤
数据库操作:
- 选择"创建数据库"
- 点击"下一步"
创建模式:
- 选择"高级配置"
- 点击"下一步"
部署类型:
- 选择"Oracle Real Application Clusters 数据库"
- 选择"管理员管理的数据库"
- 点击"下一步"
数据库标识:
- 输入全局数据库名
- 输入 SID 前缀
- 选择"创建为容器数据库"
- 输入可插拔数据库名称
- 点击"下一步"
存储选项:
- 选择"使用 Oracle 自动存储管理 (ASM)"
- 选择或创建数据文件磁盘组
- 点击"下一步"
快速恢复区:
- 启用快速恢复区
- 选择或创建快速恢复区磁盘组
- 设置大小
- 点击"下一步"
网络配置:
- 选择监听器
- 点击"下一步"
初始化参数:
- 配置内存、进程、字符集等参数
- 点击"下一步"
创建选项:
- 选择"创建数据库"
- 选择"生成数据库创建脚本"
- 点击"下一步"
概要:
- 检查数据库配置信息
- 点击"完成"
创建数据库:
- 系统会自动创建数据库
- 点击"关闭"
安装后配置
集群状态检查
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 配置:
bashsrvctl config scan验证 VIP 配置:
bashsrvctl config nodevip -all
存储配置
ASM 磁盘组
检查 ASM 磁盘组:
bashasmcmd ASMCMD> lsdg ASMCMD> exit创建数据磁盘组:
bashasmcmd ASMCMD> creategroup -t data - redundancy external DATA_DISKGRP DISK '/dev/oracleasm/disks/DISK*' ASMCMD> exit
数据库配置
服务配置
创建服务:
bashsrvctl 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验证服务:
bashsrvctl 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 集群的方法:
准备新节点:
- 配置硬件和操作系统
- 配置网络和存储
- 创建用户和组
扩展 Grid Infrastructure:
- 在现有节点上运行 Grid 安装程序
- 选择"添加节点到集群"
- 按照向导完成安装
扩展数据库软件:
- 在现有节点上运行数据库安装程序
- 选择"添加节点到集群"
- 按照向导完成安装
添加数据库实例:
- 使用 DBCA 添加数据库实例
- 或手动创建实例
更新服务配置:
- 更新服务的首选和可用节点
- 重启服务
