`
longflang
  • 浏览: 64184 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用SQLPLUS分析SQL语句(查询执行计划跟踪)

阅读更多
方法一: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);

转自:http://space.itpub.net/24695024/viewspace-677182
分享到:
评论

相关推荐

    批量运用sqlplus上传sql语句

    批量运用sqlplus上传sql语句,自测有效!

    Oracle基础:通过sqlplus执行sql语句后的结果进行判断

    今天小编就为大家分享一篇关于Oracle基础:通过sqlplus执行sql语句后的结果进行判断,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    SQLPLUS命令的使用大全

    SQLPLUS命令的使用大全SQLPLUS命令的使用大全

    学生成绩管理系统Oracle全部SQL语句.txt

    (1)选定某一主题,创建一个oracle数据库,对其进行日常管理及应用(全部用SQL语句实现): 1、创建数据库实例,数据库表空间,创建管理员,普通用户,并分别授予相应权限; 2、至少建立5个表,以及表间关系,使用...

    快速学习SQL语句结构化查询

    快速学习SQL语句语句结构化查询。。。。。。。。

    oracle的使用和sql语句的入门和实例

    包括SQLPLUS的命令、sql的语句。内容包括:纵向投影操作 select、column使用、order by、where 选择操作(横向投影)、单行函数、日期函数、组函数、多表连接、表的约束、事务等。

    sql查询结果输出到文本

    如果想要把sql查询的结果输出到一个文本中显示,可以按照此文本中的方法来做。

    sql_plus.rar_plus

    我们通常所说的DML、DDL、DCL语句都是sql语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行...

    SQLPLUS使用手册

    SQL语句一本全-sql server SQL_Plus使用手册 SQL语句大全大全

    sqlplus命令的使用大全

    我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 @与@@的区别是什么? @等于start命令,用来运行一个sql脚本文件。 @命令...

    sqlplus 批处理

    批处理 sqlplus 一次执行完sql语句

    instantclient-sqlplus-win-ia64-10.2.0.3.0.zip

    我们通常所说的DML、DDL、DCL语句都是sql语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql语句进行修改,然后再次执行,...

    SQL基本语句大全

    经典SQL语句大全 一、基础 注: 连接数据库 sqlplus system/oracle 显示所有的用户 select * from dba_users; 显示某用户所有表(例如SCOTT,必须大写) select 表名 from all_tables where owner='SCOTT';

    Oracle中用SQL语句实现进制间互相转换

    本文介绍了在Oracle中用SQL语句实现进制间互相转换的方法。

    sqlplus操作大全

    SQLPLUS 操作大全 Sql*plus 中使用绑定变量: sql> variable x number; ...SQL*PLUS 是Oracle提供的一个工具程序,它不仅可以用于测试,运行SQL语句和PL/SQL块,而且还可以用于管理Oracle数据库,

    Oracle SQLPlus导出数据到csv文件的方法

    准备SQL执行文件export.sql: set colsep , set feedback off set heading off set newp none set pagesize 0 set linesize 200 set trimout on spool /data/export.csv select t.name||','||t.age||','||t.salary|...

Global site tag (gtag.js) - Google Analytics