如何解决12cRAC打补丁后PDB进入受限模式的问题
1.环境描述
操作系统:Redhat 7.4
数据库:12cRAC 4节点
PDB数量:20多个
总体数据量:30T
RU:数据库 2023 年 1 月发布更新 12.2.0.1.200114
2.主要问题
在节点 1 上运行 datapatch verbose 后,其中一个 PDB 进入受限模式。
3.问题描述
晚上12点左右在节点1上运行./datapatch verbose,然后等待。 2小时后,终端启动反馈。
反馈信息为:20多个PDB已成功打补丁,无错误s。其余 3 个 PDB 和 CDB$ROOT 显示等待超时错误:
CDBROOT: ORA-04021: 等待锁定对象 SYS.DBMS_STATSPDB1:ORA-04021: 等待锁定对象 SYS 时发生超时。 DBMS_SPACE_ADMINORA-04021:等待锁定对象时发生超时 SYS.DBMS_STATSPDB2:ORA-04021:等待锁定对象时发生超时 SYS.DBMS_SPACE_ADMINORA-04021:等待锁定对象时发生超时 SYS.DBMS_SNAPSHOT_UTLPDB3:ORA-04021:超时发生waiting to lock object SYS.DBMS_STATS
然后数据库开始自动对这4个PDB进行datapatch,等了大约半小时,CDB$ROOT、PDB1、PDB2均显示NO erros,补丁成功,PDB3失败,然后数据库自动结束打补丁。错误信息如下:
OACX:ORA-04021: timeout returned while After waiting to lock object SYS.DBMS_STATS
/datapatch verbose,检查PDB3日志。显示的 ORA 错误报告都有 IGNORED ERROR 标记。然后show pdbs查看PDB的状态,发现PDB3已经进入了受限状态。
关闭所有PDB后,只打开PDB3。尝试单独重新运行这个PDB3。/datapatch verbose:
Only Nothing to roll back Nothing to apply
检查DBA_REGISTRY_SQLPATCH视图,会显示PATCH的状态为WITH ERRORS (可重试)
4。问题分析
当时现场尝试重新打入并回滚PDB,结果全部显示Nothing to roll back Nothing to apply。然后我就提出了SR,请Oracle原厂的人来现场分析。他们以前从未遇到过这种情况。他们的建议是进入启动升级并重新运行datapatch,但情况还是一样。
通过查看具体日志,可能的原因是恰好是数据库自动收集统计信息的时间段SYS.DBMS_STATS被锁定,且PDB比较大,并且存在大量全文索引,导致PDB无法打补丁。
5.临时处理方法
PDB进入受限模式后,普通用户无法连接数据库,必须授予受限会话权限才能连接。此外,所有作业都无法自动运行。该解决方案是通过手动向所有业务用户授予受限会话并运行 crontab 作业来解决的。
6.最终解决方案
通过数据泵恢复测试库上的PDB,然后尝试通过SYS.DBMS_STATS包锁定收集整个数据库统计信息的方法后,然后运行datapatch,问题确实重现。最后,经过不断测试,我们发现这个问题可以通过以下方法修复:强制打补丁并指定补丁包号。
/datapatch -force -verbose-bundle_series 200114 -apply 30593149 -pdb PDB3
感谢您的阅读,以上是《如何解决12cRAC打补丁后PDB进入问题“限制模式问题”》,学习后这篇文章相信大家对如何解决12cRAC打补丁后PDB进入受限模式的问题有了更深入的了解,具体用法还需要实践验证,这里小编会为大家推送更多相关知识点的文章,欢迎关注!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何解决12cRAC打补丁后PDB进入受限模式的问题