资讯详情

Oracle 19C RAC 在 Linux 7.9 上的安装部署与避坑指南

📅 2026/9/25 16:01:23 | 华诺云谱 👁 阅读
Oracle 19C RAC 在 Linux 7.9 上的安装部署与避坑指南
简介这份PDF文档面向需要在Linux平台搭建Oracle高可用集群的DBA与运维工程师系统讲解Oracle Linux 7.9环境下Oracle 19C RAC集群的完整安装部署流程。内容涵盖系统规划、主机与网络规划、VMware Workstation Pro 16.1虚拟环境搭建、防火墙与内核参数配置、用户与目录权限设置、YUM源与NTP时间同步、iSCSI共享存储配置以及Grid Infrastructure、ASM磁盘组和数据库实例的安装创建并附有集群健康检查与日常维护思路。资源包共1个PDF文件大小约10.13MB目录结构完整、章节划分清晰便于按模块查阅与对照实操。目前已有600余人学习下载适合具备一定Linux与Oracle基础、希望掌握RAC集群部署与排错方法的技术人员参考。1. 从一份 PDF 说起Oracle 19C RAC 在 Linux 7.9 上到底难在哪很多人拿到「在 Linux 7.9 环境下 Oracle 19C RAC 集群详细安装部署文档.pdf」这类资料第一反应是照着敲命令结果卡在 Grid 基础设施安装前的检查环节或者节点间互信没配好root 脚本跑一半报错。Oracle 19C RAC 不是单实例加个集群外壳那么简单它要求两个及以上节点共享存储、时间同步、网络心跳、内核参数、用户资源限制全部对齐任何一处偏差都会让集群件启动失败。Linux 7.9 作为 RHEL 7 系最后一个稳定小版本内核 3.10 与 systemd 的搭配对 Oracle 19C 是官方认证组合但默认配置离 RAC 要求差得很远。这篇内容面向需要从零搭建测试或生产 RAC 的 DBA 和运维把安装前准备、Grid 安装、数据库软件部署、建库和验证串成一条可复现的路径同时把那些文档里一笔带过、实际会翻车的点讲透。如果你正在搜 oracle19c rac 安装包或者 oracle rac 集群原理先别急着下载把下面这些前置条件理清后面能省掉大量重装时间。2. 安装前的硬性条件从虚拟机到共享磁盘的落地配置2.1 节点规划与 Linux 7.9 最小化安装要点RAC 最少两个节点测试环境我一般用两台虚拟机每台 4 核 8G 起步生产按实际负载加。Linux 7.9 安装时选「Server with GUI」或最小化都行但必须确保openssh-server、chrony、firewalld管理工具在。安装完先做三件事改主机名、配静态 IP、写 hosts。主机名不要用默认 localhost两个节点分别设为rac1和rac2后面 Grid 安装会直接读 hostname 做节点注册。# 两个节点分别执行rac1 示例 hostnamectl set-hostname rac1 # 编辑网卡配置RHEL7 用 nmcli 或改 ifcfg nmcli con mod ens33 ipv4.addresses 192.168.56.11/24 nmcli con mod ens33 ipv4.gateway 192.168.56.1 nmcli con mod ens33 ipv4.dns 114.114.114.114 nmcli con mod ens33 ipv4.method manual nmcli con up ens33逻辑说明静态 IP 是 RAC 的底线DHCP 会导致 VIP 和 SCAN 注册混乱。参数上ipv4.addresses写公网地址两个节点要在同一网段。改完用ip addr确认别只看配置文件。hosts 文件两个节点必须完全一致包含公网、私网、VIP、SCAN 四类地址。私网建议单独加一块网卡不要和公网共用否则心跳流量和业务流量抢带宽集群会误判节点故障。# /etc/hosts 两个节点内容一致 192.168.56.11 rac1 192.168.56.12 rac2 192.168.56.11 rac1-priv 192.168.56.12 rac2-priv 192.168.56.21 rac1-vip 192.168.56.22 rac2-vip 192.168.56.30 rac-scanVIP 必须和公网同网段且未被占用SCAN 建议配 1 个地址用于测试生产按 3 个配。配完用ping两节点互测rac-scan此时 ping 不通是正常的等 Grid 起来才会响应。2.2 共享存储ASM 磁盘组怎么划、权限怎么给RAC 必须用共享存储测试环境常用 VMware 共享磁盘或 iSCSI。每块共享盘在两个节点上看到的设备名要一致常见做法是用/dev/sdb、/dev/sdc这种裸设备或者用udev规则绑定固定名称。Oracle 19C 的 ASM 支持直接使用块设备但权限必须归grid用户和asmadmin组。# 两个节点都执行创建 asmadmin 组和 grid 用户 groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54324 asmadmin groupadd -g 54325 asmdba groupadd -g 54326 asmoper useradd -u 54321 -g oinstall -G dba,asmdba,asmadmin,asmoper grid useradd -u 54322 -g oinstall -G dba,oper,asmdba oracle参数说明oinstall是 Oracle 清单组dba管数据库asmadmin管 ASM 实例asmdba让 oracle 用户能访问 ASM 磁盘。UID/GID 两个节点必须一致否则 Grid 安装会报用户不匹配。共享盘权限用 udev 规则固定避免重启后设备名漂移。下面以/dev/sdb和/dev/sdc为例实际用scsi_id查 WWID 替换。# /etc/udev/rules.d/99-oracle-asmdevices.rules KERNELsd?1, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id -g -u -d /dev/$parent, RESULT36000c29xxxxxxxx, SYMLINKasm-disk1, OWNERgrid, GROUPasmadmin, MODE0660逻辑说明RESULT是磁盘 WWID用scsi_id -g -u -d /dev/sdb获取。SYMLINK生成/dev/asm-disk1固定路径Grid 安装时直接选这个路径。改完执行udevadm control --reload-rules udevadm trigger然后ls -l /dev/asm-*确认属主是 grid:asmadmin。2.3 内核参数与用户资源限制别等安装时被 check 拦下Oracle 19C 对内核参数有明确要求Linux 7.9 默认值偏小。两个节点都要改/etc/sysctl.conf改完sysctl -p生效。# /etc/sysctl.conf 追加 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参数说明kernel.shmmax建议设为物理内存一半或更大测试机 8G 内存设 4294967295 够用。kernel.sem四个值分别是 SEMMSL、SEMMNS、SEMOPM、SEMMNIRAC 下信号量需求比单实例高别照搬单实例模板。用户资源限制改/etc/security/limits.confgrid 和 oracle 都要加。grid soft nofile 1024 grid hard nofile 65536 grid soft nproc 16384 grid hard nproc 16384 grid soft stack 10240 grid hard stack 32768 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768改完用su - grid后ulimit -a确认。注意 limits.conf 对 systemd 服务不生效如果后面用 systemd 管理资源还要改/etc/systemd/system.conf的DefaultLimitNOFILE。2.4 时间同步与互信chrony 和 SSH 免密RAC 节点时间偏差超过阈值会导致集群件重启用 chrony 同步。两个节点都装chrony一个指向外部源另一个指向第一个节点。# rac1 作为时间源/etc/chrony.conf 加 allow 192.168.56.0/24 local stratum 10 # rac2 指向 rac1 server rac1 iburst启动systemctl enable --now chronyd用chronyc sources看同步状态。互信方面grid 和 oracle 用户都要能互相免密登录包括自己到自己。# grid 用户下执行 ssh-keygen -t rsa ssh-copy-id rac1 ssh-copy-id rac2 # oracle 用户同样操作验证ssh rac2 date不输密码直接返回。这一步不做Grid 安装到「SSH connectivity」必挂。3. Grid 基础设施安装从解压到 root 脚本的完整链路3.1 安装包解压与响应文件准备Oracle 19C Grid 安装包在 Linux 7.9 上要用对应版本解压到 grid 用户家目录或/u01下。目录规划建议/u01/app/grid放 Grid 软件/u01/app/19.0.0/grid放 Grid HOME/u01/app/oracle放数据库软件。mkdir -p /u01/app/grid /u01/app/19.0.0/grid /u01/app/oracle chown -R grid:oinstall /u01/app/grid /u01/app/19.0.0 chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01解压 Grid 安装包后进入目录执行./gridSetup.sh图形界面起不来就用静默模式加响应文件。响应文件关键项ORACLE_BASE、ORACLE_HOME、INVENTORY_LOCATION、clusterName、SCAN_NAME、GIMR是否启用。GIMR 是管理仓库测试环境可以关掉省资源生产建议开。# 静默安装示例grid 用户执行 /u01/app/19.0.0/grid/gridSetup.sh -silent -responseFile /home/grid/grid_install.rsp参数说明-silent不弹图形-responseFile指定预填好的响应文件。响应文件里oracle.install.asm.diskGroup.name写 DATAoracle.install.asm.diskGroup.disks写/dev/asm-disk1。如果磁盘组要建多个用逗号分隔。3.2 安装过程中的检查项与常见报错Grid 安装前会跑一堆 check最容易挂的是内核参数不满足、用户资源限制不对、/etc/hosts不一致、共享盘权限不对、时间不同步。报错信息一般会写具体哪项按提示改完点「Fix Check Again」重跑。安装到「Execute Configuration Scripts」时会提示用 root 执行两个脚本orainstRoot.sh和root.sh。两个节点都要执行顺序是先 rac1 再 rac2。root.sh在 rac1 上会启动集群件rac2 上加入集群。# rac1 上 root 执行 /u01/app/oraInventory/orainstRoot.sh /u01/app/19.0.0/grid/root.sh # rac2 上同样执行但 root.sh 会问是否加入集群选 yes逻辑说明orainstRoot.sh创建 oraInventory 并设权限root.sh配置集群件、启动 OHASD、注册 ASM。rac2 执行时如果卡住看/u01/app/19.0.0/grid/log/rac2/root.sh.log常见是互信没配好或时间偏差。3.3 验证集群件状态crsctl 和 olsnodes 怎么读root 脚本跑完用 grid 用户执行crsctl stat res -t看资源状态。正常情况 ASM、ora.LISTENER、ora.ASMNET1LSNR_ASM 等资源都是 ONLINE。olsnodes -n列出节点编号crsctl check cluster -all检查所有节点集群状态。# grid 用户执行 crsctl stat res -t olsnodes -n crsctl check cluster -all如果 ASM 资源起不来先看asmcmd lsdg能不能连上连不上查/u01/app/19.0.0/grid/log/rac1/alert/alert_rac1.log。常见原因是磁盘组没建成功或权限不对。crsctl stat res -t里 ora.DATA.dg 应该是 ONLINE如果 OFFLINE 就手动srvctl start diskgroup -g DATA。4. 数据库软件安装与建库从 DBCA 到实例验证4.1 数据库软件静默安装与补丁数据库软件用 oracle 用户装解压后跑runInstaller。静默模式响应文件里oracle.install.option选INSTALL_DB_SWONLYoracle.install.db.InstallEdition选企业版。Grid 已经装好数据库软件安装时会自动识别集群。# oracle 用户执行 /u01/app/oracle/product/19.0.0/dbhome_1/runInstaller -silent -responseFile /home/oracle/db_install.rsp参数说明ORACLE_HOME写/u01/app/oracle/product/19.0.0/dbhome_1ORACLE_BASE写/u01/app/oracle。安装完同样用 root 执行root.sh两个节点都要跑。跑完用$ORACLE_HOME/OPatch/opatch lspatches看补丁生产建议打最新 RU。4.2 DBCA 建库字符集、内存、ASM 磁盘组选择建库用dbca -silent关键参数-createDatabase、-templateName、-gdbName、-sid、-characterSet、-memoryPercentage、-storageType ASM、-diskGroupName DATA。dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName racdb -sid racdb \ -responseFile NO_VALUE \ -characterSet AL32UTF8 \ -memoryPercentage 40 \ -storageType ASM \ -diskGroupName DATA \ -recoveryGroupName FRA \ -sysPassword Oracle123 \ -systemPassword Oracle123逻辑说明-memoryPercentage 40表示用物理内存 40% 给 SGAPGA测试机 8G 内存给 3G 左右。-characterSet AL32UTF8是通用字符集别选 ZHS16GBK 除非有历史兼容需求。-recoveryGroupName FRA指定快速恢复区磁盘组没建 FRA 磁盘组就先建或去掉这项。建库过程会跑一段时间看$ORACLE_BASE/cfgtoollogs/dbca/racdb下的日志。完成后用srvctl status database -d racdb看实例状态两个节点都应该是 Open。4.3 实例连通性验证监听、SCAN、TAF 怎么测建完库先看监听srvctl status listener再用lsnrctl status看 SCAN 监听是否注册了服务。连接测试用sqlplus sys/Oracle123rac-scan:1521/racdb as sysdba能连上说明 SCAN 正常。# 查看服务注册 srvctl status service -d racdb # 连接测试 sqlplus sys/Oracle123rac-scan:1521/racdb as sysdbaTAF 测试在 rac1 上连入后查select instance_name from v$instance;然后在 rac2 上srvctl stop instance -d racdb -i racdb2看会话是否自动切到 rac1。如果没切检查服务是否配了 TAF 策略srvctl config service -d racdb看TAFPolicy是不是 BASIC。5. 避坑与排查那些文档不会写的翻车现场5.1 坑一root.sh 在第二个节点卡住不动现象rac1 的 root.sh 跑完正常rac2 执行时停在「Adding daemon to inittab」或「CRS-2672」很久。原因通常是 rac2 到 rac1 的互信没配好或者 rac2 的 chrony 没同步导致时间偏差超过 5 分钟。解决先在 rac2 上ssh rac1 date确认免密再用chronyc sources看时间源偏差大就重启 chronyd。如果还卡看 rac2 的$GRID_HOME/log/rac2/root.sh.log里面会写具体哪步超时。5.2 坑二ASM 磁盘组建好但数据库建库时找不到现象Grid 安装时建了 DATA 磁盘组asmcmd lsdg能看到但 DBCA 建库时-diskGroupName DATA报「磁盘组不存在」。原因是 DBCA 用 oracle 用户连 ASM而 oracle 用户可能没在 asmdba 组里或者 ASM 实例的密码文件没配。解决确认id oracle输出包含 asmdba用asmcmd以 sysasm 登录sqlplus sys/Oracle123ASM as sysasm看能否连上。如果连不上检查$ORACLE_HOME/network/admin下的listener.ora和tnsnames.ora是否配了 ASM 实例。5.3 坑三SCAN 能 ping 通但 sqlplus 连不上现象ping rac-scan通但sqlplus sys/xxxrac-scan:1521/racdb报 ORA-12545 或 ORA-12170。原因是 SCAN 监听没注册服务或者防火墙挡了 1521。解决先lsnrctl status看 SCAN 监听是否 RUNNING再看srvctl status scan_listener。如果监听正常检查firewalld是否关了systemctl stop firewalld systemctl disable firewalld。生产环境要开端口而不是关防火墙测试环境图省事关掉。5.4 坑四节点重启后集群件不自动起现象虚拟机重启后crsctl stat res -t显示资源 OFFLINE手动crsctl start crs才能起来。原因是 OHASD 没设开机自启或者 systemd 的oracle-ohasd服务被禁用。解决systemctl enable oracle-ohasd再用crsctl enable crs确认集群件自启。如果还不行看/etc/oracle/olr.loc是否存在OLR 丢了要重建。5.5 坑五建库时内存参数给太大导致实例起不来现象DBCA 建库到 80% 报 ORA-27102 out of memory实例起不来。原因是-memoryPercentage给太高或者kernel.shmmax太小。解决先free -g看可用内存-memoryPercentage降到 30 以下同时确认kernel.shmmax大于 SGA 目标值。如果已经建了一半删库重来比改参数快dbca -silent -deleteDatabase -sourceDB racdb。6. 进阶技巧用 srvctl 和 crsctl 做日常巡检与故障演练装完只是开始RAC 的价值在故障转移和负载均衡日常巡检要盯几个关键点。我一般每周跑一次crsctl stat res -t和srvctl status database -d racdb看有没有资源意外 OFFLINE。ASM 磁盘组用asmcmd lsdg看%FREE低于 20% 就要加盘或清归档。归档空间用sqlplus查v$recovery_file_destFRA 满了会导致数据库挂起。故障演练建议每季度做一次srvctl stop instance -d racdb -i racdb2模拟节点宕机看业务连接是否切到 rac1。再crsctl stop crs模拟集群件崩溃看 OHASD 是否自动重启。演练前备份 OCR 和 Voting Diskocrconfig -export /tmp/ocr_backup.exp和crsctl query css votedisk记下路径。如果演练后集群起不来用crsctl start crs -excl -nocrs进独占模式排查。下面这张表是我常用的巡检命令清单按频率分检查项命令频率集群资源状态crsctl stat res -t每周数据库实例状态srvctl status database -d racdb每周ASM 磁盘组空间asmcmd lsdg每周归档空间sqlplus 查 v$recovery_file_dest每周OCR 备份ocrconfig -export每月故障转移演练srvctl stop instance每季度最后说个血泪经验RAC 环境最怕的是「以为配好了没验证」。互信、时间同步、共享盘权限这三样装之前用脚本批量跑一遍比装到一半报错再回头查省事得多。我习惯在 Grid 安装前写个 check 脚本把ssh免密、chronyc sources、ls -l /dev/asm-*、ulimit -a全跑一遍输出到文件对比两个节点。这个习惯帮我省了至少三次重装。希望帮到你。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑