Linux下Oracle 19c + ASM生产环境部署实战:从选型到运维
我们直接开始讲重点。生产环境的数据库选型与搭建,和开发机上随便跑个实例完全是两码事。多实例共存、存储选型、高可用冗余、备份恢复策略、日常巡检的便利性,这些都得在装系统之前想清楚,否则后面每加一个数据库都要动一次存储架构,那种痛苦经历过一次就再也不想有第二次。
这篇文章我围绕 Linux + Oracle 19c + ASM 的组合,把从选型到投产的完整链路拆开讲透。内容主要来自我在几个生产项目里的实际部署经验,包含原理层面的解释、具体到可以直接复制的命令和参数、以及只有在生产环境摸爬滚打才能总结出来的那些坑。阅读时长大约 15 分钟,适合刚接触 Oracle 且需要在 Linux 上做正经部署的 DBA、运维,以及被安排去搭数据库环境的开发同学。
1. 生产环境为什么是 ASM,而不是普通文件系统
先说清楚一个核心问题:Linux 下的 Oracle 生产库,数据文件为什么不直接放在 ext4 或者 xfs 上,非要用 ASM 绕一道?这是很多刚开始接触 Oracle 的人最大的困惑。
1.1 ASM 解决了什么问题
把 ASM 理解成一个专为数据库设计的分布式卷管理工具就顺了。它不是你理解的那种传统 LVM——LVM 只会把磁盘合并成逻辑卷,然后给你一个 /dev/vg01/lv01 这样的设备路径,至于数据怎么分布、冗余怎么做、坏盘了怎么办,LVM 一概不管,那是文件系统和 RAID 卡的事。
ASM 做的事情要狠得多。它接管了"数据到底写在哪个磁盘上"这件事。当你建表空间的时候,只需要告诉 ASM 这个数据文件放到哪个磁盘组,它自己会把文件打散成一个个 Allocation Unit(默认 1MB),然后均匀分布到磁盘组内的所有物理磁盘上。这意味着只要磁盘组里有多块盘,IO 天然就是并行的。这在过去用传统文件系统加 RAID 5 的年代,是必须在数据库层面手动做数据文件跨盘分布、搞一堆表空间放在不同目录才能勉强接近的性能,现在一个 ASM 实例全给你包圆了。
1.2 镜像与冗余:数据库级的 RAID
生产环境必须面对一个现实:磁盘会坏。传统做法是依赖存储阵列的 RAID 5 或者 RAID 10。ASM 提供了另一层选择——它在软件层就实现了镜像。
ASM 有三种冗余模式:
- 外部冗余:完全靠存储阵列的 RAID 保护,ASM 不做任何冗余,适合底层已经是 RAID 10 的 SAN 存储。
- 正常冗余:ASM 自己做两路镜像,数据写一份,镜像再写一份到不同的盘上,等价于 RAID 1 的效果,两块盘同时坏也不会丢数据。这是大部分生产环境的选择。
- 高冗余:三路镜像,至少需要三块盘以上,安全性最高,但磁盘利用率只有三分之一,非极端要求一般不用。
生产库选正常冗余,两块盘做一个小型磁盘组,既能抗住一块盘物理损坏,又不至于让磁盘成本翻三倍。需要注意,ASM 正常冗余要求的是故障组维度,真正生产上建议故障组分散在不同的 HBA 卡或者存储控制器路径下,避免单卡故障带崩整個磁盘组。
1.3 为什么 12c 之后的新版本更喜欢 ASM
Oracle 从 12c 开始明确地把 ASM 作为唯一推荐的数据库存储方案。除了数据和备份之外,OCR(集群注册表)和投票盘也必须放在 ASM 磁盘组(或者共享文件系统)里。到了 19c,单机环境装 ASM 更是标准动作,因为 Grid Infrastructure(GI)统一管理了 ASM 实例和集群件(单机就是 Oracle Restart),数据库能用 srvctl 统一启停,开机自动拉起,比传统 rc.local 里写一堆 dbstart 要可靠得多。
注意:单机环境下,GI 的集群件退化为 Oracle Restart,只负责拉起本机的 ASM 实例和数据库实例。虽然名字里带 Grid,但不需要配置多节点 RAC。
2. 安装前的环境规划:操作系统、目录、用户和磁盘
我在很多项目里见过同一个通病:操作系统装完直接就开始跑图形化安装界面,结果装到一半报这个错那个错,回头发现是系统参数没调、用户没建全、磁盘没绑定固定盘符。生产环境安装 Oracle,最少要留出半天时间做前置准备,这里每个细节都值得较真。
2.1 操作系统版本与内核参数
19c 的官方支持范围很广,Oracle Linux 7/8、RHEL 7/8、SUSE 12/15 都在行列。最稳妥的是 Oracle Linux 7.9 搭配 UEK(Unbreakable Enterprise Kernel),毕竟 Oracle 自家底裤都穿在这套内核上,兼容性最没问题。如果企业强制用 CentOS,7.9 也完全没问题,但 CentOS 8 在 2024 年已经全系 EOL,不建议新项目踩坑。
内核参数是硬门槛,直接贴生产环境可用的配置。注意这些参数不少是起作用的,修改完需要 sysctl -p 立即生效。
shmmax 是共享内存段的最大字节数,生产上建议直接给到物理内存的一半到 80%。不要想当然地按网上旧教程设一个 4GB 或者 8GB,19c 的 MEMORY_TARGET 或 SGA_TARGET 如果大于 shmmax,实例根本起不来,报 ORA-27102 的经典错误就是这么来的。
2.2 用户、组和目录结构
Oracle 安装的一个老传统是权限隔离:GI(包含 ASM)用 grid 用户,数据库软件用 oracle 用户。两个用户要分属于不同的主组,但这两个用户又必须同属于 oinstall 组,这样它们才能读写同样一套 ORACLE_HOME 下的共享文件。
这个目录规划很重要。grid 的家目录和 oracle 的家目录必须分开,GI 软件和数据库软件不能装到同一个 ORACLE_HOME,否则 asmcmd、srvctl 这些命令和 sqlplus、dbca 会互相打架,这在生产环境是硬性规则。
2.3 磁盘规划与多路径配置
ASM 磁盘组对应的底层设备,生产环境不要直接使用 /dev/sdb、/dev/sdc 这种径动会变的盘符。服务器重启或者 BIOS 枚举顺序变化,盘符可能莫名其妙错位。生产规范做法是两种:
- 共享 SAN 存储:用 multipath 配置多路径软件,虚拟出 /dev/mapper/mpath* 设备。
- 本地直连盘:用 udev 规则绑定磁盘的 WWID 或 UUID,固定成自定义名字。
这里贴一个 udev 绑定示例。用 /usr/lib/udev/scsi_id -g -u /dev/sdb 拿到磁盘的 WWID,然后写进规则:
配置完后重新加载规则并触发:
看到 data1、data2、fra1 三个固定链接都出现,磁盘规划这块才算过关。
2.4 操作系统安装 Oracle 依赖包
这一步网上教程版本很多,但 19c 官方要求的依赖包也就那几十个。Oracle Linux 7 和 CentOS 7 上,一条命令装完:
一个很多人忽略的点:Oracle 19c 的安装程序自身依赖 Python 3(用于执行一些后处理脚本)。如果系统是最小化安装,没有装 python3,rpm 检查那一步直接挂掉。提前装上能省掉很多不必要的折腾。
2.5 配置 hosts 和关闭防火墙
生产环境的 /etc/hosts 里,主机名必须解析到固定 IP。不要用 DHCP 随机 IP,否则你会看到一个听起来很离谱的实际报错:GI 集群件由于主机名不可解析直接拒绝安装。
防火墙在生产上如果不需要对外网全开,建议直接停掉,或者只放行数据库监听端口 1521。很多人在安装 GI 时卡在节点无法通信,排查半天最后发现是 firewalld 拦截了集群件内部通信。多花十秒钟执行下面这两条,能省掉两小时的排查时间:
3. 磁盘组架构设计:数据库文件与备份文件分离
ASM 安装完成之后第一步就是建磁盘组,这一层的设计直接决定后续运维是否顺手。
3.1 磁盘组命名与规划
生产环境建议至少建两个磁盘组:DATA 和 FRA,两个磁盘组承担不同职责。有些人在生产上只建一个 DATA 组,归档日志和闪回都往里面塞,短期没毛病,等到磁盘容量报警就发现根本分不清到底是数据占的、还是日志和闪回占的,扩也扩不清楚。
DATA 组放数据文件、控制文件、参数文件。FRA 组放归档日志、闪回日志、控制文件的自动备份、RMAN 备份集。建议的容量配比是:DATA 和 FRA 按 2:1 到 1:1 之间配置。如果开了闪回数据库,FRA 至少要准备数据库总体积的 30% 以上;如果主要用 RMAN 做增量备份,那么 FRA 和 DATA 等大比较稳。
3.2 通过 ASMCA 创建磁盘组
用 grid 登录,执行 asmca,在图形界面里操作创建磁盘组。步骤如下:
- 选择 Disk Groups 页签,点 Create。
- 磁盘组名称输入 DATA,冗余选 Normal(至少 2 块盘);如果用的是外部存储且底層 RAID10,选 External。
- 把准备好的两块盘勾选进列表中,点击 OK。
FRA 磁盘组同理,名字填 FRA。如果冗余方式选 Normal,ASM 会自动把两块盘分为两个 failure group,磁盘利用率只有 50%。选 External,利用率 100%,由底层 RAID 来承担冗余。
经验:如果真的只有两块盘,底层存储又是 RAID10,没必要为了"看起来专业"把 ASM 改成 Normal。ASM 的镜像要消耗一半容量的,外部冗余加底层 RAID10,性能和容量都更合适。
3.3 ASM 实例的关键参数
建完磁盘组后,建议检查 ASM 实例参数。用 grid 用户登录执行:
ASM_DISKSTRING 的值默认是 /dev/oracleasm/* 或者 /dev/asm/*,指向你绑定好的设备路径,这个必须设置正确,否则 ASM 实例启动后认不到任何盘。 ASM_POWER_LIMIT 默认是 1,如果数据量很大,执行 rebalance(比如往磁盘组加盘)时速度会很慢,生产上建议调到 4 或者更高:
ASM 的 rebalance 是把已有数据搬移到新盘的过程,如果磁盘组已经 5TB 以上,POWER_LIMIT=1 时 rebalance 可能要跑十几个小时。调到 4 会快很多,但也会加大磁盘 IO 压力,业务高峰不建议调高。
3.4 磁盘组的使用率监控
生产环境磁盘组快满是个很危险的信号。ASM 磁盘组如果剩余空间低于 10%,数据库可能会报 ORA-15041 磁盘空间不足,严重时甚至实例 aborted。日常监控中,我最常执行的查询是:
看到某磁盘组使用率超过 85%,就要赶紧规划加盘或清理过期备份。ASM 加盘非常方便,不需要停库,直接:
ASM 会自动触发 rebalance,把数据分布到新增磁盘上。这一步在生产环境实际执行中,如果 IO 压力大,可以先观察一段时间,确认 POWER_LIMIT 不影响业务再操作。
4. 安装 Oracle 19c 数据库软件:从 gridSetup 到 root.sh
4.1 GI(Grid Infrastructure)安装的前置检查
GI 安装是 19c 部署里最繁琐的一步。用 grid 用户启动安装程序:
安装类型选择 Set Up Software Only(仅安装软件,稍后手动配置 ASM)。如果选择直接配置磁盘组,图形界面会要求你提供扫描磁盘的路径,但更靠谱的做法是先装软件,再手动用 asmca 建磁盘组——这样排错更快,也不容易被安装向导的校验卡死。
在执行到 root 脚本前,安装程序会做一次完备的环境校验(prereq check)。这里最常见的三个失败项:
- 内核参数不达标:就是前面提到的 shmmax、sem、file-max 等问题,修改完 sysctl -p 后,点 Check Again 重新检查。
- 依赖包缺失:提示 missing packages 就按列表补装,装完重新检查。
- 物理内存不足:19c 官方要求至少 8GB 内存用于 GI 安装。如果服务器只有 8GB 但还跑了数据库,实际上很容易在启动数据库时报内存不足,生产库内存建议至少 16GB 起步。
4.2 执行 root.sh 的时机和常见报错
安装到 97% 左右,程序会弹出一个提示窗口告诉你需要以 root 用户执行两个脚本:/u01/app/oraInventory/orainstRoot.sh 和 /u01/app/19.0.0/grid/root.sh。
这里特别提醒:两个脚本都要用 root 执行,并且必须等 root.sh 完整跑完,确认没有报错后,再回到安装界面点击 OK。我曾经见过有人心急,root.sh 还在跑就点了 OK,结果 GI 没配上,最后只能手动清理配置再来一遍。
root.sh 执行过程中的常见报错:
- ohasd 启动失败:多半是
/etc/ohasd目录权限不对,或者系统缺少pthread相关库。多见于最小化安装的 Linux,解决方法是检查/var/log/ohasd日志,确认是权限还是缺依赖。 - CRS-5017 / CRS-2674 无法启动 ora.asm 资源:通常是 ASM 实例参数问题或磁盘组未挂载。生产环境经验是,root.sh 执行前确认 /dev/oracleasm/* 下设备权限都是 grid:asmadmin,且 MODE 是 0660。如果设备是 root:root,ASM 实例根本起不来。
root.sh 全部执行成功后,用 grid 用户验证:
正常输出里,ora.asm 和 ora.diskmon 等资源都应该是 ONLINE 状态。
4.3 用 asmca 配置 ASM 实例和磁盘组
GI 软件装好,ASM 资源已经注册到 Oracle Restart。接下来用 grid 用户执行:
打开图形界面,在 ASM 实例状态里,选择 Configure,输入 SYSASM 密码,创建磁盘组。这里注意,ASM 实例的 SYS 用户密码和数据库 SYS 密码不是一回事,分开设置并且记好。磁盘组创建完成后,ASM 就完全托管了数据文件的存放。
此时验证 ASM 磁盘组:
看到 DATA 和 FRA 都是 MOUNTED,ASM 这层就算彻底通了。
4.4 安装数据库软件本体
以 oracle 用户登录,执行:
安装类型选 Set Up Software Only,因为数据库实例一会儿用 dbca 建,不需要安装程序代劳。软件装完后用 root 执行 /u01/app/oracle/product/19.0.0/dbhome_1/root.sh,这一步很快,几秒就完成。
5. 数据库实例创建与 CDB/PDB 架构的实践决策
5.1 容器数据库与非容器数据库:一个生产上必须先做的选择
Oracle 19c 安装完软件后,最关键的建库决策就是:建 CDB(容器数据库)还是非 CDB。12c 之后官方强推 CDB/PDB 架构,版本到了 19c,非 CDB 已经在官方支持的边缘——19c 虽然仍允许建非 CDB,但官方的说法是这是最后一个支持传统非 CDB 架构的大版本,且非 CDB 模式已经进入 desupported 的前夜。
生产环境到底怎么选?我经历过的两套思路:
- 如果公司有明确的数据库整合规划,未来想把多套业务库合并到一套物理环境节省成本,直接上 CDB,每个业务用独立的 PDB。管理上,PDB 之间资源隔离、备份恢复都能独立操作,体验接近以前的独立实例,但硬件成本大幅下降。
- 如果运维团队对 PDB 不熟悉,且业务本身就是孤岛式系统(一套系统一个库),用非 CDB 也能运转。但要想清楚,未来升级到 20c/21c,非 CDB 数据库不能原地升级,必须迁移重建。这个迁移的成本得现在就记在账上。
我的建议很简单:新项目一律建 CDB,把应用数据放进 PDB,理由只有一个——以后升级路好走。
5.2 使用 DBCA 静默方式建库
生产环境如果用图形界面 dbca 建库,遇到网络断开或 X11 不好使的时候非常被动。推荐的方式是响应文件静默建库。准备一个 dbca.rsp 响应文件,关键参数如下:
然后执行:
静默建库的好处是输出全程可控,日志清晰,遇到报错直接在日志里看。之前用一个响应文件帮客户一次性建了 4 套生产库,比图形界面点半天效率高出一个量级。
5.3 实例启动/停止的正确方式
生产库的启停千万不要直接用 sqlplus shutdown,因为 ASM 管理下数据库已经注册到 Oracle Restart,正确的启停命令是:
如果用 SQL 直接 shutdown,Oracle Restart 会探测到实例非正常下线,然后自动把它拉回来,导致你"明明关了为什么又起来了"的困惑。这一点新手特别容易踩,但实际生产上非常关键。
5.4 创建表空间和数据文件到 ASM
数据库建好后,应用联调前,建议先把业务表空间建好。这里演示一个把表空间放到 ASM 的 SQL:
这里值得解释一下 '+DATA' 是什么含义。它不是文件系统路径,而是告诉 Oracle:这个数据文件放到名为 DATA 的 ASM 磁盘组里,具体物理文件叫什么名字、分成几个 extent,都是 ASM 自己管理。你会在查询 dba_data_files 时看到 FILE_NAME 变成 +DATA/PROD/... 这样的 ASM 别名。
6. 部署常见的生产环境问题:从参数到实际案例
我遇到的真实生产部署问题里,有很大一部分不是安装本身,而是装完之后开始各类告警、空间膨胀、权限混乱。这里挑几个比较有代表性的展开。
6.1 数据库连不上监听:端口、防火墙、动态注册
生产环境最容易出的问题就是监听连不上。验证三步走:
如果监听启动了,但 services 里看不到 PROD 实例,多半是实例的 LOCAL_LISTENER 没配好。在 19c 里,local_listener 参数不再需要手动设置了,默认会自动注册到 1521 端口。但动态注册需要一点时间,通常是 60 秒,刚启动的实例等一会儿再试。
如果远程客户端连不上,看两个方向:
- 防火墙是否放行 1521 端口,或干脆关闭。
- 监听是否只绑定在 localhost 上。
LISTENER协议的 HOST 值必须是服务器对外 IP 或者 0.0.0.0,不能是 127.0.0.1。
6.2 SYSAUX 表空间占用率过高:19c 的一个典型问题
19c 某个版本有一个很经典的问题,SYSAUX 表空间无端暴涨,经常被空间告警找上门。热词列表里有人搜"oracle19c sysaux占用率高",说明大家都遇到类似问题。
SYSAUX 高占用一般两个来源:
- AWR 快照保留周期过长。默认是 8 天,但如果被改成 30 天甚至 90 天,快照会占用大量空间,在 SYSAUX 里占比很高。
- 优化器统计信息历史表,还有一个更隐蔽的是 WRH$_ACTIVE_SESSION_HISTORY,大量 ASH 数据堆积。
应对办法:
根据查询结果,如果是 AWR 占用过高,把快照保留天数调回 7 天:
处理完之后再结合上面提到过的磁盘组监控,把 SYSAUX 大小降下来,这个告警基本能消停很久。
6.3 ASM 磁盘组空间不足:ORA-15041 的错误处理
生产环境磁盘被打满的应急处理,真实场景是这样的:磁盘组空间 95% 以上,数据库开始报 ORA-15041,有些表已经不能分配新 extent。如果还不处理,下一步就是数据库 hang。
应对步骤:
- 立即查看回收站里是否有可清理的段。PDB 里执行 purge dba_recyclebin。
- 清理过期的归档日志:RMAN 里 delete noprompt archivelog all completed before 'sysdate-3'。
- 如果 FRA 组满了,把 DB_RECOVERY_FILE_DEST_SIZE 调小一点,强制数据库归档日志写不了就报错,此时思路应该是先把备份策略跑起来,删除过期备份集。
- 短期内没有可删内容,再加盘。在存储端划一块新的 LUN,绑定 udev,然后 ASM 里
ALTER DISKGROUP DATA ADD DISK。
生产环境最忌讳的就是磁盘组满后"再撑一会儿",因为它引发的往往不是慢,而是直接拒绝写入,应用侧看到的错误是 ORA-15041 和 ORA-27063 混合出现,非常被动。
6.4 备份文件跨版本恢复的问题
热词里有"oracle19c的备份文件能在oracle11g上恢复出来吗?",这是一个很典型的跨版本误解。明确回答:不能。数据泵导出(expdp)的备份文件,在极少数场景下可以向低版本导入,前提是版本差异极近且没有用高版本的新特性;但是 RMAN 备份集跨版本恢复,尤其是 19c 的备份往 11g 恢复,是完全不支持的。RMAN 只支持同版本或高版本往低版本(同 OS 平台)的部分恢复,从来没支持过 19c 备份集往 11g 环境还原。如果你有这个需求,说明当初备份策略就设计错了,正确做法是用 expdp/impdp 做逻辑迁移,而不是想着用 RMAN 物理备份做版本回退。
6.5 卸载 19C:注册表问题其实不存在
热词里还有一个"如何卸载oracle19c注册表",这明显是带着 Windows 习惯思维问 Linux 上的事。Linux 下 Oracle 的卸载就是 deinstall 工具:
按提示输入数据库家目录和列表,它会自动清理 /etc/oratab、/u01/app/oracle 等路径下的配置和文件。不要拿 Windows 的注册表概念套到 Linux 上,Oracle 在 Linux 的注册信息在 /etc/oratab 和 GI 的 OCR 里,deinstall 工具会把这些统一清干净。如果是 GI 软件,先停掉 CRS 再 deinstall:
6.6 ASM 的日常访问方式:asmcmd
有些新手只知道 sqlplus 能连接 ASM 下的文件,其实 asmcmd 才是真正管理 ASM 文件系统的命令。以 grid 用户登录执行:
其中 du +DATA 能直接看整个磁盘组的空间占用分布,cp 命令可以在磁盘组之间复制文件(比如手动备份控制文件),这对生产运维非常实用。热词里"oracle进入asm命令"搜的就是这个东西,正确姿势就是 grid 用户下直接执行 asmcmd。
7. 数据库安装后的安全加固与日常巡检
生产环境不是装完就完事,Closer 的权限配置和日常巡检决定一个月后是安稳运行还是半夜接到告警电话。以下是我每次部署完必做的一组操作。
7.1 密码策略与最小权限
数据库的 SYS、SYSTEM 密码禁止使用简单密码。生产环境至少 16 位,包含大小写、数字、特殊字符。同时建议为运维人员额外建专用账号:
不要给所有人发 SYS 密码。SYS 的权限过于强大,误操作无法追责;用 dbadmin 日常操作,出了问题能从审计日志里查到具体是谁、哪条 SQL。
7.2 开启统一审计
从 19c 开始,传统审计默认被统一审计取代。生产环境建议开启统一审计,特别是对 SYSDBA 操作的审计:
日常遇到"谁把表删了"的问题,统一审计就是查账本,没开审计的时候只能干瞪眼。
7.3 数据库备份策略与 RMAN 验证
生产上最怕的不是备份失败,而是备份成功但恢复不了。19c 下建议用 RMAN 的自动备份控制文件加增量备份策略:
我特别强调 DELETE INPUT 这个选项,它能把归档日志备份完后从 FRA 清理掉,同时会导致控制文件里的归档记录强制刷新——这一步直接解决前面说的 FRA 空间增长问题。
备份策略跑通后,一定记得定期做一次恢复演练。RMAN 备份集的验证命令:
这个命令会把备份集读一遍,校验各数据文件块有没有损坏。我见过备份天天成功,结果一测试恢复发现备份文件头全坏掉的惨案,原因就是存储底层静默损坏或者备份期间磁盘 IO 异常。状似无事发生,实则是定时炸弹。
7.4 常用性能巡检语句
最后给你一组生产环境每个星期跑一遍的 SQL,基本够日常巡检:
这些 SQL 一旦发现异常,恰好能对应上前面说过的磁盘组告警、SYSAUX 膨胀、表空间满等各种生产隐患,属于那种"一条报警都没收到反而是好事"的巡检。
8. 实战项目结束后的复盘与长期运维建议
每一套生产库搭完,我都习惯做一次完整复盘,把部署过程中所有中间状态、报错、解决方案记录下来。这套 19c + ASM 的架构我从第一次摸到现在的感受是:瓶颈往往不在安装本身,而在对 ASM 存储层和 GI 集群件的理解深度。很多问题表面上看起来是 Oracle 报错,实际上底层是操作系统、存储多路径、udev 权限这些问题在捣乱。如果部署前能先看一遍 /var/log/messages,把所有 SCSI 错误、盘符漂移、多路径告警清理干净,数据库安装会顺利非常多。
日常运维中我特别推荐一个小习惯:每个数据库部署维护手册,把下面这些内容写清楚。
- 系统架构图(主机名、IP、存储路径、磁盘组结构)。
- 关键账号与权限矩阵(SYS/SYSTEM、grid/oracle、应用账号)。
- 启动顺序:先 ASM 后实例再监听,或者直接用 srvctl。
- 备份恢复方案(备份时间、保留策略、恢复步骤)。
- 常见告警的处理 S.O.P.,比如磁盘组空间告警、SYSAUX 高占用、监听连接失败。
手册的价值在半年后你接到电话说"数据库进不去了"的时候才会体现出来。没有手册,你只能翻历史和日志慢慢猜;有手册,十分钟内定位到是磁盘组满了还是实例被 OOM killer 干掉,处理速度完全不同。
如果还想进一步自动化,Linux 下可以用 shell 脚本加 cron 做巡检作业,把上面那几条 SQL 输出到文件,再结合系统监控工具做告警通知,这就是一整套生产数据库的基础运维闭环了。19c 加 ASM 这套组合的稳定程度很高,只要前期规划不出大错,后续真正花精力处理的大多是容量和变更层面的问题,架构本身不需要三天两头动刀。这也是为什么我始终建议生产环境按这套标准来搭,虽然前期多花半天做规划,但后面能省下的是数不清的凌晨三点。