您的位置:首页 > 数据库 > Oracle

Oracle 硬解析查询

2016-01-13 11:42 411 查看
--硬解析的parsecount(hard)
select*fromv$sysstatwherenamelike'%parse%';

selecta.value,b.namefromv$mystata,v$statnameb
wherea.STATISTIC#=b.STATISTIC#andb.namelike'%parse%';

select*fromv$sqlarea;

selectsql_id,sql_text,executions,last_load_timefromv$sqlarea-->首次查询后在v$sqlarea保存父游标且执行次数EXECUTIONS为1
wheresql_textlike'%DDDDDD%'
andlast_load_time>trunc(sysdate-1/24)orderbylast_load_timedesc;

编码硬解析的改进方法
1.更改参数cursor_sharing
参数cursor_sharing决定了何种类型的SQL能够使用相同的SQLarea
CURSOR_SHARING={SIMILAR|EXACT|FORCE}
EXACT--只有当发布的SQL语句与缓存中的语句完全相同时才用已有的执行计划。
FORCE--如果SQL语句是字面量,则迫使Optimizer始终使用已有的执行计划,无论已有的执行计划是不是最佳的。
SIMILAR--如果SQL语句是字面量,则只有当已有的执行计划是最佳时才使用它,如果已有执行计划不是最佳则重新对这个SQL
--语句进行分析来制定最佳执行计划。
可以基于不同的级别来设定该参数,如ALTERSESSION,ALTERSYSTEM
altersystemsetCURSOR_SHARING=EXACTscope=both;
altersystemflushshared_pool;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: