拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Oracle 19C RAC 部署实战:Linux 7.9 下 iSCSI 多路径与 ASM 配置指南

简介这份PDF文档面向需要在Linux平台搭建Oracle高可用集群的DBA与运维工程师系统讲解Oracle Linux 7.9环境下Oracle 19C RAC集群的完整安装部署流程。内容涵盖系统规划、主机与网络规划、环境配置、Grid Infrastructure安装、数据库实例创建以及测试维护等环节并涉及多路径、ASM磁盘管理与共享存储配置物理环境基于VMware Workstation Pro 16.1模拟。资源包共1个PDF文件大小约10.13MB目录结构完整从前期规划到后期验证逐项展开便于读者按章节对照实操。目前已有600人学习下载适合具备一定Linux与Oracle基础、希望掌握RAC集群部署与排错思路的技术人员参考。1. 为什么我建议你拿这份 Oracle 19C RAC 部署文档当“施工图”而不是“参考书”如果你正在 Linux 7.9 上折腾 Oracle 19C RAC大概率已经翻过一堆官方文档和零散博客最后卡在某个环节——可能是 ASM 磁盘组创建时找不到候选盘可能是 GI 安装到一半报 INS-40411也可能是补丁打完后集群起不来。这份《在 Linux7.9 环境下 Oracle 19C RAC 集群详细安装部署文档》的价值在于它不是概念科普而是一份从虚拟机创建到补丁验证的完整施工记录作者明确写了“实际操作完成次数超过五次以上”并且把物理环境、网络规划、磁盘划分、每一步命令和截图都落到了纸面。文档覆盖的技术栈很明确Oracle Linux 7.9 最小化安装、VMware Workstation Pro 16.1 虚拟化、iSCSI 共享存储、多路径multipath、UDEV 绑定、ASM 磁盘管理、Grid Infrastructure 19.3、Oracle Database 19.3、OJVM 补丁。适合两类人一是刚接触 RAC、需要一份能照着敲的部署手册的初学者二是已经装过单实例、想补齐集群和 ASM 这块短板的运维。不适合想找“一键脚本”的人——这份文档走的是手工路线每一步都要你自己确认输出。2. 系统规划与共享存储三节点网络和 iSCSI 多路径怎么落地2.1 主机与网络规划三块网卡各走各的流量文档里的物理环境是三个节点rac121、rac122 做 RAC 集群节点server 节点同时充当 YUM 源、NTP 时间服务器、iSCSI 存储服务器和数据库测试服务器。这个设计在实验环境里很常见——用一台机器把基础设施角色全包了省资源。但你要清楚生产环境不会这么干存储和计算混在一起是拿稳定性换便利。网络规划是 RAC 部署里最容易埋雷的地方。文档把网络分成了三块网络名称用途地址段示例业务网络对外提供业务、客户端连接192.168.31.x心跳网络节点间心跳通信192.168.122.x共享存储网络节点与 iSCSI 存储通信192.168.99.x每台 RAC 节点配三块网卡分别对应这三个网络。这里有个血泪经验心跳网络和存储网络千万不要复用同一块网卡否则 iSCSI 流量和集群心跳互相抢带宽轻则集群误判节点离线重则直接脑裂。文档里 rac121 配了 192.168.31.121、192.168.122.121、192.168.99.121 三个地址rac122 同理server 节点则是 192.168.31.99、192.168.122.99、192.168.99.99。虚拟机创建时网络适配器要对应好ens33 走直连模式业务网络ens34 走 VMnet1心跳ens37 走 VMnet2存储。如果你在 VMware 里把这几块网卡桥接错了后面 iSCSI 发现 target 时会直接超时排查起来很费时间。2.2 iSCSI 服务端配置target 和 LUN 怎么划server 节点作为 iSCSI 存储服务器需要先装 targetcli 或 scsi-target-utils然后划分 LUN。文档里共享磁盘的规划是OCR 4GB×3、FRA 10GB×3、DATA 15GB×3。也就是说你要在 server 节点上创建 9 个 LUN分别对应三块 OCR 盘、三块 FRA 盘、三块 DATA 盘。常见做法是用 targetcli 来配# 安装 targetcli yum install -y targetcli # 进入 targetcli 交互界面 targetcli # 创建 backstore以 OCR 盘为例创建三块 4G 的块设备 /backstores/block create ocr1 /dev/sdb1 /backstores/block create ocr2 /dev/sdc1 /backstores/block create ocr3 /dev/sdd1 # 创建 iSCSI target /iscsi create iqn.2022-02.com.rac:server # 创建 LUN 并绑定到 target /iscsi/iqn.2022-02.com.rac:server/tpg1/luns create /backstores/block/ocr1 /iscsi/iqn.2022-02.com.rac:server/tpg1/luns create /backstores/block/ocr2 /iscsi/iqn.2022-02.com.rac:server/tpg1/luns create /backstores/block/ocr3 # 配置 ACL允许 rac121 和 rac122 连接 /iscsi/iqn.2022-02.com.rac:server/tpg1/acls create iqn.2022-02.com.rac:rac121 /iscsi/iqn.2022-02.com.rac:server/tpg1/acls create iqn.2022-02.com.rac:rac122 # 保存配置 saveconfig这段配置的逻辑是先把本地块设备注册成 backstore再创建 iSCSI target把 backstore 作为 LUN 挂到 target 下最后通过 ACL 控制哪些 initiator 可以连接。参数上要注意backstore 的名字ocr1、ocr2只是逻辑标识实际对应的是 /dev/sdb1 这类物理分区或逻辑卷。如果你在 server 节点上用文件模拟磁盘性能会差很多实验可以但别拿来测 I/O 密集型场景。配完后在 RAC 节点上执行发现和登录# 发现 target iscsiadm -m discovery -t sendtargets -p 192.168.99.99 # 登录 target iscsiadm -m node -T iqn.2022-02.com.rac:server -p 192.168.99.99 -l # 查看本地磁盘 lsblk fdisk -l登录成功后rac121 和 rac122 上应该能看到新的磁盘设备比如 /dev/sdb 到 /dev/sdj。但这时候设备名可能不稳定——重启后 /dev/sdb 可能变成 /dev/sdc。所以下一步必须做多路径和 UDEV 绑定。2.3 多路径配置与 UDEV 绑定让磁盘名固定下来多路径的作用是当节点通过多条路径访问同一块 iSCSI LUN 时multipath 会把它们聚合成一个设备比如 /dev/mapper/mpatha并提供冗余和负载均衡。文档里的步骤是先检查 multipath 是否启用然后配置服务再查看多路径信息最后编辑绑定信息。# 检查 multipath 是否安装 rpm -qa | grep multipath # 如果没有安装 yum install -y device-mapper-multipath # 启用并启动服务 systemctl enable multipathd systemctl start multipathd # 查看多路径信息 multipath -llmultipath -ll的输出会列出每个 mpath 设备对应的 WWID 和路径。WWID 是磁盘的唯一标识UDEV 绑定就是靠它来固定设备名的。文档里编辑 /etc/multipath/bindings 文件给每个 WWID 指定一个别名比如 mpathocr1、mpathfra1、mpathdata1。然后在 /etc/multipath.conf 里配置 alias 和 uid/gid。接下来是 UDEV 规则目的是让 /dev/dm-* 设备在系统启动时自动绑定到固定的名字并且设置正确的属主和权限grid:asmadmin660。常见做法是写一个 /etc/udev/rules.d/99-oracle-asmdevices.rules 文件# 获取每个 LUN 的 WWID 和对应的 dm 设备名 # 可以用 scsi_id 或 /usr/lib/udev/scsi_id 获取 /sbin/scsi_id -g -u -d /dev/sdb # 根据输出编写 UDEV 规则 KERNELdm-*, ENV{DM_UUID}mpath-36001405xxxxxxxx, SYMLINKasm-ocr1, OWNERgrid, GROUPasmadmin, MODE0660这里的关键参数是 DM_UUID它对应 multipath 设备的 UUID。如果你写错了 UUIDUDEV 规则不会生效ASM 扫描时看不到候选盘。文档里还提到用 udevadm trigger 和 udevadm settle 来让规则立即生效然后 ls -l /dev/asm-* 确认权限。注意UDEV 规则里的设备名asm-ocr1、asm-data1要和后面 ASM 磁盘组创建时用的路径一致。如果你在 GI 安装界面里选错了盘后面想换盘就得删磁盘组重建代价很大。3. 系统环境预配置从防火墙到互信哪些参数不能抄错3.1 防火墙、SELinux 与内核参数文档在 SERVER 节点和 RAC 节点上都做了防火墙和 SELinux 的禁用。命令很简单# 禁用 SELinux sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config # 停止并禁用 firewalld systemctl stop firewalld systemctl disable firewalld # 确认状态 systemctl status firewalld getenforce但这里有个坑sed 改完 config 文件后当前运行的 SELinux 状态不会立即变需要重启才生效。如果你不重启就继续装 GI可能会遇到权限相关的报错。我一般会 setenforce 0 临时关掉再重启确认永久生效。内核参数在 /etc/sysctl.conf 里配置文档里列了 shmmax、shmall、sem、file-max、ip_local_port_range 等。这些参数在 Oracle 19C 里的推荐值比 11g 时代宽松了不少但如果你内存特别大比如 256G 以上shmmax 设成物理内存的一半就够了不用设成全部。sem 的四个值分别是信号量集合最大值、系统级信号量最大值、单次操作最大信号量数、系统级信号量最大数。文档里的值可以直接抄但如果你的并发连接数特别高可能需要调大。limits.conf 里要配 oracle 和 grid 用户的 nofile、nproc、memlock。memlock 建议设成 unlimited否则 GI 安装时可能报内存锁定失败。配置完后要确认 /etc/pam.d/login 里有session required pam_limits.so否则 limits.conf 不生效。3.2 用户、目录与 YUM 源文档里创建了两个用户grid 和 oracle。grid 用户负责 GI 和 ASMoracle 用户负责数据库实例。目录规划是目录用途属主/u01/app/gridGI 基本目录grid:oinstall/u01/app/19c/gridGI 安装目录grid:oinstall/u01/app/oracleDB 基本目录oracle:oinstall/u01/app/oracle/19c/db_1DB 安装目录oracle:oinstall/u01/app/oraInventory信息目录grid:oinstall创建目录时要注意权限/u01/app/grid 和 /u01/app/oracle 的权限是 775oraInventory 是 770。如果你把 oraInventory 的权限设成 755GI 安装时会报 INS-32025 之类的错误。YUM 源配置在 server 节点上做可以用本地 ISO 挂载也可以用网络源。文档里用的是本地源配置 /etc/yum.repos.d/local.repobaseurl 指向挂载点。然后安装 preinstall 包yum install -y oracle-database-preinstall-19c这个包会自动帮你配好内核参数、用户、目录和依赖包。但文档里是手工配的如果你用 preinstall 包要注意它可能会覆盖你之前的手工配置比如 limits.conf 里的值。我一般会先装 preinstall再根据实际情况微调。3.3 NTP 时间同步与 SSH 互信NTP 配置在 server 节点上做rac121 和 rac122 作为客户端同步 server 的时间。文档里编辑 /etc/ntp.conf注释掉默认的 server 行加上server 192.168.31.99然后启动 ntpd 并设置开机自启。验证用ntpq -p或chronyc sources如果用的是 chrony。时间同步在 RAC 里非常关键。如果两个节点时间差超过 30 秒集群心跳会出问题CRS 可能无法启动。我遇到过因为虚拟机挂起导致时间漂移集群直接起不来的情况最后只能强制重启。SSH 互信是 GI 安装的前提。文档里配了 grid 和 oracle 用户的双向互信包括 rac121 和 rac122 之间、以及各自对本机的互信。配置步骤是生成密钥、分发公钥、验证免密登录。常见做法是# 在 rac121 上以 grid 用户执行 ssh-keygen -t rsa -b 2048 ssh-copy-id rac121 ssh-copy-id rac122 # 在 rac122 上同样操作 ssh-keygen -t rsa -b 2048 ssh-copy-id rac121 ssh-copy-id rac122 # 验证 ssh rac121 date ssh rac122 date验证时要注意第一次连接会提示 yes/no一定要先手动连一次把 known_hosts 建好否则脚本执行时会卡住。文档里还提到检查互信时要确认返回的 hostname 和 date 都正确如果 hostname 不对说明 /etc/hosts 配错了。4. GI 与数据库部署ASM 磁盘组和 DBCA 建库的实操细节4.1 Grid Infrastructure 安装先决条件检查与脚本执行GI 安装是 RAC 部署里最重的一步。文档里的流程是先跑集群环境验证cluvfy然后开始安装安装过程中会提示执行 root.sh 脚本。cluvfy 的命令大致是cd /u01/app/19c/grid ./runcluvfy.sh stage -pre crsinst -n rac121,rac122 -verbosecluvfy 会检查内核参数、用户限制、网络配置、存储权限、NTP 同步、SSH 互信等。如果某项失败它会给出具体的修复建议。常见失败项包括memlock 没设成 unlimited、/dev/shm 太小、NTP 没同步、UDEV 权限不对。我一般会先把 cluvfy 跑通再开始安装否则安装到一半报错更麻烦。安装时选择“Install Oracle Grid Infrastructure for a Cluster”配置类型选“Configure an Oracle Standalone Cluster”。网络配置里要填 SCAN 名称和端口SCAN 地址是 192.168.31.125端口默认 1521。SCAN 名称需要在 DNS 或 /etc/hosts 里能解析到三个 IP但实验环境里通常只配一个 IP 也能过。ASM 磁盘组创建时GI 安装程序会扫描 /dev/asm-* 设备。如果你之前 UDEV 绑定没做好这里会看不到候选盘。文档里 OCR 盘选的是 4GB×3冗余模式选 Normal三块盘做 Normal 冗余实际可用空间是两块盘的容量。FRA 和 DATA 盘在 GI 安装完成后单独创建。安装到最后会提示在两个节点上分别执行 root.sh。执行顺序是先在 rac121 上执行等它跑完再在 rac122 上执行。root.sh 会配置集群服务、启动 CRS、注册 ASM 实例。执行过程中会输出大量日志如果卡住不动可以另开一个终端 tail -f /u01/app/oraInventory/logs/ 下的日志。4.2 ASM 磁盘组创建与数据库软件安装GI 装完后用 asmca 创建 FRA 和 DATA 磁盘组。FRA 盘 10GB×3冗余模式选 External因为实验环境不做 FRA 冗余DATA 盘 15GB×3冗余模式选 Normal。创建时要注意 AU 大小默认 1MB 对大多数场景够用但如果你的数据文件很大可以考虑 4MB。数据库软件安装用 runInstaller选择“Install database software only”然后选 RAC 安装。安装过程中要指定 GI 的 home 路径和 OSASM 组。装完后同样要在两个节点上执行 root.sh。4.3 DBCA 建库与集群状态验证建库用 dbca选择“Create a database”然后选“Oracle Real Application Clusters (RAC) database”。实例名是 orcl1 和 orcl2字符集 AL32UTF8监听端口 1521。数据文件放在 DATA归档放在 FRA。建库过程中会提示你指定密码文档里用的是 xaosky2108。建完后验证集群状态# 查看集群状态 crsctl stat res -t # 查看数据库实例状态 srvctl status database -d orcl # 查看监听状态 lsnrctl status # 查看 ASM 磁盘组 asmcmd lsdgcrsctl stat res -t的输出里每个资源的状态应该是 ONLINE如果某个资源是 OFFLINE 或 INTERMEDIATE说明有问题。常见的是 VIP 起不来原因通常是 /etc/hosts 里 VIP 地址配错了或者网卡没起来。5. 补丁安装与集群测试OJVM 补丁和强制重启怎么过5.1 补丁安装前的准备与冲突检测文档里的补丁安装流程很完整创建目录、拷贝文件、改权限、查看 OPatch 版本、替换自带 OPatch、检查 GI 和 DB 主页清单一致性、冲突检测、空间检查。这里有几个容易翻车的点第一OPatch 版本必须匹配。Oracle 19C 的补丁通常要求 OPatch 版本在 12.2.0.1.20 以上。如果你用安装介质自带的 OPatch版本可能不够需要从补丁包里替换。替换前先备份原 OPatch 目录。第二冲突检测用opatch prereq CheckConflictAgainstOHWithDetail -ph ./如果输出里有冲突必须先解决冲突再打补丁。常见冲突是之前打过其他补丁没回滚干净。第三空间检查用opatch prereq CheckSystemSpace -ph ./确保 /u01 有足够空间。GI 补丁通常需要 10GB 以上临时空间。5.2 集群补丁安装节点一和节点二的顺序集群补丁安装是滚动式的先关节点二的集群在节点一上打补丁然后关节点一启动节点二在节点二上打补丁最后启动节点一。文档里的步骤是# 在节点一上查看集群状态 crsctl stat res -t # 关闭节点二集群 ssh rac122 crsctl stop crs # 在节点一上打补丁 cd /u01/patch/34160473 opatch apply # 关闭节点一集群 crsctl stop crs # 启动节点二集群 ssh rac122 crsctl start crs # 在节点二上打补丁 ssh rac122 cd /u01/patch/34160473 opatch apply # 启动节点一集群 crsctl start crs # 查看集群状态 crsctl stat res -t这个顺序不能乱。如果你在节点一打补丁时节点二还在跑可能会导致集群版本不一致CRS 起不来。打补丁过程中如果报错先看 opatch 的日志通常在补丁目录的 cfgtoollogs 下。5.3 数据库补丁与 OJVM 补丁数据库补丁安装和集群补丁类似也是滚动式。先关节点二的实例在节点一上打补丁然后关节点一启动节点二在节点二上打补丁最后启动节点一。OJVM 补丁比较特殊它需要数据库处于 upgrade 模式并且要执行datapatch来加载 SQL 变更。# 加载 SQL 到数据库 cd $ORACLE_HOME/OPatch ./datapatch -verbose # 查看补丁信息 $ORACLE_HOME/OPatch/opatch lspatchesdatapatch 执行时间可能比较长取决于数据库里的对象数量。如果中途报错可以查 $ORACLE_HOME/cfgtoollogs/datapatch 下的日志。5.4 集群测试强制重启和正常重启文档里的测试部分很实用查看数据库配置、本地登录、远程登录、集群状态检查、监听状态查看、强制重启、正常重启。强制重启测试是模拟节点故障直接 reboot 一台节点看集群是否能自动把资源切换到另一台。正常重启测试是按顺序关实例、关集群、关主机然后按顺序启动。强制重启后用crsctl stat res -t查看资源状态VIP 和监听应该自动漂移到存活节点。如果没漂移检查crsctl stat res -p里的 RESTART_ATTEMPTS 和 FAILOVER 配置。正常重启时启动顺序是先启动集群crsctl start crs再启动实例srvctl start instance最后确认监听lsnrctl status。6. 补丁验证与日常巡检几个我每次都会走的确认动作补丁打完不代表万事大吉我一般会走一遍验证流程。先看集群补丁信息# 查看 GI 补丁 $GRID_HOME/OPatch/opatch lspatches # 查看 DB 补丁 $ORACLE_HOME/OPatch/opatch lspatches # 查看 OJVM 补丁 $ORACLE_HOME/OPatch/opatch lspatches | grep -i ojvm然后确认数据库版本和补丁号-- 在数据库中执行 SELECT * FROM v$version; SELECT * FROM dba_registry_sqlpatch;dba_registry_sqlpatch会列出所有已应用的 SQL 补丁包括 OJVM。如果 OJVM 补丁没出现在这里说明 datapatch 没跑成功需要重新跑。接下来是集群健康检查# 查看集群资源 crsctl stat res -t # 查看集群配置 crsctl stat res -p # 查看 ASM 磁盘组 asmcmd lsdg # 查看监听 lsnrctl status # 查看 OCR 备份 ocrconfig -showbackupOCR 备份容易被忽略。RAC 集群的 OCR 默认每天自动备份但如果你的集群刚装完还没到备份时间OCR 是没有备份的。我一般会手动做一次ocrconfig -manualbackup然后确认备份文件在 DATA 或 FRA 里。还有一个我每次都会做的动作检查crsctl check cluster -all和crsctl check crs。这两个命令的输出能快速告诉你集群的各个组件是否正常。如果 CRS 是 ONLINE但 CSS 是 OFFLINE说明心跳网络有问题需要检查网卡和交换机配置。最后是补丁回滚的后悔药。打补丁前一定要确认 OPatch 的 lsinventory 输出记下当前补丁号。如果打完补丁出问题可以用opatch rollback -id patch_id回滚。但回滚 GI 补丁比回滚 DB 补丁麻烦因为 GI 补丁涉及集群件回滚后可能需要重新执行 root.sh。从那以后我每次打补丁前都会强制走一遍opatch lsinventory 存档、ocrconfig -manualbackup、确认 /u01 空间、确认节点二集群已关。这几步花不了十分钟但能省掉后面几小时的排查。希望帮到你。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门