前言
在遇到SQL语句性能问题时,应用业务模块功能所执行的SQL很慢,而将对应SQL语句拿出来在DM管理工具或者disql工具中执行很快并且查看工具里面SQL执行计划也正常,这时需要检查确认数据库内存中缓存的执行计划是否正确。
操作方法
1、查看对应SQL语句在内存中的执行计划的CACHE_ITEM(CACHE项的地址)
以SQL语句Select count(*) from TAB1 WHERE OWNER='CTISYS';为例。
查询SQL在内存中的执行计划,如下:
select cache_item,sqlstr from v$cachepln where sqlstr like '%CTISYS%';
或者
select a.cache_item,a.sqlstr
from v$cachepln a,dba_objects b
where a.sqlstr like '%CTISYS%'
and a.tableid like '%'||b.object_id||'%'
and b.object_name='TAB1'
and b.object_type='TABLE';
V$CACHEPLN 视图记录了SQL语句在内存中的执行计划信息,包括SQL语句涉及到的表个数、表ID、SQL语句内容、语句绑定变量参数的个数等。

2、根据查询出的对应SQL语句的CACHE_ITEM,将执行计划dump到文件便于查看
alter session set events 'immediate trace name plndump level 140485191235648,dump_file ''/home/dmdba/sql_01_pln.txt''';

3、如果发现当前内存中的执行计划存在问题,则可以将该计划清理掉
清理语句如下:
SP_CLEAR_PLAN_CACHE(140485191235648);

可以观察到,cache_item为140485191235648的执行计划已经被清理出内存了。
更多资讯请上达梦技术社区了解:https://eco.dameng.com
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




