[20121212]谨慎使用set autotrace traceonly查看执行计划[补充].txt

使用toad自带sqlmonitor,toad10以上版本现在叫sqltrace.

12:00:24 SQL> set autotrace traceonly ;
12:01:23 SQL> select * from t2 where id=45;

10000 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 1513984157

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      | 10000 |   634K|     8   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS FULL| T2   | 10000 |   634K|     8   (0)| 00:00:01 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("ID"=45)

Note
-----
   - dynamic sampling used for this statement (level=2)

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        155  consistent gets
          0  physical reads
          0  redo size
     144716  bytes sent via SQL*Net to client
        902  bytes received via SQL*Net from client
         51  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      10000  rows processed

查看跟踪内容如下:
----------------------------------
Timestamp: 12:01:23.218
SELECT DECODE('A','A','1','2') FROM DUAL
----------------------------------
Timestamp: 12:01:23.234
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', :1))
:1 = ''
----------------------------------
Timestamp: 12:01:23.234
SELECT USERENV('SESSIONID') FROM DUAL
:1 = ''
----------------------------------
Timestamp: 12:01:23.250
SELECT DISTINCT SID FROM V$MYSTAT
:1 = 'SELECT DISTINCT SID FROM V$MYST'
----------------------------------
Timestamp: 12:01:23.265
Successful logon attempt (session tag: 0x26601F0)
username: 'scott'; database: ''
----------------------------------
Timestamp: 12:01:23.265
SELECT STATISTIC# S, NAME FROM SYS.V_$STATNAME WHERE NAME IN ('recursive calls','db block gets','consistent gets',
'physical reads','redo size','bytes sent via SQL*Net to client','bytes received via SQL*Net from client',
'SQL*Net roundtrips to/from client','sorts (memory)','sorts (disk)') ORDER BY S
----------------------------------
Timestamp: 12:01:25.125
SELECT PT.VALUE FROM SYS.V_$SESSTAT PT WHERE PT.SID=:1 AND PT.STATISTIC# IN (8,63,67,72,169,555,556,557,565,566) ORDER BY
PT.STATISTIC#
:1 = 21
----------------------------------
Timestamp: 12:01:25.140
select * from t2 where id=45
:1 = 21
----------------------------------
Timestamp: 12:01:25.218
SELECT PT.VALUE FROM SYS.V_$SESSTAT PT WHERE PT.SID=:1 AND PT.STATISTIC# IN (8,63,67,72,169,555,556,557,565,566) ORDER BY
PT.STATISTIC#
:1 = 21
----------------------------------
Timestamp: 12:01:25.218
DELETE FROM PLAN_TABLE WHERE STATEMENT_ID=:1
:1 = 'PLUS1010552'
----------------------------------
Timestamp: 12:01:25.250
EXPLAIN PLAN SET STATEMENT_ID='PLUS1010552' FOR select * from t2 where id=45
:1 = 'PLUS1010552'
----------------------------------
Timestamp: 12:01:25.281
SELECT PLAN_TABLE_OUTPUT FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', :1))
:1 = 'PLUS1010552'
----------------------------------
Timestamp: 12:01:25.296
DELETE FROM PLAN_TABLE WHERE STATEMENT_ID=:1
:1 = 'PLUS1010552'

可以发现实际上set autotrace traceonly生成的执行计划实际上执行的是:

EXPLAIN PLAN SET STATEMENT_ID='PLUS1010552' FOR select * from t2 where id=45

这样不一定生成的是真实的执行计划!

时间: 2024-10-24 23:08:01

[20121212]谨慎使用set autotrace traceonly查看执行计划[补充].txt的相关文章

[20120112]谨慎使用set autotrace traceonly查看执行计划.txt

自己经常在优化sql语句是经常使用set autotrace traceonly来优化sql语句.这样的好处是如果输出记录很多,可以不受干扰,直接查看执行计划以及执行计划的统计信息.但是在一些特殊情况要注意也许执行计划是不真实的. SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g

ORACLE数据库查看执行计划

基于ORACLE的应用系统很多性能问题,是由应用系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们一般通过查看该SQL的执行计划,本文就如何看懂执行计划,以及如何通过分析执行计划对SQL进行优化做相应说明. 一.什么是执行计划(explain plan) 执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述. 二.如何查看执行计划 1: 在PL/SQL下按F5查看执行计划.第三方工具toad等. 很多人以为PL/SQL的执行计划只能看到基数.优化器.耗

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

一.什么是执行计划(explain plan) 执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述. 二.如何查看执行计划 1: 在PL/SQL下按F5查看执行计划.第三方工具toad等. 很多人以为PL/SQL的执行计划只能看到基数.优化器.耗费等基本信息,其实这个可以在PL/SQL工具里面设置的.可以看到很多其它信息,如下所示 2: 在SQL*PLUS(PL/SQL的命令窗口和SQL窗口均可)下执行下面步骤 复制代码 代码如下: SQL>EXPLAIN PLAN FOR SEL

Oracle查看执行计划的几种方法

Oracle查看执行计划的几种方法   一般来说,有如下几种获取执行计划的方式: 1.AUTOTRACE方式 AUTOTRACE是Oracle自带的客户端工具SQL*Plus的一个特性.启用AUTOTRACE后,SQL*Plus会自动收集执行过的SQL语句的执行计划.性能统计数据等,并在语句执行结束后显示在SQL*Plus中. DBA用户可以直接使用AUTOTRACE功能,但是如果用户没有DBA权限,那么需要在SYS用户下执行plustrce.sql脚本,自动创建PLUSTRACE角色,再把PL

【显示执行计划】在普通用户下使用set autot 查看执行计划

在普通用户下查看执行计划 时 ,会遇到如下问题: SQL> CONN SCOTT/SCOTT 已连接. SQL> SET AUTOT TRACE搜集统计信息时出错 ORA-942 SP2-0611: 启用 STATISTICS 报告时出错 SQL> SET AUTOT ON 搜集统计信息时出错 ORA-942 SP2-0611: 启用 STATISTICS 报告时出错 SQL> SET AUTOT OFF SQL> SET AUTOT ON 搜集统计信息时出错 ORA-942

使用Oracle脚本查看执行计划

声明:脚本来自<Pro Oracle SQL>一书,pln.sql 下面只是一个查看执行计划一种方法,就是通过加上备注表示唯一SQL语句: [oracle@maa3 ~]$ cat pln.sql SELECT xplan.* FROM     (   select max(sql_id) keep  (dense_rank last order by last_active_time) sql_id , max(child_number) keep  (dense_rank last ord

[20131121]奇怪的执行计划变化.txt

[20131121]奇怪的执行计划变化.txt SCOTT@test> @verBANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production create table t pctfree 99 as select rownum id,l

根据SQL_ID查看执行计划

获取执行计划, 第一种方式,set autotrace on 第二种方式,explain plan for      第三种方式,dbms_xplan.DISPLAY_CURSOR alter session set STATISTICS_LEVEL = ALL;--不设置无法获得A-ROWS等信息select sysdate from dual;--运行SQLselect * from table(dbms_xplan.DISPLAY_CURSOR(null, null, 'ALLSTATS'

[20120915]10046事件与执行计划改变.txt

    使用10046事件来跟踪解决oracle的许多问题,是非常常用的手段,但是实际上可能出现跟踪的sql执行计划与原来不同的情况,自己应该引起注意. 测试如下: 1.测试环境建立: SQL> select * from v$version ; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition