oracle-如何手动刷新执行计划plan

简介:

1,根据sql_id查询sql 内存地址及哈希值

select s.SQL_TEXT, s.ADDRESS || ',' || s.HASH_VALUE from v$sqlarea s where sql_id = '5xbtt680gjvht';

2,将该执行计划从shared pool 中清除

exec sys.dbms_shared_pool.purge('0000003E5F821DE8,16313881','c');

3,查询现在的该sql的执行计划

select * from v$sql_plan where sql_id = 'anpn3169dqr0y';

select * from v$sql where sql_id = 'anpn3169dqr0y';

4,查询sql的历史的执行计划

  SELECT s.begin_interval_time,
         s.end_interval_time,
         q.snap_id,
         q.dbid,
         q.sql_id,
         q.plan_hash_value,
         q.optimizer_cost,
         q.optimizer_mode
    FROM dba_hist_sqlstat q, dba_hist_snapshot s
   WHERE q.sql_id = '&SQL' AND q.snap_id = s.snap_id
ORDER BY s.snap_id DESC;

5,查询执行计划内容

set line 200 pagesize 300
select * from table(dbms_xplan.display_cursor('anpn3169dqr0y',0,'ADVANCED'));       
select * from table(dbms_xplan.display_cursor(‘anpn3169dqr0y’,0,'ALLSTATS LAST ADVANCED PEEKED_BINDS'));
参考:
http://blog.itpub.net/69993859/viewspace-2753737/
目录
相关文章
|
SQL 缓存 监控
Oracle中如何生成有用的SQL 执行计划(译)
漫画戴夫·艾伦(Dave Allen)曾经讲过一个古老的笑话,一个旅行者问路人去某个城镇的路,路人只是说:“如果我是你,我就不会从这里开始。”
151 0
|
SQL 存储 缓存
获取和解读Oracle中SQL的执行计划(译文)
生成和显示 SQL 语句的执行计划是大多数 DBA、SQL 开发人员和性能专家的常见任务,因为它提供了 SQL 语句执行性能相关的信息。执行计划显示执行 SQL 语句的详细步骤,这些步骤表示为一组使用和生成行的数据库运算符。运算符的顺序和实现由查询优化器根据查询转换和物理优化技术来决定。
291 0
|
SQL Oracle 关系型数据库
Oracle优化05-执行计划
Oracle优化05-执行计划
443 0
|
SQL Oracle 关系型数据库
Oracle 性能优化技巧-获取真实执行计划
Oracle 性能优化技巧-获取真实执行计划
267 0
Oracle 性能优化技巧-获取真实执行计划
|
SQL 存储 Oracle
Oracle数据库 | SQL语句执行计划、语句跟踪与优化实例
Oracle数据库 | SQL语句执行计划、语句跟踪与优化实例
323 0
|
SQL Oracle 关系型数据库

相关实验场景

更多

推荐镜像

更多