How to diagnose cursor pin s wait on x Series 2, cursorpin
How to analyze diagnostic collection information
1. view the content of high paring and high version in the AWR report.
For more information, see 'sqlordered by Parse call' or 'SQL ordered by Version count'
SQL ordered by Parse CILSWhether the SQL parsing execution in this section is too high or whether it can be reduced.
SQL ordered by Version CountFor the high version SQL in this section, you need to find out why they cannot be shared. You can use the v $ SQL _shared_cursor view to find the cause.
2. systemstats and errorstack considerations
It is very important for systemstats and errorstack timeliness. Dump must be performed when the problem occurs. Otherwise, the information collected out of date is invalid. In a high-speed operating system, those holders and waiter processes are transient.
Based on the load profile of AWR, You Can preliminarily determine the system SQL parsing status:
If you see a lot of hard parses, it indicates that the system may not use the bound variable, or there is a new SQL online.
For high version counts, it will also cause cursor: ping S wait on X
Use V $ SQL _SHARED_CURSOR to find out why SQL cannot be shared.
Some bugs may cause high version counts:
Document 1057392.8 Bug 10157392-High version counts forSQL with binds (BIND_MISMATCH)
Document 9689310.8 Bug 9689310-Excessive child cursors/high VERSION_COUNT/OERI: 17059 due to bind mismatch
The Bug may cause cursor pin s wait on x:
NB |
Bug |
Fixed |
Description |
5650841 |
Hang/deadlock from ANALYZE of cluster index |
16191248 |
12.1.0.1.1, 12.1.0.2, 12.2.0.0 |
Hang from concurrent drop of on-commit materialized views or using DBMS_REDEFINITION |
14295250 |
11.2.0.4, 12.1.0.1 |
Long parse time for large query with nested views due to much time in epxression analysis code |
14191508 |
11.2.0.3.8, 11.2.0.3.BP16, 11.2.0.4, 12.1.0.1 |
Slow row cache load due to SEG $ and INDSUBPART $ queries |
14176247 |
11.2.0.4, 12.1.0.1 |
Using child cursors using Adaptive Cursor Sharing with binds (due to BIND_EQUIV_FAILURE) |
18292893 |
12.1.0.2, 12.2.0.0 |
Jobs don't execute per schedule with a large number of PDBs |
18018515 |
12.2.0.0 |
High CPU in qctHasFakeBind (can cause 'cursor: pin S wait on X 'waits) |
16448569 |
11.2.0.4, 12.1.0.2, 12.2.0.0 |
PQ hang/deadlock possible-"cursor: pin S wait on X" waits |
16400122 |
12.2.0.0 |
Spikes in library cache mutex contention for SQL using SQL Plan Baseline |
15850031 |
11.2.0.4, 12.2.0.0 |
Rare instance hang: deadlock between 'row cache lock' and 'cursor: pin S wait for x' |
14469756 |
12.2.0.0 |
Partition pruning causes delay in TBL $ OR $ IDX $ PART $ NUM |
14302813 |
11.2.0.4, 12.2.0.0 |
QC blocked/parse hang for parallel DML executed from remote stored procedure |
14029891 |
11.2.0.4, 12.1.0.1 |
Mutex deadlock having SQL baselines on recursive dictionary cursor |
11927619 |
11.2.0.1.BP11, 11.2.0.2.BP07, 11.2.0.3, 12.1.0.1 |
DBMS_STATS slow on interval composite partitions |
11855965 |
11.2.0.3, 12.1.0.1 |
Truncate partition takes long time doing recursive delete on MLOG $ |
10213073 |
11.2.0.2.8, 11.2.0.2.BP18, 11.2.0.3, 12.1.0.1 |
Create synonym and create package may incorrectly invalidate objects |
10171273 |
11.2.0.2.8, 11.2.0.2.BP08, 11.2.0.3, 12.1.0.1 |
Long parse time with non-equi subpartitioning under interval partitioning |
9944129 |
11.2.0.1.BP12, 11.2.0.2, 12.1.0.1 |
SQL not shared due to INST_DRTLD_MISMATCH with global transaction |
9935787 |
11.2.0.3, 12.1.0.1 |
Long parse time for large inlists-can cause 'cursor: pin S wait on X 'waits |
9694101 |
10.2.0.5.7, 11.2.0.2, 12.1.0.1 |
Hang/deadlock between "cursor: pin S wait on X" and "library cache lock" involving dictionary objects |
9499302 |
10.2.0.5.5, 11.1.0.7.7, 11.2.0.1.BP08, 11.2.0.2, 12.1.0.1 |
Improve concurrent mutex request handling |
9472669 |
11.2.0.1.BP12, 11.2.0.2, 12.1.0.1 |
'Cursor: pin S wait on x' waits for invalid SQL over DB link |
8508078 |
11.2.0.2, 12.1.0.1 |
Contention from begin concurrent bad SQLs-superseded |
12432089 |
11.2.0.3 |
Library cache lock/cursor: pin S wait on X with parallel partition stats gathering |
8441239 |
11.2.0.1 |
Library cache lock waits if long running TRUNCATE in progress |
8348464 |
11.1.0.7.2, 11.2.0.1 |
Create synonym and create package may incorrectly invalidate objects |
7234778 |
11.2.0.1 |
Unnecessary "cursor: pin S wait on X" waits |
5485914 |
10.2.0.4 |
Mutex self deadlock on explain/trace of remote mapped SQL |
6143420 |
10.2.0.5, 11.1.0.6 |
Deadlock involving "row cache lock" on dc_users AND "CURSOR: pin s wait on x" |
6011045 |
10.2.0.5.5 |
DBMS_STATS causes deadlock between 'cursor: pin S wait on X' and 'library cache lock' |
7462072 |
10.2.0.4.3, 10.2.0.5 |
Unnecessary "cursor: pin S wait on X" waits |
5983020 |
10.2.0.4 |
MMON deadlock with user session executing ALTER USER |
7226463 |
10.2.0.5 |
Execute immediate no releasing mutex or library cache pin |
+ |
5907779 |
10.2.0.4 |
Self deadlock hang on "cursor: pin S wait on X" (typically from DBMS_STATS) |