High Number Of Child Cursors With Literal Replacement Causing Library Cache Lock Contention
(Doc ID 2359242.1)
Last updated on MARCH 03, 2022
Applies to:
Oracle Database - Enterprise Edition - Version 12.1.0.2 to 12.2.0.1 [Release 12.1 to 12.2]Oracle Database Exadata Cloud Machine - Version N/A and later
Oracle Cloud Infrastructure - Database Service - Version N/A and later
Oracle Database Cloud Exadata Service - Version N/A and later
Oracle Database Exadata Express Cloud Service - Version N/A and later
Information in this document applies to any platform.
Symptoms
In 12.1.0.2 and 12.2.0.1 a high library cache lock contention on $BUILD$ object for a non-shared cursor is encountered. Following symptoms are noticed:
- SQL is not shared when CURSOR_SHARING=FORCE
- Each execution with different bind variables creates a new child cursor due to HASH_MATCH_FAILED=Y
- Execution plan shows literals that aren't replaced with system generated binds in filter predicates section, similar to :
AND "TABLE_A"."COLUMN1"='literal0001') OR ("TABLE_A"."COLUMN2" IS NOT NULL AND 0=:SYS_B_07 AND "TABLE_A"."COLUMN1"='literal0002'))))
Changes
Upgrade to 12.1.0.2 or 12.2.0.1 version and use of CURSOR_SHARING=FORCE
Cause
To view full details, sign in with your My Oracle Support account. |
|
Don't have a My Oracle Support account? Click to get started! |
In this Document
Symptoms |
Changes |
Cause |
Solution |
References |