Oracle 26ai RAC双节点集群部署实战:从环境准备到高可用验证

发布时间:2026/7/23 5:48:40
Oracle 26ai RAC双节点集群部署实战:从环境准备到高可用验证 在企业级数据库部署中Oracle RAC集群的高可用性和负载均衡能力一直是核心需求。随着Oracle 26ai版本的发布RAC集群在AI功能集成和性能优化方面有了显著提升。本文将基于Linux环境详细演示Oracle 26ai RAC双节点的完整安装流程涵盖从环境准备到故障切换验证的全过程。1. Oracle 26ai RAC核心概念与部署价值1.1 什么是Oracle RAC集群Oracle Real Application ClustersRAC是Oracle官方提供的集群数据库解决方案允许多个服务器节点共享同一个数据库实例。与传统的单机数据库相比RAC架构具备以下核心优势高可用性单个节点故障时其他节点可自动接管服务实现零停机故障切换负载均衡连接请求可自动分发到不同节点提升整体吞吐量横向扩展可通过增加节点数量线性提升处理能力共享存储所有节点访问同一套数据文件保证数据一致性1.2 Oracle 26ai版本的新特性Oracle 26ai作为重要的版本更新在RAC部署方面引入了多项增强功能AI驱动的性能优化自动学习工作负载模式智能调整缓存和资源分配增强的Cache Fusion节点间数据块传输效率提升减少私网流量简化的集群管理安装向导优化配置步骤更加直观安全增强集成了最新的加密和访问控制机制1.3 双节点RAC的典型应用场景双节点RAC配置是最常见的企业级部署方案适用于核心业务系统的高可用保障读写分离架构中的写节点集群开发测试环境的全功能模拟中小型企业成本效益最优的集群方案2. 环境准备与系统要求2.1 硬件配置要求为确保Oracle 26ai RAC稳定运行建议满足以下硬件配置组件最低要求推荐配置内存16GB/节点32GB/节点CPU4核/节点8核/节点系统盘100GB SSD200GB NVMe共享存储500GB1TB网络千兆以太网万兆以太网关键点两个节点的硬件配置必须完全一致避免因性能差异导致负载不均衡。2.2 操作系统与软件版本本次演示环境基于以下版本操作系统Oracle Linux 8.6内核版本5.4.17-2136.307.3.el8uek.x86_64Oracle软件Oracle Database 26ai Grid Infrastructure Database共享存储ASMAutomatic Storage Management2.3 网络规划与配置RAC集群需要规划三类网络接口每类网络必须独立配置2.3.1 公网Public Network用途客户端连接、管理访问要求静态IPDNS正向反向解析示例配置节点1: 192.168.1.10/24 节点2: 192.168.1.11/242.3.2 私网Private Interconnect用途节点间心跳、Cache Fusion数据同步要求专用交换机延迟1msMTU9000示例配置节点1: 192.168.10.10/24 节点2: 192.168.10.11/242.3.3 存储网络Storage Network用途共享存储访问如iSCSI、NFS要求高带宽低延迟独立VLAN2.4 主机名与解析配置正确的网络解析是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 # SCAN名称需DNS解析或在hosts中添加 192.168.1.15 rac-scan.example.com rac-scan验证命令# 检查主机名配置 hostname hostname -f # 测试网络连通性 ping -c 3 node2 ping -c 3 node2-priv3. 系统预配置与依赖安装3.1 操作系统基础配置3.1.1 关闭防火墙和SELinux# 停止并禁用防火墙 systemctl stop firewalld systemctl disable firewalld # 设置SELinux为permissive模式 setenforce 0 sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config3.1.2 配置内核参数编辑/etc/sysctl.conf文件添加以下参数# Oracle数据库内核参数 fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.shmall 2097152 kernel.shmmax 4294967295 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 -p3.1.3 配置用户资源限制编辑/etc/security/limits.conf文件# Oracle用户资源限制 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 327683.2 创建Oracle用户和组# 创建必要的用户组 groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 backupdba groupadd -g 54325 dgdba groupadd -g 54326 kmdba # 创建Oracle用户 useradd -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba oracle # 设置密码 echo oracle:YourSecurePassword123! | chpasswd # 创建安装目录 mkdir -p /u01/app/grid mkdir -p /u01/app/oracle chown -R oracle:oinstall /u01 chmod -R 775 /u013.3 安装Oracle预安装包# 下载并安装Oracle预安装包 yum install -y oracle-database-preinstall-26ai # 安装其他依赖包 yum install -y binutils.x86_64 yum install -y gcc.x86_64 yum install -y gcc-c.x86_64 yum install -y glibc.x86_64 yum install -y glibc-devel.x86_64 yum install -y libaio.x86_64 yum install -y libaio-devel.x86_644. 共享存储配置与ASM设置4.1 ASM存储方案选择Oracle RAC强烈推荐使用ASM作为共享存储方案原因如下自动负载均衡和条带化镜像保护无需额外硬件在线存储重新配置和扩展与Oracle数据库深度集成4.2 ASM磁盘准备与配置4.2.1 识别共享磁盘确保两个节点都能看到相同的磁盘设备# 在两个节点上分别执行 lsblk fdisk -l # 应该看到相同的共享磁盘如/dev/sdb、/dev/sdc等4.2.2 配置ASM磁盘节点1# 使用fdisk分区 fdisk /dev/sdb # 依次输入n → p → 1 → 回车 → 回车 → w # 标记为ASM磁盘 /usr/sbin/oracleasm createdisk DATA01 /dev/sdb1 /usr/sbin/oracleasm createdisk DATA02 /dev/sdc1 /usr/sbin/oracleasm createdisk FRA01 /dev/sdd1 # 扫描ASM磁盘 /usr/sbin/oracleasm scandisks # 验证磁盘可见性 /usr/sbin/oracleasm listdisks4.2.3 在节点2上验证ASM磁盘# 扫描并列出ASM磁盘 /usr/sbin/oracleasm scandisks /usr/sbin/oracleasm listdisks # 应该看到与节点1相同的磁盘列表DATA01, DATA02, FRA014.3 ASM磁盘组规划建议创建两个独立的磁盘组DATA磁盘组用于数据文件、控制文件、重做日志FRA磁盘组用于快速恢复区归档日志、备份容量规划建议用途最小容量推荐容量数据文件100GB500GB重做日志3×10GB3×50GB快速恢复区200GB1TBOCR/Voting5GB20GB5. Grid Infrastructure安装与配置5.1 下载与准备安装文件从Oracle官网下载Oracle Grid Infrastructure 26ai软件包上传至两个节点的相同位置# 创建软件目录 mkdir -p /u01/app/software/grid chown oracle:oinstall /u01/app/software/grid # 解压安装文件以oracle用户执行 su - oracle cd /u01/app/software/grid unzip linuxx64_26ai_grid_home.zip5.2 配置grid用户环境# 设置grid用户环境变量 echo export ORACLE_BASE/u01/app/grid /home/grid/.bash_profile echo export ORACLE_HOME/u01/app/grid/26ai /home/grid/.bash_profile echo export PATH$ORACLE_HOME/bin:$PATH /home/grid/.bash_profile5.3 运行Grid Infrastructure安装5.3.1 图形化安装推荐初学者# 设置DISPLAY变量如果使用X11转发 export DISPLAYyour_local_ip:0.0 # 启动安装程序 cd /u01/app/software/grid ./gridSetup.sh5.3.2 静默安装推荐生产环境创建响应文件grid_install.rsporacle.install.optionCRS_CONFIG ORACLE_BASE/u01/app/grid ORACLE_HOME/u01/app/grid/26ai INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen oracle.install.asm.OSDBAasmdba oracle.install.asm.OSOPERasmoper oracle.install.asm.OSASMasmadmin oracle.install.crs.config.gpnp.scanNamerac-scan.example.com oracle.install.crs.config.gpnp.scanPort1521 oracle.install.crs.config.clusterNamerac-cluster oracle.install.crs.config.gpnp.configureGNSfalse oracle.install.crs.config.ClusterConfigurationSTANDALONE oracle.install.crs.config.configureAsExtendedClusterfalse oracle.install.crs.config.clusterNodesnode1.example.com:node1-priv.example.com,node2.example.com:node2-priv.example.com oracle.install.crs.config.networkInterfaceListeth0:192.168.1.0:1,eth1:192.168.10.0:2 oracle.install.asm.SYSASMPasswordYourSysasmPass123! oracle.install.asm.diskGroup.nameDATA oracle.install.asm.diskGroup.redundancyEXTERNAL oracle.install.asm.diskGroup.AUSize4 oracle.install.asm.diskGroup.disks/dev/oracleasm/disks/DATA01,/dev/oracleasm/disks/DATA02 oracle.install.asm.diskGroup.diskDiscoveryString/dev/oracleasm/disks/* oracle.install.asm.monitorPasswordYourMonitorPass123!运行静默安装./gridSetup.sh -silent -responseFile /u01/app/software/grid/grid_install.rsp5.4 执行root配置脚本安装完成后按提示在两个节点上分别执行root脚本# 在节点1执行 /u01/app/oraInventory/orainstRoot.sh /u01/app/grid/26ai/root.sh # 在节点2执行 /u01/app/grid/26ai/root.sh5.5 验证Grid Infrastructure安装# 检查集群状态 crsctl check cluster -all # 检查OCR完整性 ocrcheck # 查看集群资源状态 crsctl stat res -t预期输出应显示所有资源均为ONLINE状态。6. Oracle Database软件安装6.1 准备Database安装环境# 创建Oracle用户环境变量 su - oracle echo export ORACLE_BASE/u01/app/oracle .bash_profile echo export ORACLE_HOME/u01/app/oracle/26ai .bash_profile echo export ORACLE_SIDracdb1 .bash_profile # 节点1 echo export PATH$ORACLE_HOME/bin:$PATH .bash_profile echo export LD_LIBRARY_PATH$ORACLE_HOME/lib:$LD_LIBRARY_PATH .bash_profile source .bash_profile在节点2上设置相应的ORACLE_SIDracdb2。6.2 安装Database软件6.2.1 解压安装文件mkdir -p /u01/app/software/database cd /u01/app/software/database unzip linuxx64_26ai_database.zip6.2.2 运行Database安装# 图形化安装 ./runInstaller # 或使用静默安装 ./runInstaller -silent -responseFile /u01/app/software/database/db_install.rsp静默安装响应文件示例oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory SELECTED_LANGUAGESen ORACLE_HOME/u01/app/oracle/26ai ORACLE_BASE/u01/app/oracle oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPoper oracle.install.db.OSBACKUPDBA_GROUPbackupdba oracle.install.db.OSDGDBA_GROUPdgdba oracle.install.db.OSKMDBA_GROUPkmdba oracle.install.db.OSRACDBA_GROUPdba DECLINE_SECURITY_UPDATEStrue6.3 执行Database root脚本# 在两个节点上分别执行 /u01/app/oracle/26ai/root.sh7. 创建RAC数据库实例7.1 使用DBCA创建数据库7.1.1 图形化方式创建# 启动DBCA dbca按照向导步骤配置选择Oracle Real Application Clusters database选择Create a database选择所有节点node1, node2配置数据库标识全局数据库名racdb.example.com选择存储类型ASM指定数据库文件位置DATA配置快速恢复区FRA设置内存管理和字符集参数创建示例Schema可选7.1.2 静默方式创建创建DBCA响应文件dbca.rspresponseFileVersion/oracle/assistants/rspfmt_dbca_response_schema_v26.0.0 gdbNameracdb.example.com sidracdb databaseConfigTypeRAC templateNameGeneral_Purpose.dbc sysPasswordYourSysPassword123! systemPasswordYourSystemPassword123! emConfigurationNONE datafileDestinationDATA recoveryAreaDestinationFRA storageTypeASM diskGroupNameDATA characterSetAL32UTF8 nationalCharacterSetAL16UTF16 registerWithDirServicefalse listenersLISTENER_RACDB variablesORACLE_BASE/u01/app/oracle initParamsundo_tablespaceUNDOTBS1,db_create_online_log_dest_1DATA,db_recovery_file_dest_size100G sampleSchemafalse memoryPercentage40 databaseTypeMULTIPURPOSE automaticMemoryManagementfalse totalMemory8000运行静默创建dbca -silent -createDatabase -responseFile /u01/app/software/database/dbca.rsp7.2 验证数据库创建结果-- 连接到任意节点实例 sqlplus / as sysdba -- 查看实例状态 SELECT instance_name, host_name, status, database_status FROM gv$instance; -- 查看数据库信息 SELECT name, db_unique_name, database_role, open_mode FROM v$database; -- 检查数据文件位置 SELECT name FROM v$datafile WHERE rownum 5;预期输出应显示两个实例均为OPEN状态数据库文件位于ASM磁盘组中。8. 网络服务配置与连接测试8.1 配置SCAN监听器Oracle RAC使用SCANSingle Client Access Name为客户端提供统一的连接端点# 检查SCAN监听器状态 srvctl status scan_listener # 配置SCAN监听器 srvctl config scan_listener8.2 创建数据库服务为应用程序创建专用服务实现负载均衡和故障切换-- 创建负载均衡服务 EXEC DBMS_SERVICE.CREATE_SERVICE( service_name racdb_app, network_name racdb_app, goal DBMS_SERVICE.GOAL_THROUGHPUT, dtp false, aq_ha_notifications true, failover_method BASIC, failover_type SELECT, failover_retries 30, failover_delay 5 ); -- 启动服务 EXEC DBMS_SERVICE.START_SERVICE(racdb_app);8.3 客户端连接测试使用SQL*Plus测试从客户端连接到RAC数据库# 使用EZCONNECT语法连接 sqlplus system/YourSystemPassword123!rac-scan.example.com:1521/racdb.example.com # 或使用TNSNAMES方式 # 在tnsnames.ora中添加 RACDB (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST rac-scan.example.com)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME racdb.example.com) ) )9. 高可用性测试与故障切换验证9.1 节点故障切换测试-- 在节点1上创建测试表 CREATE TABLE failover_test ( id NUMBER, node_name VARCHAR2(50), insert_time TIMESTAMP ); -- 插入测试数据 INSERT INTO failover_test VALUES (1, NODE1, SYSTIMESTAMP); COMMIT; -- 模拟节点1故障在节点1执行 SHUTDOWN IMMEDIATE; -- 在节点2上验证数据可访问性 SELECT * FROM failover_test; -- 重新启动节点1 STARTUP;9.2 负载均衡测试使用多个会话来测试连接请求的负载分发-- 查看当前连接的实例 SELECT sys_context(USERENV, INSTANCE_NAME) as current_instance, sys_context(USERENV, SERVER_HOST) as connected_host FROM dual;9.3 服务故障切换测试# 将服务从一个节点切换到另一个节点 srvctl relocate service -d racdb -s racdb_app -i racdb1 -t racdb2 # 验证服务状态 srvctl status service -d racdb10. 性能优化与监控配置10.1 RAC特定参数优化-- 设置RAC优化参数 ALTER SYSTEM SET cluster_databasetrue SCOPESPFILE SID*; ALTER SYSTEM SET cluster_database_instances2 SCOPESPFILE SID*; ALTER SYSTEM SET instance_number1 SCOPESPFILE SIDracdb1; ALTER SYSTEM SET instance_number2 SCOPESPFILE SIDracdb2; ALTER SYSTEM SET parallel_max_servers64 SCOPEBOTH SID*; -- 重启数据库使参数生效 SHUTDOWN IMMEDIATE; STARTUP;10.2 ASM性能优化-- 优化ASM磁盘组 ALTER DISKGROUP DATA REBALANCE POWER 8; -- 检查ASM性能指标 SELECT group_number, name, total_mb, free_mb, (total_mb - free_mb)/total_mb * 100 as pct_used FROM v$asm_diskgroup;10.3 配置Enterprise Manager监控# 配置EM Express exec DBMS_XDB_CONFIG.SETHTTPSPORT(5500); # 访问EM Express # https://node1.example.com:5500/em11. 日常运维与故障排查11.1 常用集群管理命令# 检查集群状态 crsctl check cluster -all # 查看资源状态 crsctl stat res -t # 启动/停止集群资源 crsctl start resource ora.racdb.db crsctl stop resource ora.racdb.db # 查看集群日志 tail -f /u01/app/grid/diag/crs/hostname -s/crs/trace/alert.log11.2 常见问题排查指南问题现象可能原因解决方案ORA-28547: 连接服务器失败网络配置错误或监听器问题检查监听器状态、网络连通性、tnsnames.ora配置节点被驱逐私网通信中断或延迟过高检查私网连通性、交换机配置、网络绑定ASM磁盘无法识别权限问题或设备路径不一致验证ASM磁盘权限、重新扫描磁盘DBCA创建失败存储空间不足或参数错误检查ASM磁盘组空间、验证响应文件参数11.3 备份与恢复策略# 配置RMAN备份 rman target / # 配置自动备份 CONFIGURE RETENTION POLICY TO REDUNDANCY 2; CONFIGURE BACKUP OPTIMIZATION ON; CONFIGURE DEFAULT DEVICE TYPE TO DISK; CONFIGURE DEVICE TYPE DISK PARALLELISM 4; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT FRA/%U; CONFIGURE CONTROLFILE AUTOBACKUP ON;12. 生产环境最佳实践12.1 安全配置建议-- 启用数据库审计 AUDIT ALL BY ACCESS; -- 配置密码策略 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90 PASSWORD_GRACE_TIME 7 PASSWORD_REUSE_TIME 365 PASSWORD_REUSE_MAX 10 FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 1;12.2 性能监控建议建立定期性能监控机制使用AWR报告分析性能趋势监控Cache Fusion流量和延迟定期检查ASM磁盘组平衡状态设置关键指标告警阈值12.3 容量规划建议定期监控表空间使用率设置自动扩展和空间告警规划归档日志清理策略建立存储容量增长预测模型Oracle 26ai RAC双节点部署为企业级数据库高可用性提供了坚实基础。通过本文的详细步骤您可以成功构建一个稳定、高性能的RAC环境。在实际生产部署中建议结合具体业务需求进行适当的参数调优和监控配置。对于更复杂的多节点扩展或特定业务场景的优化可以参考Oracle官方文档或寻求专业DBA支持。定期进行故障切换演练和性能测试确保RAC集群始终处于最佳运行状态。