简介《Oracle 19c RAC on Linux 7.6安装手册》面向在 Red Hat Enterprise Linux 7.6 上部署 Oracle 19c RAC 的数据库运维、架构与实施人员重点解决 GNS 配置 SCAN、Flex ASM 使用以及集群模式选型等实际问题也可作为安装前的检查清单与实施参考。文档按落地顺序梳理 OS 环境检查、透明大页关闭与 Hugepages 开启、软件包安装、内核参数配置以及固定网络和 GNS固定网络两种网络方案并补充时钟同步等系统准备事项同时说明从 12.2 开始 Standalone Cluster 与 Domain Service Cluster 两类集群模式的差异给出配置受阻时的分析与处理思路帮助读者理解问题出现的环节和验证路径。压缩包内含 1 个 docx 文件约 160KB内容集中、便于现场随查随用已有 719 人学习下载。读者可借此建立 19c RAC 安装前的系统与网络规划框架理解 GNS 配置 SCAN 的落地方式掌握常见问题的排查方向并对照目录快速定位系统准备与网络配置中的关键项。1. 两节点装到 70% 被弹回来问题早在第 2 章就埋下了前阵子帮人复盘一套 19c RAC Linux 7.6 安装两个节点、共享存储、IP 规划写得清清楚楚按手册一步步走结果 gridSetup.sh 跑到 ASM 那一步直接弹回去日志里只有一句看不出因果的 CSS 报错。翻回去查发现装系统时没人关透明大页面HugePages 也没配SGA 想锁内存锁不上。这类配方在 Oracle 圈子里太常见了Linux 7.6 19c Grid Infrastructure 两节点 RAC ASM 存 OCR 和投票盘。装得顺一个下午收工装不顺光排错能磨三天。而且九成的坑不在 gridSetup.sh 那一步在前面那些“看起来不重要”的系统基线里。这篇就把 19c RAC Linux 7.6 安装从环境核对、THP 与 HugePages、软件包与内核参数、网络与 GNS 一路写到排错和验证照着走能复现。2. 环境检查与系统基线8G 内存起步THP 必须先关19c 对操作系统的要求比 11g 时代收紧了不少但也谈不上苛刻真正麻烦的是这些要求分散在内存、swap、共享内存、内核版本、运行级别好几个地方漏一项就要在装到一半时返工。我一般把这一章当成“开机自检”全部核对完再动手装任何东西因为后面每一步都建立在它上面。2.1 先核对这七项资源不够后面全白搭把下面这张表当成清单一条条在节点上敲命令确认两个节点都要做不要只查一个就当另一个也一样。检查项要求检查命令内存至少 8Ggrep MemTotal /proc/meminfoswap416G 时等于内存超过 16G 时给 16G启用 HugePages 要减去大页占用grep SwapTotal /proc/meminfo/tmp至少 1Gdf -h /tmp/dev/shm挂载类型为 tmpfs权限正常df -h /dev/shm软件空间Grid 至少 12GOracle 至少 10G建议直接给 100Gdf -h /u01运行级别3 或 5runlevel内核版本RHEL 7.4 及以上7.6 对应 3.10.0-957 及以上uname -mr、cat /etc/redhat-releaseswap 那一行是最容易被忽略的。很多人按“内存 16G 就给 16G swap”配完然后再去开 HugePages结果 cluvfy 报 swap 不足——因为大页是从内存里预扣的swap 的计算基数要相应减掉。这个顺序反了就得重来一遍属于典型的血泪经验。/dev/shm也要专门看一眼。19c 的 ASM 和集群组件会用到它如果被调得过小后面会以 ORA-00845 的形式冒出来报错信息跟 shm 本身没有半点关系第一次遇到很容易懵。2.2 禁用透明大页面改 grub 比 echo never 靠谱THP 对 Oracle 来说是玄学级的存在它不一定会立刻出问题但只要出问题表现就是随机变慢、实例偶尔卡住、ASM 启动超时排查起来极其难受。标准做法是在内核启动参数里彻底关掉而不是往/sys里 echo 一下了事。先确认当前状态方括号包住的那一项就是生效值# 查看透明大页面是否开启 cat /sys/kernel/mm/transparent_hugepage/enabled # [always] madvise never # 查看碎片整理功能是否开启 cat /sys/kernel/mm/transparent_hugepage/defrag # [always] madvise never如果看到[always]就说明是开着的需要改 grub。编辑/etc/default/grub在GRUB_CMDLINE_LINUX末尾追加参数vi /etc/default/grub # 在原有内容后面追加注意保留原有参数不要覆盖 GRUB_CMDLINE_LINUXrd.lvm.lvrhel/root rd.lvm.lvrhel/swap ... transparent_hugepagenever改完先备份配置文件再按固件类型重建。这一步翻车的概率不低主要是把 BIOS 机器和 UEFI 机器的输出路径搞混# 备份原配置 cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak # BIOS 机器 grub2-mkconfig -o /boot/grub2/grub.cfg # UEFI 机器 grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg # 重启并验证 shutdown -r now cat /proc/cmdline/proc/cmdline里能看到transparent_hugepagenever才算真正生效。如果只是echo never enabled重启后一定回弹不要自欺欺人。注意两个节点都要改且必须重启。只改一个节点后面 cluvfy 会直接给你标出来。2.3 开启 HugePagesnr_hugepages 和 memlock 要一起算HugePages 和 THP 是两回事前者是显式预分配的固定大页Oracle 官方一直推荐开后者是内核自动合并官方一直推荐关。这两个概念经常被混为一谈导致有人关了 THP 就以为大页也配好了。配置分两步第一步算页数第二步放权限。页数按 SGA 总量除以 2M 换算vi /etc/sysctl.conf # 假设两个实例 SGA 各 8G共 16G换算成 2M 页为 8192 页 # 再留 5%10% 余量取 8700 页 vm.nr_hugepages 8700 # 生效 sysctl -p如果安装时选择配置 GIMR19c Standalone Cluster 下 GIMR 是可选项要把 GIMR 的 SGA 大约 1G 也算进去否则集群起来后 MGMTDB 会因为锁不到内存而反复重启。选 Domain Services Cluster 模式时 GIMR 是必须的这一块不能省。第二步是让 oracle 用户有权锁住这些内存memlock的单位是 KBvi /etc/security/limits.conf # 8700 页 × 2048KB 17817600KB取整给 18000000 oracle soft memlock 18000000 oracle hard memlock 18000000改完用ulimit -l在 oracle 用户下确认。很多人只改了 sysctl 没改 limits结果 HugePages 分配成功但实例起不来报的还是内存类错误绕一大圈才回到这个文件。3. 软件包与内核参数preinstall RPM 还是手工 sysctl这一章是本篇最容易被写成“复制粘贴清单”的地方但实际装的时候真正花时间的是判断该走哪条路用官方 preinstall RPM 一把配完还是手工写 sysctl 和 limits。两条路都能通差别在可控性和可复现性。我的习惯是先用 RPM 打底再逐项核对它改了什么不完全依赖它。3.1 19c 必须的包别指望装完再补RHEL 7.6 最小化安装出来的系统缺一堆库而 Oracle 的安装程序在检查阶段不会一次性告诉你全部缺什么经常是你补一个它再报一个。所以下面这批包我一般一次性装完yum install -y 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 unzip逐项说一下为什么在里面。compat-libcap1和compat-libstdc是 OUI 图形界面依赖的缺了会表现为安装界面弹不出来而不是报缺包libaio和libaio-devel是 ASM 异步 IO 的基础缺了实例能起来但性能会很难看net-tools里的ifconfig在 RAC 和 Clusterware 的脚本里还有引用不带的话部分检查脚本会静默跳过。ACFS 相关的几个包是可选的但如果打算用 ACFS 放归档或者做远程复制就要一起装上yum install -y python python-configshell python-rtslib \ python-six targetcli提示ksh一定要装。Grid Infrastructure 的不少脚本是 ksh 写的缺了会以“命令找不到”的形式失败日志里不太显眼。3.2 preinstall RPM 到底改了什么Oracle Linux 和 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用户创建oinstalloraInventory 属主和dbaOSDBA组写/etc/sysctl.conf把 Oracle 建议的内核参数一次性配好设置 hard / soft 用户资源限制写进/etc/security/limits.d/设置numaoff这个在内核参数里需要重启才生效按内核版本补一些额外建议参数。numaoff是 19c 上比较有争议的一项preinstall 默认关掉实际生产里如果 NUMA 调优做得好也可以保留但 RAC 场景下我一般跟随默认先关掉避免节点间心跳抖动。要保留的话记得在 grub 里显式写回来。3.3 手工 sysctl每个参数为什么是这个值不用预安装包的话内核参数得自己写。19c 建议放到独立文件里不要直接改/etc/sysctl.conf方便以后回滚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 1048576fs.aio-max-nr异步 IO 请求上限ASM 磁盘多的时候容易触顶报 ORA-27090fs.file-max全系统文件句柄上限RAC 两节点实例加集群组件很容易吃满kernel.shmall/kernel.shmmax共享内存总页数和单段最大字节数shmmax要给到大于最大 SGAkernel.sem信号量四个值顺序是semmsl semmns semopm semmni装 RAC 时semmni容易被忽略net.ipv4.ip_local_port_range本地端口范围起点不能太低否则和 SCAN 监听端口冲突。改完执行sysctl --system让它生效再核对/sbin/sysctl --system /sbin/sysctl -a | grep -E shmmax|shmall|sem|aio-max-nrip_local_port_range单独确认一下这个参数在有些系统上会被网络服务重写cat /proc/sys/net/ipv4/ip_local_port_range echo 9000 65500 /proc/sys/net/ipv4/ip_local_port_range3.4 limits.conf 与 cvuqdisk两个容易漏的小东西limits.conf里除了前面写的memlock还要把nofile、nproc一起给足。19c 的集群进程数比 11g 多不少默认 1024 完全不够vi /etc/security/limits.d/19c-limits.conf oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 65536 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 10240cvuqdisk是集群验证工具用来识别共享磁盘的 rpm藏在 Grid 安装介质里每个节点都要装同一版本# 在 Grid 介质目录下找到 ls /u01/soft/grid/cv/rpm/cvuqdisk-*.rpm # 检查是否已有旧版本 rpm -qi cvuqdisk # 有则先卸载 rpm -e cvuqdisk # 指定属组后安装 export CVUQDISK_GRPoinstall rpm -ivh cvuqdisk-1.0.10-1.rpm不装 cvuqdisk 的话runcluvfy.sh跑预检查时会报找不到共享磁盘看起来像存储没连上实际只是缺了这个 rpm。4. 网络与 GNShosts、bind 正反解和 SCAN 子域委派网络这块是 RAC 安装里唯一一个“配错了不马上报错”的部分。IP 冲突、子网跨错、SCAN 解析不到往往要到集群起了一半才暴露。所以我把 IP 规划、hosts、DNS、GNS 委派放在一章里连着做做完统一验证一遍再往下走。4.1 先定 IP 规划四类地址别混在一起19c 的规则比 11g 更明确先把约束记住再动手地址类型数量是否必须在同一子网说明Public IP每节点一个与 VIP、SCAN VIP 同一子网必须在网卡上固定配置Private IP每节点一到四个独立私有网段四个以内自动做 HAIP四个以上超出部分做冗余VIP每节点一个与 Public 同一子网18c 起 VIP 变成可选项但不能只给部分节点配SCAN VIP三个与 Public 同一子网必须由 DNS 解析或交给 GNS几条硬性约束要么全部 IPv4要么全部 IPv6不能混Public、VIP、SCAN 名称只能用字母数字和-不能用下划线用了会在验证阶段被拒Private 网卡不强求 bond 绑定集群自己会做 HAIP 高可用但每个 Member Cluster 内所有节点访问共享存储的方式必须一致。4.2 /etc/hosts 怎么写才不打架如果 SCAN 交给 DNShosts 里只写 Public、Private、VIP 和 GNS VIP 就够了SCAN 的三条不要写进 hosts否则会和 DNS 结果打架vi /etc/hosts # public 192.168.204.11 pub19-node1.rac.demo.com pub19-node1 192.168.204.12 pub19-node2.rac.demo.com pub19-node2 # private 40.40.40.41 priv19-node1.rac.demo.com 40.40.40.42 priv19-node2.rac.demo.com # vip 192.168.204.21 vip19-node1.rac.demo.com 192.168.204.22 vip19-node2.rac.demo.com # gns vip 192.168.204.10 gns19-vip.rac.demo.com两个节点的 hosts 内容必须完全一致包括注释行位置都别差。看起来是小事但部分集群校验会比对节点间 hosts 的差异不一致时报的错跟网络毫无关系。4.3 named.conf三个 zone 一个都不能少要自己搭 DNS 就装 bind配置里最关键的是 zone 的划分一个正解域、两个反解域公网段和私网段各一个。反解域少了会怎么样SCAN 能解析出 IP但集群做反向校验时失败表现为 GNS 注册不上去。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; }; # 可收窄到具体网段允许该网段查询 recursion yes; allow-transfer { none; }; }; zone . IN { type hint; file named.ca; }; zone rac.demo.com IN { # 正解域 type master; file named.rac.demo.com; }; 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; };allow-query建议先写any把安装走通装完再收窄到 192.168.204.0/24 和 40.40.40.0/24。收窄得太早GNS 那边查询会被拒报错是 DNS 超时很难往权限上想。4.4 正解反解文件与 GNS 子域委派正解文件里除了 A 记录最后两行是整个 GNS 方案的关键——把vip.rac.demo.com这个子域的解析权交给 GNS 服务器vi /var/named/named.rac.demo.com $TTL 600 IN SOA rac.demo.com. admin.rac.demo.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS master master IN A 192.168.204.12 scan19-vip.rac.demo.com. IN A 192.168.204.33 scan19-vip.rac.demo.com. IN A 192.168.204.34 scan19-vip.rac.demo.com. IN A 192.168.204.35 priv19-node1.rac.demo.com. IN A 40.40.40.41 priv19-node2.rac.demo.com. IN A 40.40.40.42 vip19-node1.rac.demo.com. IN A 192.168.204.21 vip19-node2.rac.demo.com. IN A 192.168.204.22 pub19-node1.rac.demo.com. IN A 192.168.204.11 pub19-node2.rac.demo.com. IN A 192.168.204.12 # GNS 委派子域 vip.rac.demo.com 由 gns.rac.demo.com 负责解析 vip.rac.demo.com. IN NS gns.rac.demo.com. gns.rac.demo.com. IN A 192.168.204.10最后两行解读一下IN NS那行告诉 DNS凡是*.vip.rac.demo.com的查询都转给gns.rac.demo.com下一行的 A 记录给出 GNS 服务器地址。这就是子域委派。SCAN 的名字必须落在这个子域下比如scan19-vip.rac.demo.com否则 GNS 管不到它。反解文件按网段分两个公网段的vi /var/named/named.192.168.204 $TTL 600 IN SOA rac.demo.com. admin.rac.demo.com. ( 10 ; serial 3H ; refresh 15M ; retry 1W ; expire 1D ) ; minimum IN NS master.rac.demo.com. 10 IN PTR gns19-vip.rac.demo.com. 11 IN PTR pub19-node1.rac.demo.com. 12 IN PTR pub19-node2.rac.demo.com. 21 IN PTR vip19-node1.rac.demo.com. 22 IN PTR vip19-node2.rac.demo.com. 33 IN PTR scan19-vip.rac.demo.com. 34 IN PTR scan19-vip.rac.demo.com. 35 IN PTR scan19-vip.rac.demo.com.私网段那份按同样格式写40.40.40.x的 PTR 即可。写完启动服务并验证四件事systemctl enable named systemctl start named # 正解 nslookup pub19-node1.rac.demo.com 192.168.204.12 # 反解 nslookup 192.168.204.11 192.168.204.12 # SCAN 三条 nslookup scan19-vip.rac.demo.com 192.168.204.12在 gridSetup.sh 的 SCAN 页面填scan19-vip.rac.demo.comGNS 页面填 IP192.168.204.10、子域vip.rac.demo.com。三个值必须和 named 里的配置严格对应差一个字符就注册失败。如果同时配了 DHCPVIP、Private、SCAN 都可以交给 GNS 动态分配这是 GNS 方案相对固定配置最大的价值。4.5 剩下的系统杂项一次配完省得来回切这些配置单项都不难但分散着做很容易漏。我一般放在网络之后一次收尾# 时钟同步两节点必须指向同一源 timedatectl set-timezone Asia/Shanghai systemctl enable chronyd systemctl start chronyd chronyc sources -v # SSH 超时避免装到一半会话断开 vi /etc/ssh/sshd_config # ClientAliveInterval 300 # ClientAliveCountMax 3 # 关闭 X11 Forward图形安装只在本机走 # X11Forwarding no # I/O 调度器SSD 用 noop机械盘用 deadline cat /sys/block/sdb/queue/scheduler echo deadline /sys/block/sdb/queue/scheduler时钟同步这条最不能省。两节点时间差超过几秒集群心跳和 OCR 写入就会出问题而且报错五花八门。chrony 起来后用chronyc sources -v确认两节点指向同一个上游。装 Grid 一般是在本机图形界面或者 VNC 里跑 gridSetup.shSSH 的 X11 转发在这种场景下反而容易出权限问题所以我习惯直接关掉。要用的话得确保xauth装了、DISPLAY变量对、oracle 用户有权限三个条件缺一个就是“无法打开显示”。5. 常见问题排查五个最容易翻车的点前面每一步都按规范走仍然会踩坑。下面这几条是我在不同环境里反复遇到的按“现象 → 原因 → 解决”记下来装的时候对号入座比翻日志快。第一条gridSetup.sh 界面弹不出来终端只报无法打开显示现象是执行./gridSetup.sh后没有任何窗口终端输出Cant connect to X11 window server。原因通常是三件事之一当前用户不是 oracle、DISPLAY变量指向的显示器不可用、或者执行了su oracle但没带-导致环境变量没切换。解决方式是先echo $DISPLAY确认有值再用su - oracle重新登录本机则执行一次xhost 放开访问控制。远程走 VNC 的话确认 VNC 会话本身没断。第二条ASM 磁盘在 asmca 里一个都看不到现象是安装到 ASM 配置页面候选磁盘列表空的但lsblk明明能看到盘。原因是 udev 规则序号被别的规则覆盖了或者权限给错。解决方法是这样检查# 查看当前规则 cat /etc/udev/rules.d/99-oracle-asmdevices.rules # 规则示例序号建议用 60 开头早于系统默认规则 KERNELsdb1, SUBSYSTEMblock, PROGRAM/usr/lib/udev/scsi_id -g -u -d /dev/$parent, RESULT3600xxxx, SYMLINKasm-disk1, OWNERgrid, GROUPasmadmin, MODE0660 # 重载并触发 udevadm control --reload-rules udevadm trigger --typedevices --actionchange udevadm info --queryall --name/dev/asm-disk1重点看OWNER和GROUP是不是grid:asmadminMODE是不是0660。权限不对时 ASM 不会报错就是看不见盘。第三条cluvfy 报 swap 不足但 swap 明明配够了现象是runcluvfy.sh的预检查阶段报 swap 空间不够而free -g显示 swap 大小完全符合要求。原因是启用了 HugePages大页从内存预扣swap 的计算基数需要相应减去这部分。解决方式是按 HugePages 实际占用重新核算 swap或者把大页数调小。这一条最麻烦的地方在于报错信息和真实原因之间隔着一层不看文档基本想不到。第四条GNS 注册不成功SCAN 解析时好时坏现象是 DNS 手工nslookup能解析 SCAN但 GNS 状态里一直是未注册。原因基本是两个SCAN 的名字没落在委派子域下或者 named 里IN NS记录末尾漏了点号。vip.rac.demo.com和vip.rac.demo.com.在 zone 文件里是两个完全不同的东西后者才是绝对域名。解决方式是逐条核对正解文件末尾的 NS 和 A 记录确认 SCAN 主机名形如scan19-vip.vip.rac.demo.com落在 GNS 托管的范围内。第五条root.sh 在第二个节点执行失败提示节点不可达现象是第一个节点 root.sh 正常第二个节点跑到一半报无法连接对端。原因是两节点的互信在安装过程中被重置了或者前面配的 SSH 超时限制生效把空闲连接掐了。解决方式是重新跑一遍互信配置gridSetup.sh 里有 SSH 配置向导也可以手工生成密钥对分发并把ClientAliveInterval调到 300 以上。这一条特别隐蔽因为安装前期互信检查是通过的跑到后半程才断。6. 验证跑通cluvfy 与 gridSetup 的最后一公里装完不算完得能证明它跑起来了。我的顺序是先跑 cluvfy 预检查再上 gridSetup.sh最后用三条命令验收。# 预检查-fixup 会自动修一部分可修复项 ./runcluvfy.sh stage -pre crsinst -fixup -n pub19-node1,pub19-node2 -verbose-fixup会把能自动修的比如部分内核参数、缺的目录权限直接改掉修完必须重跑一次输出里全部passed才算干净。有failed的项先解决再往下不要抱着“装的时候可能不检查”的侥幸。# 图形化安装 Grid Infrastructure ./gridSetup.sh向导里几个关键选择集群模式选 Standalone Cluster两节点最常见19c 下 GIMR 可选不装能省 1G 大页但要接受没有 MGMTDB 的诊断能力SCAN 填scan19-vip.rac.demo.comGNS 页面填192.168.204.10和子域vip.rac.demo.com。装完按提示在两个节点分别以 root 执行root.sh第一个节点跑完再跑第二个顺序不能反。# 节点一 /u01/app/19.0.0/grid/root.sh # 节点二 /u01/app/19.0.0/grid/root.sh最后用三条命令验收缺一不可# 集群资源状态所有资源的 TARGET 和 STATE 都应是 ONLINE crsctl stat res -t # 节点列表两个节点都要是 Active olsnodes -n # ASM 实例状态和磁盘组 srvctl status asm -detail asmcmd lsdgcrsctl stat res -t里重点看ora.cssd、ora.diskmon、ora.asm、ora.gns四项。ora.gns如果是 OFFLINE 而其他都正常八成是子域委派的问题回第 4 章查 named。asmcmd lsdg要能看到 OCR 和投票盘所在的磁盘组STATE是MOUNTED。还有一个常被略过的验证点rpm -qa | grep cvuqdisk两个节点的版本号必须一致。版本不一致时集群能起来但后续打补丁或者扩容节点会出问题属于典型的后悔药场景。从那以后我每次装 RAC不管多熟的環境都强制在 gridSetup.sh 之前完整跑一遍 cluvfy并且把输出存成文件留档——不是为了应付检查是因为后面真出问题时这份全passed的基线是唯一能对照的黑匣子。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
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 文件,… · 2026/11/4 8:38:08
Jev决策网络实测:多步推理为何不如并行投票可靠? 1. 为什么想起用 Jev 搭决策网络先说结论:这事起因是我在一次线上故障排查里,被单次调用的"浅层回答"坑了一把,才动了把 Jev 串成决策网络的念头。Jev 是我最近一直在用的一个轻量推理模型,它的定位比较特殊:… · 2026/11/4 8:37:07
排序算法实战:从基础到分布式系统优化 1. 排序算法深度解析与前沿应用 排序算法是计算机科学中最基础也最重要的算法之一。作为一名从业十年的算法工程师,我几乎每天都会和排序算法打交道。从最初学习冒泡排序时的困惑,到现在设计分布式排序系统的从容,排序算法始终是程序员必须掌… · 2026/11/4 8:37:07
Agent判断器选型:Laya与Jev对比及部署实战 前阵子有个Agent项目卡了我整整三天,问题不是模型能力不行,而是它太“自作主张”了。明明只让它查天气,它非要先调用日历再翻邮件,最后还要给自己写个总结;让它循环处理十批数据,跑到第五批突然开始乱改输入… · 2026/11/4 9:26:29
Redis在AI Agent架构中的四大核心职能实战指南 1. “Redis 已正式接入 AI!”——这不是营销话术,而是架构演进的真实切口最近在几个技术群和开源社区里,频繁刷到这句话:“Redis 已正式接入 AI!”——乍看像某家厂商的发布会通稿,甚至有人第一反应是“Red… · 2026/11/4 9:26:29
Jupyter Notebook工程化落地:从可复现到可交付的实践指南 简介:这份资源围绕产品需求文档(PRD)的撰写与落地展开,面向产品经理、数据分析方向开发者及需要理解需求文档协作流程的学习者,帮助厘清从产品概述、问题定义、功能列表到用户故事、性能指标、版本规划与风险评估的完整… · 2026/11/4 9:26:29
Redis如何成为AI Agent与MCP协议的核心状态中枢 1. 这不是营销噱头:Redis 真的在和 AI 做深度协同,但不是你想象的“内置大模型”最近刷到“Redis 已正式接入 AI!”这个标题,第一反应是警惕——毕竟 Redis 作为内存数据库,核心定位是极快的键值读写、原子操作、发布订… · 2026/11/4 9:26:29
棘轮原理在Harness多智能体编排中的可靠性实践 我至今记得第一次拆开后轮花鼓时的感觉。那圈带着斜齿的金属环,双脚停止踩踏时,链轮不动了,它却还能跟着后轮咔哒咔哒地空转。后来才知道那东西叫棘轮,一个只允许单向运动、反向立刻锁死的机械结构。很多年后我开始折腾多智能体编… · 2026/11/4 9:26:29
VS2022迁移实战:预编译头从stdafx.h到pch.h的完整指南 1. 为什么一个头文件能让整个项目编译崩溃 如果你最近把老项目从旧版工具链搬到 Visual Studio 2022,大概率会在某个平平无奇的下午撞上这么一幕:满屏红色波浪线,错误列表里刷出几百条 fatal error C1083: 无法打开包含文件"stdafx.h&q… · 2026/11/4 9:25:27
双极步进电机控制实战: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 步进电机驱动实战解析 /* 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工业级双极步进电机控制方案 /* 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% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战: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 步进电机驱动实战解析 /* 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工业级双极步进电机控制方案 /* 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