首页 » 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 X和kksfbc 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 修正应用程序解决该问题。
对不起,这篇文章暂时关闭评论。