求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
如何使用SQLPLUS分析SQL语句(查询执行计划跟踪)
 

2010-11-18 来源:网络

 

方法一:autotrace

1, connect sys/密码 as sysdba,在sys用户下运行$ORACLE_HOME/sqlplus/admin/plustrce.sql

这段sql的实际内容如下:

set echo on
drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$mystat to plustrace;
grant plustrace to dba with admin option;
set echo off

以上产生plustrace角色,然后在sys用户下把此角色赋予一般用户

SQL> grant PLUSTRACE to 用户名;

2,然后在当前用户SQL>下运行$ORACLE_HOME/rdbms/admin/utlxplan.sql,它会创建一个plan_table,用来存储分析SQL语句的结果。

实际执行的是如下语句:

create table PLAN_TABLE (
statement_id varchar2(30),
timestamp date,
remarks varchar2(80),
operation varchar2(30),
options varchar2(30),
object_node varchar2(128),
object_owner varchar2(30),
object_name varchar2(30),
object_instance numeric,
object_type varchar2(30),
optimizer varchar2(255),
search_columns number,
id numeric,
parent_id numeric,
position numeric,
cost numeric,
cardinality numeric,
bytes numeric,
other_tag varchar2(255),
partition_start varchar2(255),
partition_stop varchar2(255),
partition_id numeric,
other long,
distribution varchar2(30));

3,SQL/PLUS的窗口运行以下命令

set time on; (说明:打开时间显示)(可选)

set autotrace on; (说明:打开自动分析统计,并显示SQL语句的运行结果)

set autotrace traceonly; (说明:打开自动分析统计,不显示SQL语句的运行结果)

4,接下来你就运行需要查看执行计划的SQL语句,看到其分析统计结果了。一般来讲,我们的SQL语句应该避免对大表的全表扫描。

5,关闭以上功能,在SQL/PLUS的窗口运行以下命令

set time off; (说明:关闭时间显示)

set autotrace off;

附:相关的set autotrace命令:

SET AUTOTRACE OFF
No AUTOTRACE report is generated.

SET AUTOTRACE ON EXPLAIN
shows only the optimizer

execution path.

SET AUTOTRACE ON

STATISTICS
shows only the SQL

statement execution statistics.

SET AUTOTRACE ON
includes both the optimizer

execution path and the SQL statement execution statistics.

SET AUTOTRACE TRACEONLY
Like SET AUTOTRACE ON, but suppresses the printing of the user’s query output, if any.

说明:如果执行了set autotrace on 语句,接下来的查询、插入、更新、删除语句就会显示执行计划和有用的统计信息,直到执行set autotrace off语句。

方法二: EXPLAIN PLAN FOR sql

1,在sqlplus下执行:EXPLAIN PLAN FOR sql语句,执行后会提示已经解释。

2,然后执行如下查询,查询出执行计划

SQL> select * from table(dbms_xplan.display);

例子:

SQL> explain plan for select * from emp where deptno='20';

Explained.

SQL> select * from table(dbms_xplan.display);



MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...