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

ORACLE数据库查看执行计划的方法

2014-08-04 10:09 316 查看
基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对SQL进行优化做相应说明

一、什么是执行计划(explain plan)

执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述。

二、如何查看执行计划

1: 在PL/SQL下按F5查看执行计划。第三方工具toad等。

很多人以为PL/SQL的执行计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL工具里面设置的。可以看到很多其它信息,如下所示



2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下执行下面步骤

复制代码代码如下:

SQL>EXPLAIN PLAN FOR

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

SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);






3: 在SQL*PLUS下(有些命令在PL/SQL下无效)执行如下命令:

复制代码代码如下:

SQL>SET TIMING ON             --控制显示执行时间统计数据

SQL>SET AUTOTRACE ON EXPLAIN       --这样设置包含执行计划、脚本数据输出,没有统计信息

SQL>执行需要查看执行计划的SQL语句

SQL>SET AUTOTRACE OFF           --不生成AUTOTRACE报告,这是缺省模式

SQL> SET AUTOTRACE ON           --这样设置包含执行计划、统计信息、以及脚本数据输出

SQL>执行需要查看执行计划的SQL语句

SQL>SET AUTOTRACE OFF

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

SQL>执行需要查看执行计划的SQL语句

SQL>SET AUTOTRACE TRACEONLY STAT --这样设置只包含有统计信息

SQL>执行需要查看执行计划的SQL语句

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

参考文档:SQLPlus User's Guide and Reference Release 11.1



注意:PL/SQL Developer 工具并不完全支持所有的SQL*Plus命令,像SET AUTOTRACE ON 就如此,在PL/SQL Developer工具下执行此命令会报错

SQL> SET AUTOTRACE ON;

Cannot SET AUTOTRACE

4:SQL_TRACE可以作为参数在全局启用,也可以通过命令形式在具体SESSION启用

4.1 在全局启用,在参数文件(pfile/spfile)中指定SQL_TRACE =true,在全局启用SQL_TRACE时会导致所有进程活动被跟踪,包括后台进程以及用户进程,通常会导致比较严重的性能问题,所以在生产环境要谨慎使用。

提示:通过在全局启用SQL_TRACE, 我们可以跟踪到所有后台进程的活动,很多在文档中的抽象说明,通过跟踪文件的实时变化,我们可以清晰的看到各个进程间的紧密协调。

4.2在当前SESSION级别设置,通过跟踪当前进程可以发现当前操作的后台数据库递归活动(这在研究数据库新特性时尤其有效),研究SQL执行时,发现后台

错误等。

复制代码代码如下:

SQL> ALTER SESSION SET SQL_TRACE=TRUE;

SQL> SELECT * FROM SCOTT.EMP;

SQL> ALTER SESSION SET SQL_TRACE =FALSE;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: