首页 » ORACLE 9i-23ai » 频繁SQL Failed Parse 导致”Library Cache Lock” & “kksfbc child completion” “cursor: pin S wait on X”

频繁SQL Failed Parse 导致”Library Cache Lock” & “kksfbc child completion” “cursor: pin S wait on X”

环境oracle 12c, 大量session同1个SQL ID等待library cache lock,blocker session在频繁的变,并且last_call_et并不久,SQL id在v$sqlarea查询不到对应的SQL TEXT, 间隔性出现cursor: pin S wait on Xkksfbc child completion等待事件, library cache lock的P3值(namesapce+mode)为5373954, 这简单简单记录。

SQL> @dec 5373954
                                DEC                  HEX
----------------------------------- --------------------
                     5373954.000000               520002

SQL> @hex 52
                                DEC                  HEX
----------------------------------- --------------------
                          82.000000                   52

SQL>  SELECT indx,kglstdsc FROM x$kglst  WHERE kglsttyp='NAMESPACE' and indx=82;

      INDX KGLSTDSC
---------- --------------------------------------------------------------------------------------------------------------------------------
        82 SQL AREA BUILD

SQL AREA BUILD namespace是SQL PARSE阶段.

建议收集信息
1, AWR/ASH REPORT
2, hanganalyze and systemstate dumps

oradebug setmypid;
oradebug unlimit;
oradebug hanganalyze 3;
oradebug dump systemstate 266;
oradebug tracefile_name

12c后,检查 DB ALERT LOG 是否有频繁的 PARSE ERROR信息,格式如下:

PARSE ERROR: ospid=12555, error=904 for statement:
select cxxx,xxxxx from xxxx ...;

如果为11g 可以启用10035 event捕捉Parse fail信息到db alert log。

ALTER SYSTEM SET EVENTS '10035 trace name context forever, level 1';

手动执行SQL text,或分析error code 修正应用程序解决该问题。

打赏

对不起,这篇文章暂时关闭评论。