数据库管理317期 2025-04-21
- 数据库管理-第317期 Oracle 12.2打补丁又出问题了(20250421)
- 1 文件相关
- 2 sqlpatch
- 总结
数据库管理-第317期 Oracle 12.2打补丁又出问题了(20250421)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE Partner10年数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有“总监”称号,非著名社恐(社交恐怖分子)公众号:胖头鱼的鱼缸
CSDN:胖头鱼的鱼缸(尹海文)
墨天轮:胖头鱼的鱼缸
ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
上周,熬了个整通宵,协助我们这边的一个Oracle 12.2的RAC集群打补丁,以解决一些bug问题,由于这不是一个我这里统管的集群,因此中间遇到了一系列问题,这里做个总结,有些内容仅有思路记录,没有截图。
1 文件相关
在使用opatchauto打补丁的过程中遇到的第一个问题就是文件不可操作的问题,通过日志排查是/opt/oracle.ahf/orachk/orachk文件无操作权限,检查权限后发现该文件权限为"rwxr-xr-x",属组和其他没有写权限,执行以下操作即可:
chmod g+w /opt/oracle.ahf/orachk/orachk
chmod o+w /opt/oracle.ahf/orachk/orachk
/u01/app/12.2/grid/OPatch/opatchauto resume
另一个问题则是还有文件被占用,升级操作需要操作这些文件,因此无法进行补丁升级操作,这里通过重启操作系统是最便捷的解决方案:
/u01/app/12.2/grid/bin/crsctl disable crs
reboot
重启完成后:
/u01/app/12.2/grid/OPatch/opatchauto resume
/u01/app/12.2/grid/bin/crsctl enable crs
这两个问题相信是大家打补丁过程中经常遇到的问题。
2 sqlpatch
除了给GI和DB软件打补丁,完整的RU升级操作还包含sqlpatch,用下面的命令执行:
$ORACLE_HOME/OPatch/datapatch -verbose
第一个问题是直接无法运行,报的是某些系统视图异常,这个处理很简单,在CDB执行以下内容即可:
@?/rdbms/admin/utlrp.sql
接下来有出现了一个比较奇怪的现象,首先发现问题是在重启某些测试PDB的时候发现PDB启动过程中with error,状态RESTRTITED为YES。检查PDB_PLUG_IN_VIOLATIONS发现以下内容:
检查DBA_REGISTRY_SQLPATCH发现CDB与PDB中一个补丁的应用状态不是SUCESS而是END:
与PDB_PLUG_IN_VIOLATIONS反馈内容吻合,重新调用datapatch并不能触发reinstall操作。
这时候通过MOS发现一个文档《datapatch status for apply/rollback status is BEGIN or END (Doc ID 2625471.1)》,简单来说在12.2-19c中(文档中说明在19c后期已解决),sqlpatch的状态可能为BEGIN或END,导致PDB可能出现异常。解决方案也比较简单:
update dba_registry_sqlpatch set STATUS='WITH ERRORS' where PATCH_ID=patch id;
--在本次问题中就可以执行
update dba_registry_sqlpatch set STATUS='WITH ERRORS' where PATCH_ID=35746058;
然后再次执行datapatch即可解决问题。
总结
本期简单总结了打补丁遇到的一些问题。
老规矩,知道写了些啥。