合 【MOS】高版本游标数的SQL语句在升级到12.2及更高版本后会导致数据库性能下降 (Doc ID 2469639.1)
Tags: OracleMos版本数高(High Version Count)_cursor_obsolete_threshold
【MOS】高版本数(>1024)的SQL语句在升级到12.2及更高版本后会导致数据库性能下降 (Doc ID 2469639.1)
High Version Counts For SQL Statements (>1024) Post Upgrade To 12.2 and Above Causing Database Slow Performance (Doc ID 2431353.1)
适用于:
Oracle Database Backup Service - 版本 N/A 和更高版本
Oracle Database Cloud Service - 版本 N/A 和更高版本
Oracle Database - Enterprise Edition - 版本 12.2.0.1 和更高版本
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台
症状
- 升级到12.2后,数据库性能下降。
- 升级到12.2后,大量等待“cursor: mutex X”或“cursor: mutex S”或“cursor: pin S wait on X”。
- 升级后观察到高解析时间(软/硬)。
- SQL的高版本数始终高于1024。
- 由于创建了过多的子游标,共享池中的空间压力导致SQL区域中过多的重新加载。
- AMM或ASMM显示共享池的增长趋势,导致SGA中出现内存压力。
更改
将数据库从较低版本升级到12.2及更高版本。
原因
- 从12.2数据库版本开始参数
_cursor_obsolete_threshold
的值增加到8192。 - 这会导致父游标不会被废弃,因此父级下的子游标会扩展到1024以上(这是12.1中的默认值),从而导致cursor mutex的并发问题。
从12.2开始,_cursor_obsolete_threshold
的默认值大幅增加(从1024开始为8192)以便支持4096个PDB(而12.1只有252个PDB)。 此参数值是在多租户环境中废弃父游标的最大限制,并且不能超过8192。