DB升级 23.26.2:/opt 空间临界导致 OPatch 失败的处理记录

📅 2026/7/24 22:52:26 👁️ 阅读次数 📝 编程学习
DB升级 23.26.2:/opt 空间临界导致 OPatch 失败的处理记录

DB升级 23.26.2:/opt 空间临界导致 OPatch 失败的处理记录

2026-07-24 22:37  AlfredZhao  阅读(0)  评论(0)    收藏  举报

这次尝试升级到 23.26.2 时,笔者又遇到了一个很典型的问题:/opt 空间看起来差不多够,但 OPatch 实际执行时仍然容易失败。记录一下处理过程,方便后续遇到类似情况时快速判断。

01 | 问题出在“刚好够”的 /opt 空间

当时 /opt 的精确可用空间是:

13652123648 bytes

也就是大约 13.65 GB。而 OPatch 检查到需要:

12787.7 MB

从数字上看,好像还有一点余量,但这类场景并不稳。OPatch 在实际 apply 时,还需要额外空间用于解压、备份、rollback 和临时文件,所以“检查时看着差不多,真正执行时失败”很常见。

当时查看 /opt

[root@aibs ~]# df -Th /opt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroupVm-LogVolOpt ext4 25G 11G 13G 46% /opt

这里的关键不是只看 Avail 是否大于 OPatch 提示值,而是要给补丁过程留出实际操作空间。

02 | 扩容后重新检查并继续打补丁

笔者给 /opt 增加了 5G 空间:

lvextend -L +5G /dev/VolGroupVm/LogVolOpt
resize2fs /dev/VolGroupVm/LogVolOpt

扩容后再次查看:

[oracle@aibs ~]$ df -h /opt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroupVm-LogVolOpt 30G 11G 18G 38% /opt

随后重新执行 OPatch 空间检查:

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace \
-phBaseDir /u01/media/39093711

检查通过后继续安装补丁,结果成功:

Patch 39093711 successfully applied.
Sub-set patch [38743669] has become inactive due to the application of a super-set patch [39093711].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /opt/oracle/product/26ai/dbhome_1/cfgtoollogs/opatch/opatch2026-07-17_10-31-55AM_1.logOPatch succeeded.

接下来按照 readme 打开数据库,包含所有 PDB,并继续执行 datapatch 等必做步骤。

datapatch 执行完成后,可以看到补丁在各个容器中都应用成功:

Patch 39093711 apply (pdb CDB$ROOT): SUCCESS
Patch 39093711 apply (pdb PDB$SEED): SUCCESS
Patch 39093711 apply (pdb DATACLAWPDB): SUCCESS
SQL Patching tool complete on Fri Jul 17 10:45:21 2026

之后编译无效对象:

$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql

最后登录确认版本和 PDB 状态:

SQL*Plus: Release 23.26.2.0.0 - Production on Fri Jul 17 10:48:08 2026
Version 23.26.2.0.0Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.0.0 - Production
Version 23.26.2.0.0SQL> show pdbs;CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED READ ONLY NO3 DATACLAWPDB READ WRITE NO

这次问题的核心很简单:OPatch 提示的空间需求不是最终唯一标准,实际 apply 过程还需要额外余量。对于接近临界值的 /opt,先扩容再打补丁,处理过程会更稳。

关注我,和AI一起成长~