如何分析诊断收集信息
1. 查看AWR 报告中high paring 和high version部分内容
具体查看这几个部分的内容:'SQLordered by Parse Calls' or 'SQL ordered by Version Count'
SQL ordered by Parse Calls关于这部分中的sql 解析执行是否过高,或者能否减小来。
SQL ordered by Version Count关于这部分中的high version sql ,需要找出为啥他们不能共享,可以通过 v$sql_shared_cursor 视图查找原因
2. systemstats 和errorstack 的关注点
对于systemstats 和errorstack 时效性非常重要。需要在问题发生时刻进行dump ,否则过时采集的信息是无效的。在一个高速运行的系统中,那些holders and waiter 进程转瞬即逝。
根据AWR 的 load profile 部分内容可以初步判断出 系统 sql 解析情况:
如果看到hard parses 很多,表明系统可能没有使用绑定变量,或者有新的sql 上线。
对于high version counts 也会导致 cursor:ping S wait on X
使用V$SQL_SHARED_CURSOR可以查找出 sql 不能共享的原因
有些bug可能会导致 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
Bug 可能会导致 cursor pin s wait on x :
NB |
Bug |
Fixed |
Description |
Hang / deadlock from ANALYZE of cluster index |
|||
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 |
||
11.2.0.4, 12.1.0.1 |
Long parse time for large query with many nested views due to much time in epxression analysis code |
||
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 |
||
11.2.0.4, 12.1.0.1 |
Many child cursors using Adaptive Cursor Sharing with binds (due to BIND_EQUIV_FAILURE) |
||
12.1.0.2, 12.2.0.0 |
Jobs don't execute per schedule with a large number of PDBs |
||
12.2.0.0 |
High CPU in qctHasFakeBind (can cause 'cursor: pin S wait on X' waits) |
||
11.2.0.4, 12.1.0.2, 12.2.0.0 |
PQ hang/deadlock possible - "cursor: pin S wait on X" waits |
||
12.2.0.0 |
Spikes in library cache mutex contention for SQL using SQL Plan Baseline |
||
11.2.0.4, 12.2.0.0 |
Rare instance hang: deadlock between 'row cache lock' and 'cursor: pin S wait for X' |
||
12.2.0.0 |
Partition pruning causes delay in TBL$OR$IDX$PART$NUM |
||
11.2.0.4, 12.2.0.0 |
QC blocked / parse hang for parallel DML executed from remote stored procedure |
||
11.2.0.4, 12.1.0.1 |
mutex deadlock having SQL baselines on recursive dictionary cursor |
||
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 |
||
11.2.0.3, 12.1.0.1 |
Truncate partition takes long time doing recursive delete on MLOG$ |
||
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 |
||
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 |
||
11.2.0.1.BP12, 11.2.0.2, 12.1.0.1 |
SQL not shared due to INST_DRTLD_MISMATCH with global transaction |
||
11.2.0.3, 12.1.0.1 |
Long parse time for large inlists - can cause 'cursor: pin S wait on X' waits |
||
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 |
||
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 |
||
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 |
||
11.2.0.2, 12.1.0.1 |
Contention from many concurrent bad SQLs - superseded |
||
11.2.0.3 |
library cache lock/cursor: pin S wait on X with parallel partition stats gathering |
||
11.2.0.1 |
Library cache lock waits if long running TRUNCATE in progress |
||
11.1.0.7.2, 11.2.0.1 |
CREATE SYNONYM and CREATE PACKAGE may incorrectly invalidate objects |
||
11.2.0.1 |
Unnecessary "cursor: pin S wait on X" waits |
||
10.2.0.4 |
Mutex self deadlock on explain / trace of remote mapped SQL |
||
10.2.0.5, 11.1.0.6 |
Deadlock involving "ROW CACHE LOCK" on dc_users AND "CURSOR: PIN S WAIT ON X" |
||
10.2.0.5.5 |
DBMS_STATS causes deadlock between 'cursor: pin S wait on X' and 'library cache lock' |
||
10.2.0.4.3, 10.2.0.5 |
Unnecessary "cursor: pin S wait on X" waits |
||
10.2.0.4 |
MMON deadlock with user session executing ALTER USER |
||
10.2.0.5 |
EXECUTE IMMEDIATE no releasing mutex or library cache pin |
||
+ |
10.2.0.4 |
Self deadlock hang on "cursor: pin S wait on X" (typically from DBMS_STATS) |