Oracle RAC双节点集群部署实战:从环境配置到高可用验证

发布时间:2026/7/23 4:10:09
Oracle RAC双节点集群部署实战:从环境配置到高可用验证 在企业级数据库架构中高可用性和负载均衡是核心需求。Oracle Real Application ClustersRAC作为Oracle官方提供的集群解决方案允许多个节点共享同一数据库实例实现故障自动切换和并发负载均衡。对于需要7x24小时稳定运行的金融、电商、政务等核心业务系统来说RAC架构提供了企业级的数据服务保障。本文将以Oracle 26ai版本在Linux环境下的双节点RAC部署为例详细介绍从环境准备到集群验证的完整流程。通过分步实操演示您将掌握RAC集群的核心配置要点、常见问题排查方法以及生产环境的最佳实践。1. 环境准备与系统配置1.1 硬件与操作系统要求Oracle RAC对硬件环境有严格要求双节点配置需要确保硬件一致性操作系统Oracle Linux 8.x或Red Hat Enterprise Linux 8.x内核版本≥4.18内存每个节点≥16GB建议32GB以上CPU每个节点≥4核心建议8核心以上存储SSD用于系统和日志共享存储用于数据库文件网络千兆或万兆网卡需要三个独立网络接口硬件配置不一致可能导致性能失衡或集群不稳定在生产环境中务必确保节点硬件规格完全相同。1.2 网络规划与配置RAC集群需要三个独立的网络平面每个都有特定用途# /etc/hosts 配置示例 # Public Network - 客户端访问和管理 192.168.1.10 node1.example.com node1 192.168.1.11 node2.example.com node2 # Private Network - 节点间心跳和缓存融合 192.168.10.10 node1-priv.example.com node1-priv 192.168.10.11 node2-priv.example.com node2-priv # Virtual IP - 高可用浮动IP 192.168.1.12 node1-vip.example.com node1-vip 192.168.1.13 node2-vip.example.com node2-vip # SCAN Name - 单客户端访问名称 192.168.1.14 rac-scan.example.com rac-scan 192.168.1.15 rac-scan.example.com rac-scan 192.168.1.16 rac-scan.example.com rac-scan关键点私网必须独立于公网延迟要求1ms。SCAN名称需要DNS轮询解析到3个IP地址如果无DNS可在所有节点的/etc/hosts中配置。1.3 系统参数优化修改内核参数以满足Oracle数据库要求# /etc/sysctl.conf 添加以下参数 fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 4294967296 kernel.shmmax 68719476736 kernel.shmmni 4096 kernel.sem 250 32000 100 128 net.ipv4.ip_local_port_range 9000 65500 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 # 生效配置 sysctl -p设置用户资源限制# /etc/security/limits.conf 添加 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 327681.4 共享存储配置共享存储是RAC架构的核心推荐使用ASMAutomatic Storage Management# 在所有节点识别共享磁盘 ls -l /dev/sd* # 使用udev规则确保磁盘设备名一致 # /etc/udev/rules.d/99-oracle-asmdevices.rules KERNELsd*, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id -g -u -d /dev/$name, RESULT3600507680c80847a00000000000010a5, SYMLINKoracleasm/disk01, OWNERoracle, GROUPdba, MODE06602. Oracle Grid Infrastructure安装2.1 软件依赖安装安装必要的软件包# Oracle Linux 8 预安装包 dnf install -y oracle-database-preinstall-26ai dnf install -y kmod-oracleasm dnf install -y oracleasm-support # 其他必要工具 dnf install -y binutils.x86_64 dnf install -y gcc.x86_64 dnf install -y gcc-c.x86_64 dnf install -y glibc.x86_642.2 创建Oracle用户和组统一创建Oracle管理用户groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 asmdba groupadd -g 54325 asmoper groupadd -g 54326 asmadmin useradd -u 54321 -g oinstall -G dba,oper,asmdba,asmadmin oracle echo oracle:YourSecurePassword123! | chpasswd # 创建目录结构 mkdir -p /u01/app/grid mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01 chmod -R 775 /u012.3 环境变量配置配置Oracle用户环境变量# oracle用户 .bash_profile 添加 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_BASE/product/26ai/dbhome_1 export ORACLE_SIDracdb1 # 节点1为racdb1节点2为racdb2 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/usr/lib export CLASSPATH$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib # Grid环境变量 export GRID_HOME/u01/app/grid export PATH$GRID_HOME/bin:$PATH2.4 安装Grid Infrastructure使用图形界面或静默模式安装GI# 解压软件包 unzip LINUX.X64_260000_grid_home.zip -d /u01/app/grid # 设置权限 chown -R oracle:oinstall /u01/app/grid chmod -R 775 /u01/app/grid # 切换到oracle用户运行安装 su - oracle cd /u01/app/grid ./gridSetup.sh图形界面安装关键步骤配置集群类型选择配置Oracle Grid Infrastructure for a Cluster配置集群网络指定公网、私网接口选择存储类型选择ASM创建磁盘组为OCR和Voting Disk创建专用磁盘组指定SCAN名称输入rac-scan.example.com管理选项根据需要配置EMEnterprise Manager静默安装响应文件示例./gridSetup.sh -silent -responseFile /tmp/grid_install.rsp \ -ignorePrereqFailure \ -waitforcompletion安装完成后执行root脚本# 在两个节点分别执行 /u01/app/grid/root.sh2.5 验证集群状态检查集群组件运行状态# 检查集群服务 crsctl check cluster -all # 检查集群资源 crsctl stat res -t # 验证ASM实例 asmcmd -p ASMCMD lsdg ASMCMD lsctl预期输出显示所有服务状态为ONLINEASM磁盘组正常挂载。3. Oracle Database软件安装3.1 安装数据库软件在两个节点安装Oracle Database软件# 解压软件包 unzip LINUX.X64_260000_db_home.zip -d /u01/app/oracle/product/26ai/dbhome_1 # 运行安装程序 cd /u01/app/oracle/product/26ai/dbhome_1 ./runInstaller安装选项配置安装选项选择仅安装软件网格安装选项选择Oracle Real Application Clusters数据库安装节点选择选择所有参与集群的节点安装位置确认ORACLE_HOME路径权限组选择之前创建的dba、oper等组3.2 创建ASM磁盘组为数据库文件创建专用磁盘组-- 使用asmca图形工具或sqlplus命令 CREATE DISKGROUP DATA NORMAL REDUNDANCY FAILGROUP controller1 DISK /dev/oracleasm/disk01 NAME data01 FAILGROUP controller2 DISK /dev/oracleasm/disk02 NAME data02 ATTRIBUTE au_size4M, compatible.asm26.0.0.0.0, compatible.rdbms26.0.0.0.0;3.3 验证软件安装检查数据库软件安装结果# 检查Oracle Home echo $ORACLE_HOME # 验证数据库二进制文件 which sqlplus sqlplus -version # 检查集群注册 srvctl config database -d racdb4. 创建RAC数据库4.1 使用DBCA创建数据库启动数据库配置助手dbca配置步骤选择操作选择创建数据库创建模式选择高级配置数据库类型选择Oracle Real Application Clusters数据库存储类型选择自动存储管理(ASM)数据库标识全局数据库名racdb.example.com配置选项设置内存、进程、字符集等参数管理选项配置备份、密码管理等创建选项选择创建数据库4.2 关键参数配置数据库创建过程中的重要参数-- 内存管理根据实际内存调整 MEMORY_TARGET 8G SGA_TARGET 6G PGA_AGGREGATE_TARGET 2G -- 进程和会话 PROCESSES 1000 SESSIONS 1500 -- 字符集根据业务需求选择 NLS_CHARACTERSET AL32UTF8 NLS_NCHAR_CHARACTERSET AL16UTF16 -- 集群参数 CLUSTER_DATABASE TRUE CLUSTER_DATABASE_INSTANCES 24.3 数据库服务配置创建数据库服务以实现负载均衡srvctl add service -d racdb -s olap_service -r racdb1,racdb2 -P BASIC srvctl start service -d racdb -s olap_service5. 集群功能验证5.1 基础功能测试验证RAC核心功能正常运行-- 连接到任意节点实例 sqlplus sys/YourPasswordnode1-vip:1521/racdb as sysdba -- 查看集群实例状态 SELECT instance_name, host_name, status, database_status FROM gv$instance; -- 验证缓存融合功能 SELECT inst_id, name, value FROM gv$sysstat WHERE name LIKE %gc% ORDER BY inst_id, name;5.2 高可用性测试模拟节点故障验证自动切换# 在节点1上停止实例 srvctl stop instance -d racdb -i racdb1 # 在节点2上验证连接和查询 sqlplus sys/YourPasswordnode2-vip:1521/racdb as sysdba SELECT * FROM v$session WHERE username SYS; # 重新启动节点1实例 srvctl start instance -d racdb -i racdb15.3 负载均衡测试验证连接请求在节点间分发# 使用SCAN名称连接观察连接分布 for i in {1..10}; do sqlplus sys/YourPasswordrac-scan:1521/racdb as sysdba EOF SELECT instance_name FROM v\$instance; exit; EOF done6. 性能优化配置6.1 网络优化优化私网通信性能# 启用Jumbo Frames ifconfig eth1 mtu 9000 # 配置网络缓冲区 echo net.core.rmem_max 4194304 /etc/sysctl.conf echo net.core.wmem_max 1044304 /etc/sysctl.conf sysctl -p6.2 ASM性能优化配置ASM磁盘组优化I/O性能-- 调整ASM磁盘组参数 ALTER DISKGROUP DATA SET ATTRIBUTE au_size 4M; ALTER DISKGROUP DATA SET ATTRIBUTE cell.smart_scan_capable TRUE; -- 监控ASM性能 SELECT group_number, name, total_mb, free_mb, round((total_mb-free_mb)*100/total_mb,2) pct_used FROM v$asm_diskgroup;6.3 数据库参数优化针对RAC环境优化数据库参数-- 集群相关参数 ALTER SYSTEM SET cluster_database TRUE SCOPESPFILE; ALTER SYSTEM SET cluster_interconnects 192.168.10.0 SCOPESPFILE; -- 缓存融合优化 ALTER SYSTEM SET gcs_server_processes 4 SCOPESPFILE; ALTER SYSTEM SET lm_locks 20000 SCOPESPFILE; -- 实例恢复优化 ALTER SYSTEM SET instance_number 1 SCOPESPFILE SIDracdb1; ALTER SYSTEM SET instance_number 2 SCOPESPFILE SIDracdb2;7. 常见问题排查7.1 集群通信问题节点间通信故障的排查步骤# 检查私网连通性 ping -c 5 node2-priv # 测试大包传输检查MTU配置 ping -c 3 -s 8972 node2-priv # 检查集群心跳 crsctl check cluster -all # 查看集群日志 tail -f /u01/app/grid/diag/crs/hostname -s/crs/trace/alert.log7.2 ASM磁盘识别问题共享存储访问异常的排查# 检查磁盘权限 ls -l /dev/oracleasm/* # 验证ASM磁盘发现 oracleasm listdisks # 检查ASM实例状态 srvctl status asm -n node1 # 查看ASM告警日志 tail -f /u01/app/grid/diag/asm/asm/ASM1/trace/alert_ASM1.log7.3 数据库实例启动失败实例启动问题的诊断方法# 检查实例状态 srvctl status database -d racdb # 查看详细错误信息 srvctl start database -d racdb -o mount -v # 检查数据库告警日志 tail -f /u01/app/oracle/diag/rdbms/racdb/racdb1/trace/alert_racdb1.log7.4 常见错误代码及解决方案错误代码现象描述可能原因解决方案ORA-29701无法连接到集群同步服务集群服务未启动或网络不通检查crsctl status验证网络配置ORA-15077无法找到ASM磁盘组磁盘权限错误或路径不正确检查磁盘权限验证asm_diskstring参数ORA-12541监听程序无法启动端口被占用或配置错误检查监听器配置验证端口可用性ORA-0034控制文件无法访问存储路径错误或权限问题验证控制文件路径检查ASM磁盘组状态8. 生产环境最佳实践8.1 监控与维护建立完善的监控体系# 创建监控脚本 #!/bin/bash # rac_health_check.sh echo 集群状态检查 crsctl check cluster -all echo 资源状态检查 crsctl stat res -t echo 数据库实例状态 srvctl status database -d racdb echo ASM磁盘组空间 asmcmd lsdg8.2 备份策略制定RAC环境备份方案-- RMAN备份配置 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE BACKUP OPTIMIZATION ON; CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT /backup/racdb/%U; -- 全量备份脚本 RUN { ALLOCATE CHANNEL ch1 TYPE DISK CONNECT sys/Passwordracdb1; ALLOCATE CHANNEL ch2 TYPE DISK CONNECT sys/Passwordracdb2; BACKUP DATABASE PLUS ARCHIVELOG; BACKUP CURRENT CONTROLFILE; }8.3 安全加固加强RAC环境安全性-- 启用审计 AUDIT ALL BY ACCESS; -- 加强密码策略 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90; -- 限制网络访问 -- 在sqlnet.ora中添加 TCP.VALIDNODE_CHECKING YES TCP.INVITED_NODES (192.168.1.0/24, node1, node2)8.4 容量规划建议定期评估系统容量资源类型监控指标预警阈值扩容建议存储空间ASM磁盘组使用率80%提前规划存储扩容内存使用SGAPGA使用率85%调整内存参数或增加物理内存CPU负载平均负载核心数×0.7优化SQL或增加CPU网络带宽私网流量带宽的70%升级网络或优化应用Oracle RAC双节点集群的部署是一个系统工程需要精细的规划、严格的配置和持续的维护。通过本文的步骤指南您可以建立起一个稳定可靠的生产环境。在实际运维中建议建立完整的监控告警体系定期进行故障演练确保在真实故障发生时能够快速恢复业务。