ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CentOS 7.5安装Oracle 19c RAC全流程:GRID集群、ASM与建库实践

2026/10/3 1:54:52 拓冰建站 浏览量
CentOS 7.5安装Oracle 19c RAC全流程:GRID集群、ASM与建库实践 简介这份PDF教程聚焦在VMware虚拟化平台上部署CentOS 7.5并完整实施Oracle 19c RAC集群的实战过程适合数据库工程师、软件工程师及有志于高可用数据库方向的学习者。内容以111页图文步骤串起全流程从虚拟机创建、网络配置到GRID软件与ASM磁盘配置再到RAC节点实例创建、监听与客户端连接同时给出空间规划、IP规划等关键参数示例并覆盖Linux环境下数据库及ASM的日常运维操作。资源为单个PDF文件约5.24MB便携易查。已有418人通过这份资料系统学习RAC部署对想掌握Linux集群数据库搭建与运维的人员是一份扎实的参考。1. 别拿生产库练手这套 CentOS 7.5 Oracle 19c RAC 手册为什么值得完整走一遍我拆过几套 RAC 环境有个很直观的感受CentOS 7.5 Oracle 19c RAC 这套组合的难点从来不在数据库软件本身而在集群那一层——GI 集群资源、ASM 磁盘组、两个节点之间的通信和存储共享。网上单实例教程一抓一把一到 RAC 就断档因为 RAC 是两节点的事所有资源都要成对出现有一个环节没配好后面 root.sh 就能卡你半天。这份文档恰好把 VMware 建机、CentOS 7.5 初始化、GRID 软件安装、ASM 磁盘组、19c RAC 建库到客户端连接整条链路串了起来适合两类人一类是刚接触 Linux 的数据库工程师想在虚拟机里把 GRID、ASM、RAC 完整过一遍另一类是手里管着生产环境、但一直没机会从零搭一套的 DBA。跟着走一遍你对集群原理、磁盘规划、监听和运维的理解会完全不一样。先把虚拟机踩穿再上生产就稳得多。2. 部署前规划IP 规则、存储目录与 VMware 建机的三个关键设置很多人拿到这套PDF直接跳去装系统反而在分区、IP、网卡这些事上反复返工。文档第2章给了一张环境规划表我建议你把它抄在便签上贴显示器旁边后面每一步都回来对着看。RAC 部署最怕临时起意单实例搭建可以后面再改参数RAC 里数据库名、块大小、字符集这类东西建库时定错重来的成本是成倍的。2.1 先写死环境表O9crac、8192 块大小与 GBK文档里的环境规划表是这一整套部署的基准项目值操作系统CentOS 7.5数据库版本Oracle 19.0.0.1数据库名O9crac数据块大小8192 字节字符集GBKPublic IP192.168.1.80 / 192.168.1.81数据库名 O9crac 会同时用于实例名O9crac1、O9crac219c 里默认走 CDB/PDB 架构这一步 dbca 建库时可以直接选只建 CDB省去 PDB 的维护成本。8192 字节块大小是 OLTP 业务的常见配置注意 dbca 里默认模板一般不是 8192必须显式指定这个后面第4章我会再强调一次。字符集 GBK 是给中文业务系统准备的如果你所在环境数据量不大用 AL32UTF8 也完全可以但文档既然规划成 GBKdbca 里就不能用默认值这是个容易翻车的小地方。2.2 空间规划/u01、oradate、backup、arch 的分工文档里的空间规划表挺有代表性它是后面 LVM 和 ASM 磁盘组设计的直接依据目录空间大小说明/80G系统根目录/u01100GOracle 安装目录System200G系统相关存储oradate2T500G*4Oracle 数据文件目录backup6T2T*3备份目录arch3T1T*3归档日志目录grid30G10G*3ASM 安装与 OCR/表决盘我的经验是很多新手会照着这张表在操作系统里把 oradate、arch、backup 全部 mkdir 建一遍结果建库时数据文件还是不知道该放哪。这里要分清两层——/ 和 /u01 是操作系统文件系统层面的规划走 LVM 管理而 oradate、arch、backup 这三大块实际落地是 ASM 磁盘组对应第4章我会建的 DATA、ARCH、BACKUP。物理磁盘通过 udev 规则暴露给 GI 之后ASM 直接接管裸盘不需要也不应该在 OS 里格式化挂载。这个认知转换过来后面就不会纠结“2T 目录为什么 df -h 看不到”。2.3 IP 规则与 VMware 建机桥接、BIOS 与 80G 系统盘文档的 IP 规划表是 RAC 网络设计里很标准的一套节点主机名Public IPPrivate IPVIPSCAN IP节点1o9crac1192.168.1.8010.10.10.80192.168.1.82192.168.1.84节点2o9crac2192.168.1.8110.10.10.81192.168.1.83同上三条规则要记住第一Public、VIP、SCAN 必须在同一网段因为 VIP 漂移时本质是 MAC/IP 的接管第二Private 用独立网段这里 10.10.10.0/24走单独一块虚拟网卡专门承载心跳和 Cache Fusion别和业务网段混第三SCAN IP 是文档里只规划了 192.168.1.84 一个域名解析里两个节点都指向它客户端负载均衡和故障转移都靠它。VMware 建机这一块文档是从“文件→新建虚拟机”一步步截图走的我按实用习惯提三个关键点其余按向导默认即可。一是固件类型选 BIOS 而非 UEFICentOS 7.5 在这个组合下 BIOS 兼容性最省事二是网络类型建议直接选桥接BridgedNAT 模式下后续 Windows 客户端连 RAC 的 VIP/SCAN 容易被 VMware 的 NAT 规则搅乱三是系统盘按文档给 80G实际安装时 CentOS 根分区给 60-70G 就够剩余 TEMP 空间可以留着做 LVM 扩容练习后面第3章我会用新加磁盘演示 LVM 在线扩容。提示虚拟机创建完成后先别急着装系统把光驱指向 CentOS-7.5-x86_64-DVD-1804.iso并把“启动时连接”勾上。这一步截图看起来不起眼但最容易忘。3. 系统层准备CentOS 7.5 安装、内核参数与 ASM 裸盘识别环境规划表写死后才轮到动手。这一章的目标只有一个让两个节点在系统层面长得一模一样。Linux 下装 Oracle 19c RAC系统准备阶段的差异是后面所有报错的源头节点1能过、节点2挂掉十有八九是这里埋的雷。3.1 安装 CentOS 7.5Minimal、分区与三处系统设置安装源是 CentOS-7.5-x86_64-DVD-1804.iso软件选择我一般直接选 Minimal图形界面和开发工具后面按需补减少攻击面和无关服务。磁盘分区建议手动分/boot 给 1G根 / 给 60G 左右swap 给内存的 1.5 倍——我在 VMware 里给每节点分配 8G 内存swap 就给 12G。Oracle 官方安装检查对 swap 有硬性要求内存 8G 时 swap 小于 4G 会直接判失败这是新手常踩的第一道坎。装完系统后固定做三件事# 1. 关闭 SELinux临时永久都改 setenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config # 2. 关闭防火墙RAC 节点间通信端口太多防火墙过滤规则极易漏放 systemctl disable firewalld --now # 3. 确认主机名 hostnamectl set-hostname o9crac1这三条命令的逻辑SELinux 和 firewalld 在 RAC 场景下是典型的高危变量它们拦截的东西你看不到日志而且两个节点配置不一致时节点2 的 VIP 起不来都查不出原因。单实例环境可以留着防火墙RAC 不建议赌这个概率。节点2 重复一遍主机名换成 o9crac2。3.2 hosts、用户组与目录装 GI 前必须写死的三件事RAC 的节点通信依赖 DNS 或者 /etc/hosts。虚拟机环境里最稳的做法是直接写死 hosts不依赖 DNS 服务器。我一般会给两个节点配完全相同的 hosts 文件192.168.1.80 o9crac1 192.168.1.81 o9crac2 192.168.1.82 o9crac1-vip 192.168.1.83 o9crac2-vip 192.168.1.84 o9crac-scan 10.10.10.80 o9crac1-priv 10.10.10.81 o9crac2-priv注意格式Public/VIP/SCAN 用公网 IPPrivate 地址配 -priv 后缀主机名与 IP 一一对应千万别加多余别名。GI 做网络检查时是按这个文件解析节点名的写错一个字符cvu 检查就会报 PRVF-0002 这类解析失败。用户和组是 GI 与 DB 分层隔离的基础。19c 的 Grid Infrastructure 要求 grid 用户运行集群软件oracle 用户运行数据库软件两者必须分属不同主组但共享辅助组# 组统一用官方推荐的 GID groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper groupadd -g 54327 asmdba groupadd -g 54328 asmoper groupadd -g 54329 asmadmin # grid 用户主组 oinstall辅助组 dba, asmdba, asmoper, asmadmin useradd -u 54321 -g oinstall -G dba,asmdba,asmoper,asmadmin grid # oracle 用户主组 oinstall辅助组 dba, oper, asmdba useradd -u 54322 -g oinstall -G dba,oper,asmdba oracle组设计不复杂但含义要清楚asmadmin 是 ASM 实例的管理员组grid 必须在这个组里而 oracle 只需要 asmdba 来访问 ASM 里的数据文件没有 asmadmin 权限就不能去 drop 磁盘组这是权限边界。目录规划上统一把安装目录放在 /u01 下mkdir -p /u01/app/19c/grid /u01/app/oracle/product/19c/dbhome_1 chown -R grid:oinstall /u01/app/grid /u01/app/19c/grid chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u013.3 内核参数、依赖包与 limits让 cvu 检查一次过GRID 安装前有个 runcluvfy.sh 前置检查它对内核参数和系统资源有硬性评分。与其等它报红不如提前配好。我常用的内核参数是这些cat /etc/sysctl.conf EOF fs.aio-max-nr 1048576 fs.file-max 6815744 kernel.sem 250 32000 100 128 kernel.shmall 1073741824 kernel.shmmax 4398046511104 net.core.rmem_default 262144 net.core.rmem_max 4194304 net.core.wmem_default 262144 net.core.wmem_max 1048576 net.ipv4.ip_local_port_range 9000 65500 vm.swappiness 10 EOF sysctl -p参数含义说几个关键的kernel.sem 四个值分别对应信号量GI 启动 cssd 时资源紧张会直接报错net.ipv4.ip_local_port_range 把端口范围扩到 9000 以上是为了避开监听 1521 和集群注册端口RAC 节点间通信会大量建短连接vm.swappiness 设成 10避免 Linux 没事就把内存页换到 swapOracle 实例跑起来后内存页换出是性能大忌。两个节点必须一致。依赖包方面19c RAC 在 CentOS 7.5 上最省事的方式是直接用 yum 一把装齐yum -y install bc binutils compat-libcap1 compat-libstdc-33 \ gcc gcc-c glibc glibc-devel ksh libaio libaio-devel \ libXext libXtst libX11 libXau libXi make sysstat unixODBC \ unixODBC-devel libnsl这些包里 libnsl 最容易漏CentOS 7.5 默认源里的 libnsl 不带 32 位版本时会报错Oracle 安装检查只提示缺包但不告诉你哪来的属于典型的黑匣子报错。limits.conf 也要同步改cat /etc/security/limits.conf EOF grid soft nofile 1024 grid hard nofile 65536 grid soft nproc 2047 grid hard nproc 16384 grid soft stack 10240 grid hard stack 32768 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 EOF3.4 LVM 扩容与 ASM 裸盘两种磁盘两条路系统装完后的磁盘管理文档专门提了 LVM。我一般会再加一块 20G 虚拟磁盘演示 LVM 在线扩容当作给 /u01 留后路的练习# 新磁盘 /dev/sdc 不分区直接建 PV pvcreate /dev/sdc vgextend centos /dev/sdc lvextend -L 20G /dev/mapper/centos-root xfs_growfs /这条命令的意思是把新加的 /dev/sdc 变成物理卷并入现有卷组 centos然后扩展根分区逻辑卷xfs 文件系统在线扩容不需要卸载。物理机生产环境一般不这么干但虚拟机上反复建环境这个技能能省不少重装时间。而 ASM 磁盘是另一条路。ASM 要的是裸设备不需要文件系统。在 VMware 里给虚拟机加好对应空间规划的磁盘后按文档是 10G3、500G4、1T3、2T3 这类组合先用 fdisk -l 确认设备名然后用 udev 规则固定属主cat /etc/udev/rules.d/99-oracle-asm.rules EOF KERNELsdb*, OWNERgrid, GROUPasmadmin, MODE0660 KERNELsdc*, OWNERgrid, GROUPasmadmin, MODE0660 KERNELsdd*, OWNERgrid, GROUPasmadmin, MODE0660 EOF udevadm control --reload udevadm trigger ls -l /dev/sd*这里的核心是KERNEL 匹配设备名OWNER 必须设成 grid、GROUP 设成 asmadmin、权限 0660否则 GI 安装时 ASM 无法打开磁盘root.sh 就会卡死。千万别对这些盘执行 mkfsASM 要的是裸盘格式化反而会干扰它识别磁盘头。4. 安装实战GRID 集群、ASM 磁盘组与 Oracle 19c RAC 建库系统层准备做完终于到正题。RAC 的集群原理说白了就是GI 把两个节点聚成一个 clusterASM 让两个实例访问同一份数据文件dbca 建库时把文件放到 DATA 磁盘组实例间的心跳走 private 网络。这一步的安装顺序是固定的先 GRID再数据库软件最后建库乱序必翻车。4.1 解压与前置检查cvuqdisk 先装、runcluvfy 先跑两个安装包分别给到对应归属目录注意以 grid 用户操作 grid home以 oracle 用户操作 db home# grid 用户执行 unzip -q LINUX.X64_193000_grid_home.zip -d /u01/app/19c/grid # oracle 用户执行 unzip -q LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19c/dbhome_1解压时最容易犯的错是用 root 解压再 chown结果压缩包里的软链接全被 chown -R 破坏后期 GI 启动报一堆奇怪错误。常见做法是切到对应用户在自家目录下解压权限天然正确。GRID 解压完成后先装 cvuqdisk 这个隐藏包它不做会在 cvu 检查时直接报 PRVF-7215再跑一遍官方前置检查脚本cd /u01/app/19c/grid/cv/rpm rpm -ivh cvuqdisk-*.x86_64.rpm # 以 grid 用户跑检查一次看全所有失败项 cd /u01/app/19c/grid runcluvfy.sh stage -pre crsinst -n o9crac1,o9crac2 -fixup -verboseruncluvfy.sh 会一次性列出两个节点上所有不满足的条件包括内核参数、依赖包、用户组、网络配置。它给出的 -fixup 参数能自动修复一部分系统设置但我的习惯是把检查输出重定向到文件逐条看不直接全盘接受 -fixup因为有时它会改掉你不想改的系统参数比如把 swappiness 改成 30我在生产环境是不允许的。4.2 runInstaller 与 root.sh先节点1再节点2前置检查通过后以 grid 用户执行 runInstaller。图形界面需要 X11 转发Windows 下我一般用 Xshell 的 Xmanager 或者单独开一个 XmingDISPLAY 设置为客户端 IP:0.0具体问题在第5章排查部分再展开。安装类型选“Oracle Grid Infrastructure for a Cluster”扫描方式这里不启用 GNS直接填写 SCAN 名称和 SCAN IP192.168.1.84GNS 是为没有 DNS 的环境准备的但它在虚拟机上多一套 DHCP 依赖能用静态 SCAN 就别碰 GNS。到磁盘选择页时勾选之前准备的 10G*3 磁盘作为 OCR 和表决盘所在磁盘组组名建议叫 OCR冗余选 NormalASM 密码自己设一个并记住它后面 dbca 建库要用。图形界面填完这些安装程序会在两个节点上创建集群软件。最后一步它会提示你以 root 执行脚本这是 RAC 安装里最神圣的一步# 节点1 上执行等它完全跑完 /u01/app/19c/grid/root.sh # 节点1 的 root.sh 结束、CRS 起来后再到节点2 执行 /u01/app/19c/grid/root.sh顺序铁律先节点1后节点2。root.sh 在节点1 上要完成 OCR 注册、表决盘格式化、CSS 启动全部完成后节点2 才能以加入者身份执行。节点1 执行期间出现“Successfully configured Oracle Grid Infrastructure for a Cluster”才算过卡在中间任何一步都先看日志别急着重复执行。日志位置固定查这三个/u01/app/grid/cfgtoollogs/crsconfig/rootcrs_o9crac1.log /u01/app/oracle/cfgtoollogs/crsconfig/rootcrs_o9crac1.log /u01/app/19c/grid/cfgtoollogs/crsconfig/4.3 asmca 建磁盘组OCR、DATA、ARCH、BACKUP 与空间规划对应GRID 装好后ASM 实例已经在跑。用 grid 用户执行 asmca把剩下的磁盘做成对应磁盘组。这一步直接回看第2章的空间规划表磁盘组名磁盘配置冗余策略用途OCR10G * 3Normal集群注册信息与表决盘GI 安装时已建DATA500G * 4Normal数据文件、控制文件、日志文件ARCH1T * 3External归档日志BACKUP2T * 3ExternalRMAN 备份集这里有个选型逻辑OCR 组必须 Normal 冗余因为表决盘需要三份才能容忍单盘故障DATA 组我给的 Normal四块 500G 盘做两路镜像数据文件不丢是底线ARCH 和 BACKUP 是临时性数据丢了可以再生成用 External 省一半空间。磁盘组创建提交后ASM 会做 rebalance大磁盘组要等一段时间进度可以在 asmcmd 里看asmcmd lsdg # 期望输出每个磁盘组的 StateMOUNTEDUsable_file_MB 有合理值如果归档和备份想省事也可以先只建 DATA 和 ARCHBACKUP 留给后续实验。但生产习惯上我会一次建齐因为磁盘组的创建属于重启也不变的结构性操作早期做完后面运维少一事。4.4 dbca 建库与客户端连接字符集、块大小与 tnsnames数据库软件安装用 oracle 用户执行 dbhome_1 下的 runInstaller类型选“Set Up Software Only”纯装软件不建库建库单独用 dbca 做这是我个人的习惯软件安装只关心二进制的完整建库参数单独审一遍更安全。以 oracle 用户执行 dbca选“Oracle Real Application Clusters database”和“Create a database”到配置页时对照第2章环境表dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName O9crac -sid O9crac \ -characterSet GBK -nationalCharacterSet AL16UTF16 \ -datafileDestination DATA \ -recoveryAreaDestination ARCH \ -memoryPercentage 60参数说明-gdbName 和 -sid 都叫 O9cracdbca 会自动在两个节点上生成 O9crac1、O9crac2 两个实例-characterSet GBK 必须显式给默认 AL32UTF8 和规划不符-datafileDestination 指向 DATA 磁盘组这一步决定了数据文件落在 ASM 而不是本地盘是 RAC 与单实例的分水岭-recoveryAreaDestination 给 ARCH快速恢复区与归档走不同磁盘组避免数据和备份互相挤占。块大小在 General_Purpose.dbc 模板里默认就是 8192不需要额外指定。建库过程会创建监听 LISTENER19c 的监听由 GI 托管dbca 会自动注册到集群不需要以前 11g 时代单独跑 netca。客户端配置连 RAC 的标准姿势是写 tnsnames.ora 指向两个 VIP让客户端自己做负载均衡和故障切换O9CRAC (DESCRIPTION (ADDRESS_LIST (LOAD_BALANCE on) (ADDRESS (PROTOCOL TCP)(HOST 192.168.1.82)(PORT 1521)) (ADDRESS (PROTOCOL TCP)(HOST 192.168.1.83)(PORT 1521))) (CONNECT_DATA (SERVICE_NAME O9crac)))加了 LOAD_BALANCEon 后新会话轮流落到两个 VIP某个节点宕机时连接会自动被引导到存活节点这就是 RAC 给客户端的高可用。手边没有 tnsnames 时也可以直接偷懒用 Easy Connectsqlplus scott/tiger192.168.1.82:1521/O9crac但生产环境不推荐因为 Easy Connect 是单点不做故障转移。5. 常见问题排查五个翻车点与对症方案这套流程我帮人排查过太多次问题高度集中在五个点上。每一条我都按“现象→原因→解决”写你照着定位就行。5.1 runInstaller 起不来X11 图形界面连不上现象图形用户在 Windows 上执行 runInstaller界面弹都不弹终端报Cant connect to X server或者 xterm 窗口能开但 installer 卡白屏。原因DISPLAY 环境变量没导出或 Windows 端的 X Server 没监听。还有一个隐蔽情况用 root 跑 xhost 授权但安装用户是 gridgrid 用户没有访问 X Server 的权限。解决Windows 端先启动 Xming 或 Xmanager然后# 在本地执行允许远端连入 xhost # 在 Linux 节点上以 grid 用户导出 DISPLAY export DISPLAY192.168.x.x:0.0注意这个 192.168.x.x 是 Windows 客户端的 IP不是 Linux 节点的 IP。配置完再执行 runInstaller一般就能出界面。如果 DISPLAY 设对了还不行检查 xhost 输出里有没有网格节点 IP没有就再执行一次 xhost 。5.2 cvu 检查报 cvuqdisk 缺失PRVF-7215 红字现象runcluvfy.sh 在检查 packages 阶段报PRVF-7215: package cvuqdisk not found然后整段检查判 Failed。原因cvuqdisk 这个 rpm 在 GRID 解压目录的 cv/rpm 下不会自动安装漏掉它前置检查就过不了。其实这个包只影响 cvu 能否在节点间收集信息不影响运行但 Oracle 把它设计成硬性检查项。解决先确认包存在再安装两个节点都要装ls /u01/app/19c/grid/cv/rpm/ rpm -ivh /u01/app/19c/grid/cv/rpm/cvuqdisk-*.x86_64.rpmrpm 提示 already installed 说明之前装过直接重跑 runcluvfy。这个包属于一次性补丁重装系统后记得再装。5.3 root.sh 卡死CSS 启动失败ASM 磁盘打不开现象root.sh 执行到CRS-2674: Start of ora.cssd on o9crac1 failed后长时间不动或者在 “Creating OCR keys” 处停住。原因十有八九是 ASM 磁盘属主不对。之前 udev 规则没生效或者干脆用 root 手动 chown 了但设备重扫后属主又变回 root:diskasmdba 组里的 grid 用户根本没权限 open 磁盘。解决先看现实不猜ls -l /dev/sd* # 期望输出应是 grid asmadmin 0 Nov 21 10:30 /dev/sdb如果属主是 root重载 udev 规则udevadm control --reload udevadm triggerreload 后仍然不对就把 /dev/sd* 全部删掉再触发一次用了 udev 规则设备会重新生成。root.sh 二次执行是允许的但要在它失败停止的位置继续别从头重复跑重复跑会报“already configured”。正确姿势是查看日志确认失败点在磁盘识别后修复权限再执行一次 root.sh。5.4 节点间时钟漂移cvu 报时间同步失败现象cvu 检查报PRVF-7532: Time consistency check failed或者节点2 的 cssd 日志里反复出现Amount of time for which the local heart beat is suspended。原因两个 CentOS 虚拟机没有配置 NTPVMware 的挂起/快照恢复操作会让虚拟机的时钟和宿主机不同步两节点时间差超过阈值默认 1000ms集群心跳就会误判节点故障。解决两个节点都配置 chrony指向同一时间源yum -y install chrony systemctl enable chronyd --now chronyc makestep最稳的虚拟机做法是让两个节点的时间源都指到同一台机器。如果两节点还差可以手动 date -s 校准一次再启动集群。旧习惯里 ntpdate 配合 crondCentOS 7.5 上我统一用 chrony它比 ntpd 在虚拟机上收敛快得多而且能和 GRID 的时间同步服务共存。5.5 克隆虚拟机导致 MAC 冲突节点2 网卡起不来现象节点2 是节点1 克隆来的启动后公共 IP 配了但 ping 不通ip addr里看到网卡名变成了 eth1原来的 eth0 不见或者 IP 落到 eth1 上而服务监听在 eth0。原因克隆保留了原模板的 MAC 地址/etc/sysconfig/network-scripts/ifcfg-ens33 里的 HWADDR 字段还指着老网卡新网卡被 udev 识别成新设备和配置对不上。解决编辑节点2 的网卡配置文件删掉 HWADDR 和 UUID 两行重启网络sed -i /^HWADDR/d; /^UUID/d /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network删掉 HWADDR 后ifcfg 文件按 DEVICE 名字匹配网卡就不会再出现 eth0/ens33 错位。这个坑在 VMware 克隆场景几乎是必现的凡是克隆出来的节点都先检查一遍 MAC 再动网络。6. 收尾验证与运维抓手crsctl/srvctl 巡检与磁盘组清理技巧搭建完成不等于跑起来RAC 的验证有一张我的固定清单命令期望输出crsctl stat res -t所有资源 TargetONLINEStateONLINEsrvctl status database -d O9cracO9crac1、O9crac2 两个实例均在 Runningasmcmd lsdg磁盘组 StateMOUNTED无 DGDROPPINGsqlplus / as sysdba能登录任一节点查 gv$instance 看到两个实例验证完数据库资源接下来是两个我在运维里反复用到的技巧。第一RAC 里建表空间一定要显式指定 DATACREATE TABLESPACE tbs_app DATAFILE DATA SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 32G;这段 SQL 的意思是让 Oracle 在 ASM 磁盘组 DATA 上自动分配文件。很多人习惯带路径建表空间在 RAC 里写本地路径就直接违反共享存储原则实例2 根本看不到文件。第二清理不用的 ASM 磁盘组别用 asmcmd 瞎试。asmcmd 没有 drop 命令正确的做法是先用 asmcmd 确认里面没有业务文件asmcmd ls ARCH asmcmd du ARCH确认磁盘组里只剩过期归档或空目录后用 SQL 删sqlplus / as sysasm DROP DISKGROUP ARCH INCLUDING CONTENTS;INCLUDING CONTENTS 会连文件带目录一起删放在测试环境没事生产上执行前一定把 asmcmd ls 的输出留档。从那以后我每搭完一套 RAC 都强制走一遍上面那张验证清单磁盘组删除动作只在自己确认过文件清单之后才做——这条血泪经验换来的习惯也分享给你希望帮到你。本文还有配套的精品资源点击获取