首页/新闻资讯/正文详情

Oracle 19c RAC Linux 7.6安装配置与避坑指南

发布时间:2026/11/4 8:38:08 来源:云帆数科 栏目:资讯中心
Oracle 19c RAC Linux 7.6安装配置与避坑指南
简介《Oracle 19c RAC on Linux 7.6安装手册》面向需要在 Red Hat Enterprise Linux 7.6 上部署 Oracle 19c RAC 的数据库管理员与运维工程师重点解决集群安装、GNS 配置 SCAN、Flex ASM 使用及故障分析等实际问题。文档为 1 个 docx 文件压缩包约 160KB篇幅集中便于随查随用。内容从 OS 环境检查入手覆盖关闭 THP 与开启 Hugepages、软件包安装、内核参数配置、CVU 检查、固定网络与 GNS 结合配置、时钟同步等环节并梳理 12.2 之后 Standalone Cluster 与 Domain Service Cluster 两种集群模式的差异兼及版本变化和配置遇阻时的排查思路。已有 719 人学习适合希望系统掌握 19c RAC 在 Linux 7.6 上落地方法、对照实验环境查漏补缺的读者。1. 装 19c RAC Linux 7.6 前先把三件小事确认掉上个月收拾一套 19c RAC Linux 7.6 的现场Grid 安装跑到七成多卡死日志里全是 ASM 磁盘发现超时。翻回去看THP 开着hugepages 给了但 memlock 还是默认 64K重启过一次却没看 /proc/cmdline。这套组合我装过很多遍版本卡得很死——Oracle Linux 7.4 起UEK4 4.1.12 或 UEK5 4.14.35或者 RHEL 7.4 起3.10.0-693.5.2.0.1.el7 以上项目里落的是 Red Hat 7.6。往下读能拿到环境核对表、软件包与内核参数两条配置路线、THP 与大页、四个网段的 DNS 与 GNS 委托、UDEV 绑盘以及装崩之后的排查顺序。第一次搭两节点集群的人能用从 11g 迁到 19c、被 Standalone Cluster 和 Domain Service Cluster 绕晕的人也能用。2. 系统底座Linux 7.6 上的软件包、内核参数与 CVU 自检底座这一段最枯燥也最容易被跳过。很多人拿到介质就直接./gridSetup.sh跑到 ASM 那一步报磁盘发现失败再回头补内核参数补完不重启重跑一遍还是失败。系统底座其实就四件事装包、调参、关 THP 开大页、用 CVU 自检。四件事做完再碰图形界面后面能省掉大量来回。这一章按顺序把这四步走完每一步都给可抄的命令和参数解释。2.1 开工前的七项核对先把机器的底子摸清楚别等装到一半才发现内存不够或者内核版本偏低。19c 对两节点的最低要求不算高但要求踩线的地方特别多差一点就是安装程序中途退出。检查项要求检查命令内存至少 8Ggrep MemTotal /proc/meminfo运行级别3 或 5runlevel内核版本RHEL 7.4 起 3.10.0-693.5.2.0.1.el7 以上OL7 用 UEK4 4.1.12-112.16.7 或 UEK5 4.14.35-1818.1.6uname -mr/tmp至少 1Gdf -h /tmpSWAP4G16G 之间等于 RAM超过 16G 给 16G开了大页要减掉分给大页的那部分grep SwapTotal /proc/meminfo/dev/shmtmpfs 挂载权限正常df -h /dev/shm软件空间grid 至少 12GOracle 至少 10G实际按 100G 预留df -h /u01# 内存和 swap 一次看全单位 kB换算成 G 再对照上表 grep -E MemTotal|SwapTotal /proc/meminfo # 运行级别3 和 5 都行别停在 4 runlevel # 内核版本与发行版两个都要看RHEL 和 OL 的判断路径不一样 uname -mr cat /etc/redhat-release # /tmp 和 /dev/shm后者要注意挂载类型必须是 tmpfs权限不能是 700 df -h /tmp /dev/shm # 软件安装目录十九八稳地给到 100G19c 的 GI 家目录本身就不小 df -h /u01swap 这条规则有个反直觉的地方开了 HugePages 之后swap 的计算基数要减去大页占掉的内存。比如 32G 内存、划了 16G 给大页剩下的部分按 16G 那条规则走实际 swap 给到 16G 就够了不必按 32G 再往上堆。提示/dev/shm的大小在 dbca 建库阶段很关键小于 1G 时建库容易在中途失败。RHEL 7 默认给的是内存的一半一般够用但容器里或者被人手工改过就要单独确认。2.2 软件包preinstall RPM 与 RHEL 7 必需清单装包有两条路。第一条是用 Oracle 提供的 preinstall RPM一条命令把用户、组、内核参数、资源限制全带出来第二条是全手工适合不能连外网、或者对系统参数有自己一套标准的场景。两条路的最终结果要一致别混着来。# 配好源之后直接装 preinstall 包RHEL 上找不到就换成对应的等效包 cd /etc/yum.repos.d/ wget http://yum.oracle.com/public-yum-ol7.repo yum repolist yum install -y oracle-database-preinstall-19c这个包做的事情有五项创建 oracle 用户创建 oraInventory 对应的 oinstall 组和 OSDBA 对应的 dba 组写 sysctl 建议值写 hard/soft 资源限制顺手把 numa 关掉。它省事但不是万能的——装完之后还要自己核对一遍尤其是已经存在的 oracle 用户它不会改属性/etc/security/limits.conf里已有的同名条目也可能打架。如果走手工路线下面这份 RHEL 7 的包清单一个都不能少。漏掉compat-libcap1或ksh后面 root.sh 执行到一半会报错退出漏掉libaio-develASM 那一步直接起不来。分类包名基础工具openssh、bc、binutils、make、ksh、smartmontools、sysstat兼容库compat-libcap1、compat-libstdc、libgcc、libstdc、libstdc-devel系统库glibc、glibc-devel、libaio、libaio-devel、elfutils-libelf、elfutils-libelf-devel图形库libX11、libXau、libXi、libXtst、libXrender、libXrender-devel、libxcb、fontconfig-devel网络与存储net-toolsRAC 与 Clusterware 需要、nfs-utilsACFS 需要、librdmacm-develACFS Remotepython、python-configshell、python-rtslib、python-six、targetcli# 一次性装齐缺哪个补哪个rpm -q 逐个确认比事后看日志快得多 yum install -y openssh bc binutils compat-libcap1 compat-libstdc \ elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel \ ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender \ libXrender-devel libgcc librdmacm-devel libstdc libstdc-devel \ libxcb make net-tools nfs-utils smartmontools sysstat # ACFS Remote 用到的三个 python 包不做 ACFS 可以不装 yum install -y python python-configshell python-rtslib python-six targetcli # 装完扫一遍任何一个 missing 都要处理掉再往下走 for p in bc binutils compat-libcap1 ksh libaio-devel net-tools nfs-utils; do rpm -q $p /dev/null 21 || echo missing: $p done除了这份清单还有几个可选组件按需装PAM、OCFS2、ODBC、LDAP。不用就别装装了反而会引入额外的依赖链出问题时排查面变大。2.3 手工写 97-oracledatabase-sysctl.conf每个值在管什么preinstall 包会写一份 sysctl 配置但如果机器上已经有别的服务在跑最好把 Oracle 相关的参数单独落到一个文件里文件名带排序前缀避免被后面的文件覆盖。/etc/sysctl.d/下的文件按名字排序加载97-这个前缀就是为了排在系统默认配置之后。vi /etc/sysctl.d/97-oracledatabase-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逐个说清楚这几个值在管什么改的时候才知道能不能动fs.aio-max-nr异步 IO 请求上限。ASM 和数据库都吃这个1048576 是给的推荐值改小会在高并发下报 IO 错误。fs.file-max系统级文件句柄上限。这个值是全局的进程级的要在 limits.conf 里单独给。kernel.shmall、kernel.shmmax、kernel.shmmni共享内存的总页数、单段最大值、段数上限。shmmax这个 4294967295 是 32 位时代留下的经典值64 位机器上实际可以按内存的一半给但没有特殊需求就别改改了要连带核对 shmall。kernel.sem信号量四个数分别是 SEMMSL、SEMMNS、SEMOPM、SEMMNI。这个值给少了数据库起实例时会报ORA-27154是典型的血泪经验。net.ipv4.ip_local_port_range本地端口范围 900065500。把低端口段让出来避免和监听器抢端口也让 SCAN 的端口分配有空间。net.core.rmem/wmem四项网络收发缓冲区。RAC 的节点间心跳走私有网络缓冲区给够能减少 Cache Fusion 的抖动。# 让上面这份配置立刻生效注意是 --system 不是 -p前者会扫描整个目录 /sbin/sysctl --system # 验证重点看 shmmax 和 sem 有没有被别的文件覆盖回去 /sbin/sysctl -a | grep -E shmmax|shmall|sem|aio-max-nr # 端口范围单独确认一次这个值被改回去的情况最多 cat /proc/sys/net/ipv4/ip_local_port_range注意如果 preinstall RPM 已经写过一份 sysctl 配置手工这份会覆盖它。两边同时改的时候加载顺序决定最终值用sysctl -a逐项核对比看文件可靠。2.4 一次重启才生效的 THP 与大页透明大页在现代数据库上基本是负收益RAC 场景尤其明显——它会在运行时整理内存碎片引发不可预测的停顿而这类停顿在集群环境里会被放大成节点驱逐。关掉它需要改内核启动参数意味着必须重启。# 看当前状态方括号在哪个值上就是当前值 cat /sys/kernel/mm/transparent_hugepage/enabled cat /sys/kernel/mm/transparent_hugepage/defrag # 备份一份改坏了能退回去 cp /etc/default/grub /etc/default/grub.bak # 在 GRUB_CMDLINE_LINUX 末尾追加参数注意保留原有的内容 vi /etc/default/grub # GRUB_CMDLINE_LINUXrd.lvm.lvrhel/root rd.lvm.lvrhel/swap ... transparent_hugepagenever # 重建引导配置BIOS 和 UEFI 的路径不一样这条最容易写错 grub2-mkconfig -o /boot/grub2/grub.cfg # BIOS 机器 grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg # UEFI 机器 # 重启之后必须验证这一步跳过就等于没做 shutdown -r now cat /proc/cmdline/proc/cmdline里能看到transparent_hugepagenever才算真正生效。UEFI 机器上如果只重建了/boot/grub2/grub.cfg重启后参数不会出现在 cmdline 里这是最常见的翻车点之一——文件重建成功了但引导读的是另一个。大页单独配置跟 THP 是两回事。计算方式是先确定 SGA 大小按 2M 一个页向上取整再加上 GIMR 的部分。19c Standalone Cluster 里 GIMR 变成了可选项如果选择配置它自己要吃掉 1G 左右的大页Domain Service Cluster 模式下 GIMR 是必须的这 1G 躲不掉。# 假设 SGA 24G2048 个 2M 页是 4G明显不够要按 SGA GIMR 算 vi /etc/sysctl.conf vm.nr_hugepages 13056 sysctl -p # memlock 给到足量单位是 KB要比大页总量大 vi /etc/security/limits.conf oracle soft memlock 26738688 oracle hard memlock 26738688 # 验证大页分配情况HugePages_Total 和 Free 要接近 grep Huge /proc/meminfomemlock 给少了的表现很隐蔽数据库能起来但 SGA 只能用普通页性能测试跑出来的数字怎么看都不对。查ipcs -m里段的属性或者直接看/proc/meminfo的 HugePages_Free 有没有下降能确认大页到底有没有被用上。2.5 cvuqdisk 与 runcluvfy装之前先让工具挑刺CVU 是集群验证工具能在正式安装前把不满足的条件列出来。它依赖一个叫 cvuqdisk 的 RPM这个包不在系统源里在 Grid 安装介质的cv/rpm目录下。# 先看有没有旧版本有就卸掉版本不匹配会导致校验结果失真 rpm -qi cvuqdisk rpm -e cvuqdisk # 指定包属组通常是 oinstall export CVUQDISK_GRPoinstall # 每个节点都要装版本必须一致 rpm -iv cvuqdisk-1.0.10-1.rpm # 跑预检查-fixup 会尝试自动修复能修的部分 ./runcluvfy.sh stage -pre crsinst -fixup -n node1,node2,node3-pre crsinst指定的检查阶段是集群软件安装前-fixup让工具对可修复项直接动手-n后面跟节点名用逗号分隔。这条命令跑完输出里会分条列出通过和失败项失败项里有一部分是误报——比如它检测到某些包版本比预期新实际不影响。真正要处理的是内存、swap、内核参数、包缺失、DNS 解析这几类剩下的可以先记下来等安装过程中真报错了再回头看。提示cvuqdisk 装完之后同一个集群的所有节点版本必须完全一致。曾经过一次只在一个节点升级了 cvuqdiskruncluvfy 在两节点对比阶段报了一堆莫名其妙的错查了半天才发现是包版本不一致。3. 网络与 DNSPublic/VIP/Private/SCAN 四个地址段与 GNS 委托RAC 装不上网络问题占的比例比内核参数还高。19c 的网络配置有几条硬规则违反了安装程序不会给你解释只会告诉你某个校验失败。这一章先把地址段分清楚再把 bind 的正解反解读写明白最后处理 GNS 的子域委托——那两行 NS 记录是整套配置里最容易被忽略、也最容易出错的地方。3.1 四个地址段先分清楚19c 要求要么全 IPv4要么全 IPv6不能混着来。GNS 能生成 IPv6 地址但混合环境在很多环节会出问题没有特殊需求就用纯 IPv4。地址类型数量配置方式备注Public每节点一个固定在物理网卡名称只允许字母数字和-不允许下划线Private每节点一个或多个固定或 GNS 分配最多四个 interface 参与 HAIP超出的自动作为冗余VIP每节点一个固定解析或 GNS 分配18c 起可选但要么全配要么全不配SCAN VIP三个DNS 轮询解析必须和 Public/VIP 在同一子网GNS VIP一个固定只有用 GNS 托管时才需要几条容易踩的规则单独拎出来VIP 从 18c 开始可以不给但只给部分节点配 VIP 是不支持的要么全给要么全不给Private 网络不需要做 bond 绑定集群自己会做高可用Public、VIP、SCAN VIP 必须在同一个子网段跨网段安装程序直接拒绝。# /etc/hosts 示例域名用 rac.lab实际替换成自己的 vi /etc/hosts 192.168.204.11 pub19-node1.rac.lab 192.168.204.12 pub19-node2.rac.lab # private 40.40.40.41 priv19-node1.rac.lab 40.40.40.42 priv19-node2.rac.lab # vip 192.168.204.21 vip19-node1.rac.lab 192.168.204.22 vip19-node2.rac.lab # gns vip只有用 GNS 托管时才需要 192.168.204.10 gns19-vip.rac.labSCAN 的三个地址不要写进 hosts它必须通过 DNS 轮询解析出来写死在 hosts 里就失去了 SCAN 的意义客户端也没法做负载均衡。这一点在装完之后用nslookup验证能连续返回三个不同地址才算对。3.2 bind 正解反解named.conf 与两个 zone 文件DNS 服务用 bind 就够装包很简单配置要仔细。正解负责域名到 IP反解负责 IP 到域名两个都要缺一个安装程序会在 SCAN 校验那一关卡住。yum install -y bind chroot vi /etc/named.conf options { directory /var/named; dump-file /var/named/data/cache_dump.db; statistics-file /var/named/data/named_stats.txt; memstatistics-file /var/named/data/named_mem_stats.txt; allow-query { any; }; # 生产上收窄到一个网段别真的 any recursion yes; allow-transfer { none; }; # 不允许区域传送 }; zone . IN { type hint; file named.ca; }; zone rac.lab IN { # 正解域 type master; file named.rac.lab; }; zone 204.168.192.in-addr.arpa IN { # 公网段反解注意网段倒着写 type master; file named.192.168.204; }; zone 40.40.40.in-addr.arpa IN { # 私有网段反解 type master; file named.40.40.40; };反解 zone 的名字是把 IP 段倒过来写再拼.in-addr.arpa192.168.204 这个段就写成204.168.192.in-addr.arpa。这个顺序写反了 bind 起不来日志里报 zone not loaded看着像文件问题实际是 zone 名错了。正解域文件里除了常规的 A 记录还要有两行给 GNS 用的 NS 记录这个下面单独讲。vi /var/named/named.rac.lab $TTL 600 IN SOA rac.lab. admin.rac.lab. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS master master IN A 192.168.204.12 scan19.vip.rac.lab. IN A 192.168.204.162 scan19.vip.rac.lab. IN A 192.168.204.163 scan19.vip.rac.lab. IN A 192.168.204.164 priv19-node1.rac.lab. IN A 40.40.40.41 priv19-node2.rac.lab. IN A 40.40.40.42 vip19-node1.rac.lab. IN A 192.168.204.21 vip19-node2.rac.lab. IN A 192.168.204.22 pub19-node1.rac.lab. IN A 192.168.204.11 pub19-node2.rac.lab. IN A 192.168.204.12 vip.rac.lab. IN NS gns.rac.lab. gns.rac.lab. IN A 192.168.204.10反解文件相对简单每个 IP 一条 PTR 记录公网段和私有段各写一份vi /var/named/named.192.168.204 $TTL 600 IN SOA rac.lab. admin.rac.lab. ( 10 ; serial 3H ; refresh 15M ; retry 1W ; expire 1D ) ; minimum IN NS master.rac.lab. 12 IN PTR master.rac.lab. 33 IN PTR scan19-vip.rac.lab. 34 IN PTR scan19-vip.rac.lab. 35 IN PTR scan19-vip.rac.lab. 21 IN PTR vip19-node1.rac.lab. 22 IN PTR vip19-node2.rac.lab. 11 IN PTR pub19-node1.rac.lab. 12 IN PTR pub19-node2.rac.lab.写完之后/etc/resolv.conf指向本机named-checkzone校验两个文件systemctl restart named重启再用nslookup正查反查各来一次。反查失败不影响安装但会影响后面集群日志的可读性出问题时全是一堆 IP 没有主机名排查成本陡增。3.3 GNS 委托最后两行 NS 记录决定成败GNS 是 Grid Naming Service它接管一个子域的解析VIP、Private IP、SCAN 都可以交给它分配。要用它DNS 这边必须做一件事把某个子域委托给 GNS 服务器。这两行就是上一节正解文件末尾的vip.rac.lab. IN NS gns.rac.lab. # 子域 vip.rac.lab 的解析交给 gns.rac.lab gns.rac.lab. IN A 192.168.204.10 # gns.rac.lab 自己的地址意思很直白凡是xxx.vip.rac.lab的查询都转给 192.168.204.10 这台机器处理。所以 SCAN 的名字必须落在这个被委托的子域下面——scan19.vip.rac.lab里包含vip.rac.lab符合要求如果写成scan19.rac.lab就在父域里GNS 管不到安装时 SCAN 校验会失败。gridSetup 图形界面走到 GNS 那一步要填两个值GNS 的 VIP 地址填192.168.204.10子域填vip.rac.lab。这两个值和 DNS 里的 NS 记录必须严格对应错一个字符都不会生效。如果同时配了 DHCPVIP、Private、SCAN 的地址分配可以全部交给 GNS 完成节点上只需要固定 Public IP。注意不动 GNS、只做固定配置的时候/etc/hosts和 DNS 里都别留那两行 NS 记录否则解析会绕道去一个不存在的 GNS 服务表现是 SCAN 时好时坏地解析失败排查起来非常费劲。3.4 固定解析还是 GNS 托管一张取舍表两种方案都能跑通选哪个取决于环境里有没有 DHCP、节点规模会不会变。对比项固定配置GNS 固定配置配置复杂度低全在 hosts 和 DNS 里高多一层子域委托扩容时改什么手工加 hosts 和 DNS 记录GNS 自动分配改得少故障排查直接看 hosts 和 zone 文件多一个 GNS 服务要查适合场景节点数固定、没有 DHCP节点多、频繁扩缩容两节点的环境我一般选固定配置简单直接出问题一眼能看到根上。要上三节点以上、还打算做后续扩容GNS 的价值才体现出来。4. 装到图形界面之前时钟、limits、UDEV 与 gridSetup 的执行顺序系统参数和网络都通了接下来是那些「不做也能装装完出问题很难查」的杂项。这一章把它们一次处理干净然后按顺序走完 gridSetup、root.sh、runInstaller 和 dbca。4.1 时钟同步、SSH 超时与 IO 调度集群节点之间的时间差不能大否则 OCR 写入和各种心跳判断都会出问题。RHEL 7 上直接用 chrony两个节点都指向同一个时间源。# 两个节点都装都配同一个上游 yum install -y chrony vi /etc/chrony.conf # server 时间源地址 iburst systemctl enable chronyd systemctl start chronyd # 确认同步状态Leap status 要是 Normal chronyc trackingSSH 超时限制是另一个容易被忽略的点。安装过程中有大量节点间的 SSH 调用如果服务端的 ClientAliveInterval 设得比较激进长时间操作会被中断报出来的错误和实际原因对不上。vi /etc/ssh/sshd_config # ClientAliveInterval 300 # ClientAliveCountMax 3 systemctl restart sshdIO 调度器按存储介质选SSD 上用none或noop机械盘上用deadline。这个设置不改也能装但 ASM 的响应延迟会有差异性能测试时会体现出来。临时改用/sys/block/盘/queue/scheduler永久生效要写 udev 规则或 tuned profile。4.2 用户、组、目录与 limits.conf如果用了 preinstall RPM用户和组已经建好了这里只需要核对。手工路线的话组要建全oinstall、dba、asmadmin、asmdba、asmoper、oper 这几个缺了后面安装程序会让你现补。# 核对组和用户 id oracle grep -E oinstall|dba|asmadmin|asmdba|asmoper /etc/group # 目录和权限grid 和 oracle 的家目录都放在 /u01 下 mkdir -p /u01/app/grid /u01/app/oracle /u01/app/oraInventory chown -R grid:oinstall /u01/app/grid chown -R oracle:oinstall /u01/app/oracle chown -R grid:oinstall /u01/app/oraInventory chmod -R 775 /u01/applimits.conf里除了 memlock还要给 nproc 和 nofile。nofile 给到 65536 起步nproc 给 16384这两个值给小了集群起来之后进程数一多就开始报错而且报错信息不会指向 limits。vi /etc/security/limits.conf oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 65536 oracle hard nofile 65536 oracle soft memlock 26738688 oracle hard memlock 26738688 grid soft nproc 16384 grid hard nproc 16384 grid soft nofile 65536 grid hard nofile 65536 grid soft memlock 26738688 grid hard memlock 26738688提示改完 limits 要用 oracle 或 grid 用户重新登录再ulimit -a验证su 过去不算会话没重建的话读到的还是旧值。4.3 UDEV 固定 ASM 磁盘名ASM 磁盘的设备名必须稳定/dev/sdb这种名字重启一次就可能变。用 UDEV 按磁盘 WWID 绑一个固定名字是 19c 环境里最省心的做法。# 取磁盘 WWID每块盘都要取记下来 /sbin/scsi_id -g -u -d /dev/sdb # 写规则文件RESULT 里填上面取到的 WWID vi /etc/udev/rules.d/99-oracle-asmdevices.rules KERNELsd*, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id -g -u -d /dev/$name, RESULT36000c29a1b3f4e5d8c7a6b5e4d3c2b1a, SYMLINKasm-disk1, OWNERgrid, GROUPasmadmin, MODE0660 # 重新加载规则并触发 udevadm control --reload-rules udevadm trigger --typedevices --actionchange # 验证权限要是 brw-rw---- grid asmadmin ls -l /dev/asm-disk*PROGRAM那一段在不同发行版上路径略有差别RHEL 7 是/usr/lib/udev/scsi_id老版本在/sbin。路径写错的表现是软链接根本不生成规则文件本身看不出问题。每块盘一条规则WWID 和软链接名一一对应别复制粘贴之后忘了改。4.4 gridSetup.sh、runInstaller 与 dbca 的先后顺序不能乱先 Grid Infrastructure两个节点都跑完 root.sh再装数据库软件最后建库。# 用 grid 用户执行图形界面下跑 # RHEL 上偶尔遇到发行版识别问题常见做法是先设这个环境变量 export CV_ASSUME_DISTIDOEL7.6 ./gridSetup.shgridSetup 走完配置摘要会在最后提示在两个节点上分别执行 root.sh。第一个节点执行完再执行第二个顺序反了会出现节点注册不一致。root.sh 输出很长重点看最后几行有没有报错中间的警告大部分可以忽略。数据库软件用 oracle 用户跑runInstaller装完同样要执行 root.sh。建库用dbcaRAC 模式选「Oracle Real Application Clusters」实例数按节点数给。建库这一步耗时最长中途别去动网络配置否则会卡在实例注册阶段。5. 避坑与排查19c RAC 装到一半卡住的五个现场装集群这件事报错信息经常指向一个和真正原因隔了两层的地方。这一章记录五个实际遇到过的现场按现象、原因、解决的顺序写看到类似报错可以先对一遍。5.1 THP 明明关了cmdline 里却没有现象改完/etc/default/grub追加了transparent_hugepagenevergrub2-mkconfig也执行成功没有报错重启之后cat /proc/cmdline里找不到这个参数/sys/kernel/mm/transparent_hugepage/enabled还是[always]。原因机器是 UEFI 引导但重建的是 BIOS 路径的/boot/grub2/grub.cfg。grub2-mkconfig 对不存在的输出路径不一定报错命令看着成功实际引导读的文件根本没更新。解决先用ls /sys/firmware/efi判断是不是 UEFI目录存在就走/boot/efi/EFI/redhat/grub.cfg。改之前把原文件备份一份重建之后用grep transparent /boot/grub2/grub.cfg或对应路径确认参数真的写进去了再重启。5.2 大页给了SGA 还是走普通内存现象vm.nr_hugepages设了/proc/meminfo里 HugePages_Total 也对但数据库起来之后 HugePages_Free 几乎没降性能测试的延迟比预期高一截。原因只配了vm.nr_hugepages没配limits.conf里的 memlock。Oracle 进程拿不到锁定内存的权限大页分配了但用不上自动退回普通页。另一种情况是数值算少了把 GIMR 那 1G 忘了算进去19c 配了 GIMR 的环境特别容易漏。解决limits.conf里给 oracle 和 grid 都配 soft/hard memlock数值按大页总量乘 1024 再留余量。改完必须重新登录会话ulimit -l确认生效。大页数量按 SGA 加上 GIMR 的 1G 计算Domain Service Cluster 模式下这 1G 躲不掉。5.3 SCAN 校验过不去提示名称无法解析现象gridSetup 走到网络配置那一步SCAN 校验失败提示名称解析不到或者返回的地址数量不对。手工nslookup有时能通有时不通。原因SCAN 名不在 GNS 委托的子域下面。比如委托的是vip.rac.labSCAN 写成了scan19.rac.lab查询落到父域GNS 管不到。或者反过来不用 GNS 但/etc/hosts里留了 NS 委托记录解析绕道去一个不存在的服务。解决SCAN 名必须包含被委托的子域scan19.vip.rac.lab这种形式才对。不用 GNS 就把那两行 NS 记录删干净SCAN 三个地址只放 DNS 不放 hosts。改完systemctl restart named用nslookup scan19.vip.rac.lab连续查几次能看到三个不同地址轮询返回才算过关。5.4 runcluvfy 报一堆包缺失装完却用不了现象preinstall RPM 装完又手工往97-oracledatabase-sysctl.conf里写了一份参数runcluvfy检查内核参数和实际值对不上或者两边来回覆盖sysctl -a的输出和文件里写的不是一回事。原因/etc/sysctl.d/下的文件按名字排序加载preinstall 写的文件排序位置和手工文件不同后加载的覆盖前面的。两个来源同时存在时最终值取决于排序不是取决于你最后改的那个文件。解决只用一套配置来源。要么全交给 preinstall要么把 Oracle 相关参数集中到一个固定前缀的文件里把 preinstall 写的同名项删掉。改完sysctl --system用sysctl -a逐项核对别只看文件内容。5.5 root.sh 在第二个节点失败现象第一个节点 root.sh 跑完正常第二个节点跑到一半报错退出日志里提到集群注册或者 OCR 相关的内容。原因两个节点执行顺序反了或者第一个节点的 root.sh 还没完全结束就开始第二个。也有可能是两边的 cvuqdisk 版本不一致节点间校验对不上。解决严格按先 node1 后 node2 的顺序第一个节点的 root.sh 看到明确结束提示再动第二个。执行前两个节点都rpm -q cvuqdisk确认版本一致。失败之后不要直接重跑先看$GRID_HOME/cfgtoollogs下对应的日志把残留配置清掉再重来直接重跑往往会在同一个位置再挂一次。6. 验证跑完 dbca 之后怎么确认这套集群真的活着建库完成不等于环境可用。图形界面最后一步显示成功只说明安装程序把该做的事做完了集群资源是不是真的在跑、SCAN 是不是真的轮询、故障切换是不是真的能触发都要单独验一遍。这一步很多人省掉等到业务上线才发现问题排查成本翻好几倍。先看集群层面的整体状态资源树里每一项的状态都应该是 ONLINE除了那些设计上就是 OFFLINE 的。# 集群整体健康检查两个节点都要返回 OK crsctl check cluster -all # 资源树重点看 ora.LISTENER_SCAN1.lnsr 和各个 ASM 实例 crsctl stat res -t # 数据库实例状态两个节点都应该是 OPEN srvctl status database -d ORCL # ASM 磁盘组MOUNTED 状态、容量和冗余类型都要对 asmcmd lsdg然后验 SCAN 的轮询解析这是客户端能不能连进来的关键# 连续查三次应该返回三个不同的地址 nslookup scan19.vip.rac.lab nslookup scan19.vip.rac.lab nslookup scan19.vip.rac.lab p a hrefhttps://download.csdn.net/download/jwocnimabi/12237038 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p

相关推荐

Jev决策网络实测:多步推理为何不如并行投票可靠?
Jev决策网络实测:多步推理为何不如并行投票可靠?

1. 为什么想起用 Jev 搭决策网络先说结论:这事起因是我在一次线上故障排查里,被单次调用的"浅层回答"坑了一把,才动了把 Jev 串成决策网络的念头。Jev 是我最近一直在用的一个轻量推理模型,它的定位比较特殊&#xff1a… · 2026/11/4 8:37:07

排序算法实战:从基础到分布式系统优化
排序算法实战:从基础到分布式系统优化

1. 排序算法深度解析与前沿应用 排序算法是计算机科学中最基础也最重要的算法之一。作为一名从业十年的算法工程师,我几乎每天都会和排序算法打交道。从最初学习冒泡排序时的困惑,到现在设计分布式排序系统的从容,排序算法始终是程序员必须掌… · 2026/11/4 8:37:07

AI技能设计实战:从概念到落地,解决模型能力与业务场景的鸿沟
AI技能设计实战:从概念到落地,解决模型能力与业务场景的鸿沟

AI 应用从“能聊天”走向“能干活”,中间隔着的往往不是模型能力,而是一层被大多数人忽略的东西——技能。我接触过不少团队,模型换了一茬又一茬,提示词写了一版又一版,可真正落到业务里,效果始终飘忽不定。… · 2026/11/4 8:37:07

SqlServer教室信息管理系统课程设计:从建库到冲突检测实战
SqlServer教室信息管理系统课程设计:从建库到冲突检测实战

简介:这份资源是面向高校数据库课程设计场景的教室信息管理系统 SQL 脚本合集,适合正在完成数据库课设、需要参考建库建表与业务逻辑实现的学生,也适合想借真实案例巩固 SQL Server 综合应用的初学者。压缩包共 6 个文件,全部为 s… · 2026/11/4 9:27:32

谷歌开源ARTEMIS:让AI像人一样操作手机的移动端测试框架
谷歌开源ARTEMIS:让AI像人一样操作手机的移动端测试框架

最近在梳理移动端自动化测试工具链,发现圈子里讨论最多的就是谷歌开源的ARTEMIS框架。说实话,第一次看到这个项目的时候,我的第一反应是“又一个移动端自动化测试框架”,但仔细了解之后发现,它跟我以前用的Appium、UI … · 2026/11/4 9:27:32

即时通讯系统好友管理模块架构设计与高并发优化
即时通讯系统好友管理模块架构设计与高并发优化

1. 项目背景与核心价值即时通讯(IM)系统中的好友管理模块,就像现实生活中的通讯录一样重要。这个看似基础的功能,实际上承载着用户社交关系的核心数据。我在参与多个IM系统开发后发现,好友管理服务的稳定性直接决定了用… · 2026/11/4 9:27:32

WizTree 2026版:极速磁盘分析工具深度指南
WizTree 2026版:极速磁盘分析工具深度指南

1. 为什么你需要WizTree这款神器作为一名长期与磁盘空间搏斗的老鸟,我必须说WizTree彻底改变了我管理硬盘的方式。这款工具能在3秒内扫描完1TB硬盘,比Windows自带的磁盘分析工具快上百倍。它直接读取NTFS文件系统的MFT(主文件表)&… · 2026/11/4 9:27:32

10万星开源AI Agent项目工程架构拆解:工作流引擎与自托管实践
10万星开源AI Agent项目工程架构拆解:工作流引擎与自托管实践

这个项目能到 10 万星,并不是因为它功能多花哨,而是它的工程实现方式,恰好踩准了自托管自动化工具的所有关键点。我前后花了几个晚上把它的源码结构、工作流引擎和部署方案完整过了一遍,又实际部署跑了一轮,这篇文章就… · 2026/11/4 9:27:32

Agent判断器选型:Laya与Jev对比及部署实战
Agent判断器选型:Laya与Jev对比及部署实战

前阵子有个Agent项目卡了我整整三天,问题不是模型能力不行,而是它太“自作主张”了。明明只让它查天气,它非要先调用日历再翻邮件,最后还要给自己写个总结;让它循环处理十批数据,跑到第五批突然开始乱改输入… · 2026/11/4 9:26:29

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码