网站首页 > 文章中心 > 其它

oracle执行计划怎么看

作者:小编 更新时间:2023-09-04 11:19:46 浏览量:393人看过

Oracle如何查看SQL实际执行计划

①.、 查看最近执行的SQL语句

select?/*recentsql*/s.SQL_ID,s.CHILD_NUMBER,s.HASH_VALUE,s.ADDRESS,s.EXECUTIONS,s.SQL_TEXT

from?v$sql?s

where?s.PARSING_USER_ID?=?(

select?u.user_id?from?all_users?u

where?u.username?=?'YH_TEST'

and?upper(s.SQL_TEXT)?not?like?upper(?'%recentsql%')

select?/*+gather_plan_statistics*/?/*plan_statistics1*/?name?,salary?from?test?where?name?=?'t1'?;

select?s.SQL_ID,s.CHILD_NUMBER,s.HASH_VALUE,s.ADDRESS,s.EXECUTIONS,s.SQL_TEXT

where?upper(s.SQL_TEXT)?like?upper('%plan_statistics1%'?)

and?upper(s.SQL_TEXT)?not?like?upper(?'%v$sql%');

oracle pl/sql 执行计划怎么看

打开PL/SQL Developer软件,请确保plsql能够成功连接到一个oracle数据库.

可以看到窗口上方是sql语句,下方显示执行计划表格.表格的列主要包含描述、用户、对象、成本花费、IO开销等,表格,当然表格列还可以自定义.表格的行包含了查询逻辑的执行顺序和各个步骤信息.

执行计划表格内容的执行顺序是:按照从左至右,从上至下的步骤执行,具体是指执行计划按照层次逐步缩进,从左至右看,缩进最多的那一步最先执行,如果缩进量相同,则按照从上而下的方法判断执行顺序.

通过查看执行计划表格的cost列,即成本花费能够知道哪个步骤花费的成本高,通过查看执行计划表格的行中的objectname列,能够知道是否使用到表中的索引.

oracle怎么查看sql执行计划

一般需要借助第三方工具来查看执行计划.

工具:PL/SQL

步骤:

①.、打开第三方工具PL/SQL,并登录到指定数据库.

如何看懂ORACLE执行计划

在SQL*PLUS,PL/SQL的命令窗口下执行下面步骤 :

SQLEXPLAIN PLAN FOR

SELECT * FROM SCOTT.EMP; --要解析的SQL脚本

SQLSELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

如图

完成以上步骤后还需要在SQL*PLUS下输入代码执行命令:

SQLSET TIMING ON --控制显示执行时间统计数据 SQLSET AUTOTRACE ON EXPLAIN   --这样设置包含执行计划、脚本数据输出,没有统计信息

接着我们输入第二段代码:

SQL执行需要查看执行计划的SQL语句 SQLSET AUTOTRACE OFF   --不生成AUTOTRACE报告,这是缺省模式

然后是第三段

SQL SET AUTOTRACE ON   --这样设置包含执行计划、统计信息、以及脚本数据输出 SQL执行需要查看执行计划的SQL语句 SQLSET AUTOTRACE OFF

第四段代码:

SQL SET AUTOTRACE TRACEONLY  --这样设置会有执行计划、统计信息,不会有脚本数据输出

SQL执行需要查看执行计划的SQL语句 SQLSET AUTOTRACE TRACEONLY STAT --这样设置只包含有统计信息 SQL执行需要查看执行计划的SQL语句

需要注意的是:在Oracle Database中,PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,如果执行"SET AUTOTRACE ON"命令就会报错,出现此时此刻呢的情况:

SQL SET AUTOTRACE ON;

Cannot SET AUTOTRAC

PL/SQL DEVELOPER工具里面执行上面脚本过后,我们是看不到相关信息的,这时我们可以通过输入脚本代码查询执行过的信息,代码如下:

SELECT T.VALUE || '/' || LOWER(RTRIM(I.INSTANCE, CHR(0))) || '_ora_' || P.SPID || '.trc' TRACE_FILE_NAME FROM ( SELECT P.SPID FROM V$MYSTAT M, V$SESSION S, V$PROCESS P WHERE M.STATISTIC# =1 AND S.SID = M.SID AND P.ADDR = S.PADDR ) P, ( SELECT T.INSTANCE FROM V$THREAD T, V$PARAMETER V WHERE V.NAME ='thread' AND (V.VALUE = 0 OR T.THREAD# = TO_NUMBER(V.VALUE)) ) I, (SELECT VALUE FROM V$PARAMETER WHERE NAME='user_dump_dest') T

如图所示:

执行上面命令后,就可以查看生成的文本文件了如图

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章