这次尝试升级到 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.log |
|
|
|
|
|
OPatch 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.0 |
|
|
|
|
|
Connected to: |
|
|
Oracle AI Database 26ai Enterprise Edition Release 23.26.2.0.0 - Production |
|
|
Version 23.26.2.0.0 |
|
|
|
|
|
SQL> show pdbs; |
|
|
|
|
|
CON_ID CON_NAME OPEN MODE RESTRICTED |
|
|
---------- ------------------------------ ---------- ---------- |
|
|
2 PDB$SEED READ ONLY NO |
|
|
3 DATACLAWPDB READ WRITE NO |
这次问题的核心很简单:OPatch 提示的空间需求不是最终唯一标准,实际 apply 过程还需要额外余量。对于接近临界值的 /opt,先扩容再打补丁,处理过程会更稳。
