知识大全 Oracle中获取执行计划的几种方法分析

Posted 计划

篇首语:于今腐草无萤火,终古垂杨有暮鸦。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle中获取执行计划的几种方法分析相关的知识,希望对你有一定的参考价值。

Oracle中获取执行计划的几种方法分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍 需要的朋友可以参考下  

   预估执行计划 Explain Plan Explain plan以SQL语句作为输入 得到这条SQL语句的执行计划 并将执行计划输出存储到计划表中 首先 在你要执行的SQL语句前加explain plan for 此时将生成的执行计划存储到计划表中 语句如下 explain plan for SQL语句 然后 在计划表中查询刚刚生成的执行计划 语句如下 select * from table(dbms_xplan display); 注意 Explain plan只生成执行计划 并不会真正执行SQL语句 因此产生的执行计划有可能不准 因为

   )当前的环境可能和执行计划生成时的环境不同 )不会考虑绑定变量的数据类型 )不进行变量窥视

   查询内存中缓存的执行计划 (dbms_xplan display_cursor) 如果你想获取正在执行的或刚执行结束的SQL语句真实的执行计划(即获取library cache中的执行计划) 可以到动态性能视图里查询 方法如下

   )获取SQL语句的游标 游标分为父游标和子游标 父游标由sql_id(或联合address和hash_value)字段表示 子游标由child_number字段表示

  如果SQL语句正在运行 可以从v$session中获得它的游标信息 如 select status sql_id sql_child_number from v$session where status= ACTIVE and

  如果知道SQL语句包含某些关键字 可以从v$sql视图中获得它的游标信息 如 select sql_id child_number sql_text from v$sql where sql_text like %关键字%‘

   )获取库缓存中的执行计划 为了获取缓存库中的执行计划 可以直接查询动态性能视图v$sql_plan和v$sql_plan_statistics_all等 但更方便的方法是以sql_id和子游标为参数 执行如下语句 select * from table(dbms_xplan display_cursor( sql_id child_number));

   )获取前一次的执行计划 set serveroutput off select * from table(dbms_xplan display_cursor(null null ALLSTATS LAST ));

   查询历史执行计划(dbms_xplan display_awr) AWR会定时把动态性能视图中的执行计划保存到dba_hist_sql_plan视图中 如果你想要查看历史执行计划 可以采用如下方法查询 select * from table(dbms_xplan display_awr( sql_id );

   在用sqlplus做SQL开发是(Autotrace) set autotrace是sqlplus工具的一个功能 只能在通过sqlplus连接的session中使用 它非常适合在开发时测试SQL语句的性能 有以下几种参数可供选择

  SET AUTOTRACE OFF 不显示执行计划和统计信息 这是缺省模式 SET AUTOTRACE ON EXPLAIN 只显示优化器执行计划 SET AUTOTRACE ON STATISTICS 只显示统计信息 SET AUTOTRACE ON 执行计划和统计信息同时显示 SET AUTOTRACE TRACEONLY 不真正执行 只显示预期的执行计划 同explain plan 生成Trace文件查询详细的执行计划 (SQL_Trace ) SQL_TRACE 作为初始化参数可以在实例级别启用 也可以只在会话级别启用 在实例级别启用SQL_TRACE会导致所有进程的活动被跟踪 包括后台进程及所有用户进 程 这通常会导致比较严重的性能问题 所以在一般情况下 我们使用sql_trace跟踪当前进程 方法如下

  SQL>alter session set sql_trace=true; 被跟踪的SQL语句 SQL>alter session set sql_trace=false; 如果要跟踪其它进程 可以通过Oracle提供的系统包DBMS_SYSTEM SET_SQL_TRACE_IN_SESSION来实现 例SQL> exec dbms_system set_sql_trace_in_session(sid serial# true) 开始跟踪 SQL> exec dbms_system set_sql_trace_in_session(sid serial# false) 结束跟踪

cha138/Article/program/Oracle/201311/19003

相关参考

知识大全 在Oracle中启用AutoTrace查看SQL执行计划

在Oracle中启用AutoTrace查看SQL执行计划  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 C#中路径的几种获取方法及其区别

C#中路径的几种获取方法及其区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  stringst

知识大全 获取或记录Oracle语句的执行时间

获取或记录Oracle语句的执行时间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多情况下我

知识大全 Spring获取Bean的几种方式

Spring获取Bean的几种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  方法一在初始化

水质分析行业中的几种水质分析解读

近年来,伴随着工业自动化程度的不断提高;人力资源成本的不断攀升;国家十二五规划对饮用水安全、重点流域水污染防治等一系列因素都将在不同程度上推动中国水质分析仪表以较快速度发展。未来几年,对于中国的水质分

水质分析行业中的几种水质分析解读

近年来,伴随着工业自动化程度的不断提高;人力资源成本的不断攀升;国家十二五规划对饮用水安全、重点流域水污染防治等一系列因素都将在不同程度上推动中国水质分析仪表以较快速度发展。未来几年,对于中国的水质分

水质分析行业中的几种水质分析解读

近年来,伴随着工业自动化程度的不断提高;人力资源成本的不断攀升;国家十二五规划对饮用水安全、重点流域水污染防治等一系列因素都将在不同程度上推动中国水质分析仪表以较快速度发展。未来几年,对于中国的水质分

知识大全 Oracle临时表的几种好用方案介绍

Oracle临时表的几种好用方案介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下的文章主

知识大全 oracle数据库性能监控的SQL的几种情况

oracle数据库性能监控的SQL的几种情况  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  监控

知识大全 ORACLE里取随机数的几种具体的方法

ORACLE里取随机数的几种具体的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在你的工作