1、刷新看板,执行视图
SELECT * FROM MES_V_WORKBOARD_NEW;
大约70秒中才出,而其他工厂1-2秒即可查询完毕。
2、分析问题:
(1)执行语句时,CPU升高,有一个线程占用100%,内存正常,硬盘io也会占用一部分。
(2)优化系统参数和内存参数,也无法正常
(3)重启数据库,也无法正常
(4)分析为索引问题,查看系统索引也都正常
(5)最终,查看游标缓存
SELECT 'session_cached_cursors' PARAMETER,
LPAD(VALUE, 5) VALUE,
DECODE(VALUE, 0, ' n/a', TO_CHAR(100 * USED / VALUE, '990') || '%')
USAGE
FROM (SELECT MAX(S.VALUE) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME = 'session cursor cache count'
AND S.STATISTIC# = N.STATISTIC#),
(SELECT VALUE FROM V$PARAMETER WHERE NAME =
'session_cached_cursors')
UNION ALL
SELECT 'open_cursors',
LPAD(VALUE, 5),
TO_CHAR(100 * USED / VALUE, '990') || '%'
FROM (SELECT MAX(SUM(S.VALUE)) USED
FROM V$STATNAME N, V$SESSTAT S
WHERE N.NAME IN
('opened cursors current', 'session cursor cache count')
AND S.STATISTIC# = N.STATISTIC#
GROUP BY S.SID),
(SELECT VALUE FROM V$PARAMETER WHERE NAME = 'open_cursors');
游标缓存已经占用100%。之前重启数据库并没有解决此问题。
解决方案:增加游标大小:
alter system set session_cached_cursors=600 scope=spfile; --游标缓存600
再次重启数据库,并执行,就正常查询了。
3、原因分析:
可能在导入数据后,这个游标缓存没有自动清理,一直是100%,扩容后,可能释放了这个会话缓存,就正常了。查询大约1-2秒钟


