尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Oracle 19c RAC集群搭建实战:从规划部署到避坑指南

Oracle 19c RAC集群搭建实战:从规划部署到避坑指南 1. 项目缘起为什么今天还要折腾Oracle RAC如果你在运维或者DBA的圈子里待过几年听到“Oracle RAC”这个词第一反应可能不是兴奋而是有点头大。确实在云原生、分布式数据库大行其道的今天再去手动搭建一套传统的Oracle RAC集群听起来像是个“复古”的手艺活。成本高、步骤繁琐、坑点多是它留给很多人的印象。那我为什么还要花时间整理这篇超详细的搭建实录呢原因很现实存量系统的生命力往往超乎想象。直到今天在金融、电信、大型制造业等核心交易场景中Oracle RAC因其极高的可用性、可扩展性和对传统应用的完美兼容性依然是不可动摇的基石。很多关键业务系统就运行在它上面而熟悉这套技术栈的资深工程师正在减少。这意味着掌握RAC的规划、搭建、排错能力不仅是一份保值的手艺更是在处理历史遗留系统或特定合规需求时的“硬通货”。这次我们聚焦于Oracle 19c和RACReal Application Clusters。19c是Oracle长期支持版本代表了当前稳定性的标杆而RAC则是实现Oracle数据库高可用和负载均衡的核心架构。我将以一个典型的双节点RAC搭建为例带你走完全程。这不仅仅是一份操作手册我会重点分享那些官方文档语焉不详的“暗坑”以及我在多次搭建中总结出的“一次成功”心法。无论你是需要完成部署任务的工程师还是想深入理解Oracle高可用架构的学习者这篇内容都能提供直接的参考。2. 搭建前的灵魂拷问硬件、网络与存储规划在敲下第一条安装命令之前失败的种子往往已经埋下。RAC对底层基础设施的要求极为苛刻规划阶段的任何疏漏都会在安装或后期运行时被无限放大。这一章我们抛开软件先打好地基。2.1 硬件与操作系统准备对于测试或学习环境虚拟机是首选。但即便是虚拟机配置也必须模拟生产逻辑。节点配置至少两个节点Node1, Node2。每个节点建议4核CPU、8GB内存最低、100GB系统盘。关键点两个节点的硬件配置特别是CPU数量和内存大小必须完全一致否则Oracle集群软件Grid Infrastructure在启动时可能会因资源不对称而产生警告甚至错误。操作系统以Oracle Linux 7.9为例这是Oracle官方深度优化和推荐的版本能最大程度避免兼容性问题。确保两个节点使用完全相同的系统版本和内核。用户与组这是第一个容易混乱的地方。你需要创建两个主要的操作系统用户和组grid用户用于安装和管理Grid Infrastructure集群软件。主组是oinstall附加组包括asmadmin,asmdba,asmoper。oracle用户用于安装和管理Oracle数据库软件。主组是oinstall附加组是dba。重要经验在两个节点上这些用户的uid、gid以及各组的gid必须完全相同最好在第一个节点创建好后将/etc/passwd,/etc/group,/etc/shadow中相关条目直接拷贝到第二个节点而不是分别创建。2.2 网络规划心跳、业务与SCANRAC集群严重依赖网络通常需要至少两张网卡规划不当是安装失败的主要元凶。网络接口规划Public IP用于对外提供数据库服务客户端连接。网络需可路由。Private IP用于节点间心跳Interconnect通信同步缓存融合Cache Fusion数据。这是RAC性能的生命线必须使用万兆或更高速率的专用网络并且与公网隔离。在虚拟机中可以创建一块“内部网络”或“主机专用”的虚拟网卡来实现。虚拟IPVIP与SCAN这是RAC高可用的核心机制。VIP每个节点一个。当某个节点宕机其VIP会漂移到存活节点使客户端连接能快速重定向避免漫长的TCP超时等待。SCANSingle Client Access Name一个域名对应三个IP地址由DNS轮询解析。客户端只需连接SCAN集群会将其负载均衡到某个节点的VIP上。这解耦了客户端连接和具体节点是Oracle推荐的方式。实操配置清单 你需要准备一份类似下面的表格并在每个节点的/etc/hosts文件中仅配置Public IP和Private IP的映射。VIP和SCAN的映射关系应由DNS或GNSGrid Naming Service提供绝对不要写在hosts文件里否则会破坏高可用逻辑。主机名IP类型示例IP用途/说明node1Public192.168.1.101节点1公网node2Public192.168.1.102节点2公网node1-privPrivate10.0.0.1节点1心跳网络隔离node2-privPrivate10.0.0.2节点2心跳网络隔离node1-vipVirtual IP192.168.1.111节点1虚拟IP由GI管理node2-vipVirtual IP192.168.1.112节点2虚拟IP由GI管理rac-scanSCAN192.168.1.121/122/123单客户端访问名DNS解析注意关于SCAN一个常见的误解是必须配三个IP。实际上单IP也能工作但失去了负载均衡和高可用冗余的意义。在生产环境中三个IP是标准配置。2.3 共享存储规划ASM的利与弊RAC的所有节点必须能同时读写同一份数据库文件因此共享存储是必须的。Oracle强烈推荐使用ASMAutomatic Storage Management来管理共享存储。为什么是ASM它相当于一个专为Oracle数据库设计的卷管理器文件系统能自动实现条带化、镜像动态扩展存储并且与GI深度集成管理方便。相比第三方集群文件系统ASM的兼容性和性能通常更优。共享存储的实现在物理环境可能是FC SAN或iSCSI在虚拟机环境如VMware可以使用共享虚拟磁盘Shared VMDK或模拟iSCSI。关键点这些共享磁盘我们称为ASM磁盘必须能被所有节点同时识别。通常需要配置多路径软件如multipath来确保路径冗余。磁盘准备至少需要三个共享磁盘或LUNOCR/Voting Disk用于存储集群注册表和投票盘记录集群成员和状态。必须高可用通常配置外部冗余至少2块盘或正常冗余至少3块盘。这是集群的“大脑”绝对不能丢。DATA Disk Group用于存放数据库文件数据文件、控制文件、重做日志等。RECO Disk Group用于快速恢复区FRA存放归档日志、备份等。一个关键避坑点在Linux系统上用于ASM的磁盘不能有分区表应该使用裸磁盘如/dev/sdb或通过udev规则绑定的持久化设备名如/dev/oracleasm/disks/OCR1。使用前用dd或wipefs命令清理磁盘头信息。3. 步步为营Grid Infrastructure安装与配置详解Grid InfrastructureGI是RAC的基石它管理着集群资源网络、存储、数据库实例。安装GI是整个过程中最复杂、最容易出错的一环。3.1 前置条件检查runcluvfy不是摆设Oracle提供了一个强大的集群验证工具cluvfy。在安装前务必在两个节点上以grid用户身份运行预检查。# 切换到grid用户 su - grid # 执行集群环境预检查指定节点列表和SCAN名称 cd /path/to/grid/install ./runcluvfy.sh stage -pre crsinst -n node1,node2 -fixup -verbose这个命令会检查数十项内容内核参数、软件包、用户组、网络配置、NTP时间同步、SSH互信、存储持久化命名等。不要忽略任何FAILURE失败项WARNING警告项也需评估。常见的FAILURE项包括包缺失根据输出提示用yum install安装缺少的RPM包。内核参数不符按照提示修改/etc/sysctl.conf并执行sysctl -p生效。时间不同步节点间时间差必须控制在1秒以内最好配置统一的NTP服务器。SSH互信未建立确保grid和oracle用户都能在节点间免密SSH登录。使用ssh node1 date和ssh node2 date反复测试。经验之谈官方文档列出的包和参数是最低要求。在实际生产中我习惯安装比文档要求更新的版本并适当调大一些内核参数如shmmax,semmsl为后续运行留足余量。cluvfy的-fixup参数能生成修复脚本但建议手动核对后执行理解每项修改的意义。3.2 安装Grid Infrastructure图形化与静默安装的选择你可以使用图形化界面需要配置X11转发或VNC但对于服务器环境静默安装更可靠、可重复。解压软件将19c GI安装包上传至grid用户的家目录如/home/grid解压。准备响应文件在解压目录的response文件夹中有模板grid_install.rsp。复制一份进行修改。以下是关键参数示例oracle.install.responseFileVersion/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0 INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/grid oracle.install.optionCRS_CONFIG ORACLE_HOME/u01/app/19.0.0/grid oracle.install.asm.OSDBAasmdba oracle.install.asm.OSOPERasmoper oracle.install.asm.OSASMasmadmin oracle.install.crs.config.gpnp.scanNamerac-scan 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.configureAsmNetworkPoolfalse oracle.install.asm.SYSASMPasswordYourSysasmPassword123 oracle.install.asm.diskGroup.nameOCR oracle.install.asm.diskGroup.redundancyEXTERNAL oracle.install.asm.diskGroup.AUSize4 oracle.install.asm.diskGroup.disks/dev/oracleasm/disks/OCR1,/dev/oracleasm/disks/OCR2 oracle.install.asm.diskGroup.diskDiscoveryString/dev/oracleasm/disks/* oracle.install.crs.config.storageOptionASM_STORAGE重点关注集群名、SCAN名、ASM磁盘组这里先配置OCR/Voting、ASM管理员密码。执行静默安装cd /path/to/grid/install ./gridSetup.sh -silent -responseFile /home/grid/grid_install.rsp -ignorePrereqFailure-ignorePrereqFailure参数需谨慎使用仅当确认某些检查可忽略时添加。安装过程会持续较长时间输出日志在$ORACLE_BASE/oraInventory/logs下。执行root脚本安装程序最后会提示在两个节点上依次执行root.sh脚本。这是最关键的一步必须严格按照提示顺序执行。先在节点1执行等待其完全成功输出“Successfully configured Oracle Grid Infrastructure”再到节点2执行。执行过程中会配置守护进程、初始化ASM实例等。3.3 安装后配置创建ASM磁盘组与验证集群GI安装成功后集群服务crsctl管理的资源应该已经启动。我们还需要为数据文件创建额外的ASM磁盘组。使用ASMCA创建磁盘组以grid用户登录启动ASM配置助手asmca。在图形界面中创建DATA和RECO磁盘组选择适当的冗余级别如外部冗余用于测试正常冗余用于生产和分配单元大小通常1MB。验证集群状态使用crsctl命令检查集群健康度。# 检查集群服务状态 crsctl stat res -t # 检查集群节点状态 crsctl status cluster -all # 检查SCAN监听状态 srvctl status scan srvctl status scan_listener # 检查ASM实例状态 srvctl status asm -detail所有资源状态应为ONLINE。如果出现OFFLINE或UNKNOWN需要查看对应资源的告警日志通常在$GRID_HOME/log/{nodename}目录下进行排查。4. 数据库软件的安装与RAC数据库创建GI搭建好后就像盖好了房子和基础设施。接下来我们要在里面安装“家具”数据库软件并布置“房间”创建数据库。4.1 安装Oracle数据库软件此步骤在集群的一个节点上执行即可安装程序会自动将软件拷贝到其他节点。以oracle用户操作确保环境变量ORACLE_BASE,ORACLE_HOME例如/u01/app/oracle/product/19.0.0/dbhome_1已正确设置。运行安装程序同样可以使用静默安装。编辑数据库安装的响应文件db_install.rsp关键参数如下oracle.install.responseFileVersion/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.optionINSTALL_DB_SWONLY UNIX_GROUP_NAMEoinstall INVENTORY_LOCATION/u01/app/oraInventory ORACLE_BASE/u01/app/oracle ORACLE_HOME/u01/app/oracle/product/19.0.0/dbhome_1 oracle.install.db.InstallEditionEE oracle.install.db.OSDBA_GROUPdba oracle.install.db.OSOPER_GROUPdba oracle.install.db.OSBACKUPDBA_GROUPdba oracle.install.db.OSDGDBA_GROUPdba oracle.install.db.OSKMDBA_GROUPdba oracle.install.db.OSRACDBA_GROUPdba SELECTED_LANGUAGESen,zh_CN oracle.install.db.rac.configurationTypeCRS_CONFIG oracle.install.db.CLUSTER_NODESnode1,node2 oracle.install.db.isRACOneInstallfalse注意oracle.install.optionINSTALL_DB_SWONLY我们选择“仅安装软件”。执行安装并运行root脚本运行./runInstaller -silent -responseFile ...。安装结束后同样需要按提示在两个节点上运行root.sh这次是数据库软件的root脚本。4.2 使用DBCA创建RAC数据库现在我们有了GI和数据库软件可以创建真正的RAC数据库了。使用DBCADatabase Configuration Assistant是最佳方式。启动DBCA在图形界面或静默模式下选择“创建数据库”。关键配置步骤配置类型选择“高级配置”。数据库类型通常选“一般用途或事务处理”。存储位置这里至关重要。选择“使用ASM管理文件”。数据库区域选择之前创建的DATA磁盘组快速恢复区选择RECO。数据库标识指定全局数据库名如racdb和SID前缀如racdb实例会自动命名为racdb1,racdb2。管理选项取消勾选“配置Enterprise Manager”因为EM 13c后部署复杂测试环境可跳过。数据库凭证为SYS, SYSTEM等管理员用户设置统一密码。网络配置确认监听器选择的是LISTENER_SCAN由GI管理确保数据库服务会注册到SCAN监听上。初始化参数内存管理如启用AMM、字符集推荐AL32UTF8、连接模式专用服务器等按需调整。创建选项选择“创建数据库”并“生成数据库创建脚本”。我强烈建议生成脚本这样你不仅能看到DBCA背后做了什么还能在失败时复用或手动调整脚本。执行创建DBCA会开始创建数据库过程包括复制数据文件、创建数据字典、启动实例等。这需要较长时间。创建成功后会在每个节点上启动一个数据库实例。4.3 验证数据库与集群集成创建完成后进行最终验证# 1. 检查数据库实例状态从任一节点 srvctl status database -d racdb # 2. 检查数据库服务是否注册到监听特别是SCAN监听 srvctl status service -d racdb lsnrctl status LISTENER_SCAN1 # 查看SCAN监听状态应能看到racdb服务 # 3. 连接到数据库确认是RAC环境 sqlplus sys/YourPasswordrac-scan:1521/racdb as sysdba SELECT instance_name, host_name, thread#, status FROM gv$instance;这条SELECT语句应该返回两行显示两个实例都处于OPEN状态证明RAC数据库搭建成功。5. 避坑指南与进阶思考从搭建成功到稳定运行走到这里一个基本的RAC集群已经搭建完成。但要让其稳定运行还需要注意以下关键点这些往往是官方手册不会强调的“血泪经验”。5.1 安装过程中常见的“拦路虎”及排查思路问题执行root.sh时卡住或报错。排查首先查看$GRID_HOME/cfgtoollogs/crsconfig目录下对应时间点的rootcrs_.log日志。常见原因有OCR/Voting磁盘权限不对、主机名解析错误特别是/etc/hosts配置混乱、空间不足、之前有残留的Oracle进程或文件未清理干净。解决根据日志提示解决。最彻底的方法是在确认无重要数据后使用deinstall工具彻底清理所有节点然后从修改/etc/hosts、重新配置共享磁盘开始重来。问题集群服务启动后资源状态反复OFFLINE/ONLINE。排查使用crsctl stat res -t -init查看初始化资源状态。重点检查ora.net1.network,ora.asm等核心资源。查看$GRID_HOME/log/{nodename}/agent/ohasd/oraagent_grid/或…/cssd/目录下的日志。可能原因网络心跳不稳定私网延迟或丢包、时间不同步漂移超过允许范围、共享存储路径不稳定多路径配置问题。问题DBCA创建数据库失败提示ASM空间不足或权限问题。排查确认oracle用户是否在asmdba组中。以grid用户登录ASM实例检查DATA磁盘组的可用空间SQL SELECT name, total_mb, free_mb FROM v$asm_diskgroup;。解决确保oracle用户属于asmdba组。如果空间不足向磁盘组添加新磁盘。5.2 日常运维的关键检查点搭建只是开始日常运维决定稳定性。监控集群日志养成定期查看$GRID_HOME/log/{nodename}/alert{hostname}.log和数据库告警日志$ORACLE_BASE/diag/rdbms/{dbname}/{instancename}/trace/alert_.log的习惯。很多潜在问题会先在日志里预警。备份OCR和Voting Disk这是集群的元数据必须备份。使用ocrconfig -manualbackup查看自动备份或使用ocrconfig -export进行手动导出备份。Voting Disk的备份通常在ASM磁盘组镜像中体现但了解其位置crsctl query css votedisk也很重要。测试故障转移定期模拟节点故障如重启服务器观察VIP、SCAN监听、数据库服务是否能正确漂移应用连接是否能快速恢复。这是检验RAC高可用能力的唯一标准。性能关注点RAC的性能核心在于缓存融合Cache Fusion和私网互联Interconnect。监控gv$cache_transfer视图了解块传输情况确保私网带宽充足、延迟低。不合理的应用设计如热点块争用在RAC中会被放大。5.3 关于云与未来的思考虽然本文详细讲解了传统部署但必须看到趋势。Oracle Cloud Infrastructure (OCI) 提供了完全托管的Oracle RAC服务Exadata Cloud Service将硬件配置、集群部署、打补丁、备份等繁重工作全部托管。对于新建系统这是一个值得认真考虑的选项可以将团队精力聚焦于数据模型和应用优化。然而无论是本地部署还是云端理解RAC的底层架构——包括其如何协调多节点、管理共享资源、处理故障转移——这份知识对于诊断复杂问题、进行容量规划和性能调优依然是不可或缺的。这份“手艺”在可预见的未来依然有其独特的价值。手动搭建一次RAC就像亲手组装一台精密机械过程中遇到的每一个错误和解决它的思路都会让你对这套系统的理解远超阅读文档。
返回列表