设为首页收藏本站

中国喷墨论坛-喷墨技术应用-数码影像-数码印刷-数码印花

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 957|回复: 3
打印 上一主题 下一主题

多种方法查看Oracle SQL执行计划

[复制链接]

该用户从未签到

1

主题

4

帖子

4

积分

偶而路过

Rank: 1

积分
4
QQ
跳转到指定楼层
1#
发表于 2012-5-17 17:19:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.在线查看执行计划表% L/ z/ d, ?5 I* _$ s4 R, a

+ [9 u* q! M- B6 h+ O* X! S  如果PLAN_TABLE表不存在,执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建plan_table表。
' L5 k; B7 _  y: B' c/ G  S* ]4 G/ |% j! B
  1.explain plan* m: W; q; z7 b% P; F5 @

) }5 a* \# z6 Q) Q3 x2 y0 n  for
2 u4 F- b- v1 I- e1 {" E3 I- u
2 y& a% p* C, Z$ f  i  select * from ......4 `. s( @# y! r

- F, q. X/ F' @) t5 j  2.select * from table(DBMS_XPLAN.Display);* i* I8 y6 D- ]" e, }/ O# z$ w- x
+ o' |9 N: ?* }2 C" F4 @: d& i. v! t
  二.使用oracle第三方工具:: K4 O- H* r/ z5 Z$ s. s9 j

3 k; ^  s9 n5 `+ }$ M7 z' u  plsql developer(F5)
* _; v: Q, y% ^! C$ ]' _7 s
9 m1 |# v3 Z4 b  Toad (Ctrl+E); {8 m' r& W4 u  J; J
& k) G/ K$ g$ v+ l8 V% h$ O
  三.使用SQL*PLUS:% a' O, h; z5 Z8 a6 b! O7 H

  ?8 |/ r6 _. _5 \  如果PLAN_TABLE表不存在,执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建plan_table表。
! T. M6 n6 W: R  X' g* l1 j, |9 L4 o1 [" P& I" U3 i
  如果PLUSTRACE角色不存在,执行8 n/ p# B% B% I! G% x

" H% C1 E& d) J- S0 `( F  $ORACLE_HOME/sqlplus/admin/plustrce.sql* ^( ?* y! p- C7 _6 h8 @

; B* F; Y- ^5 Z, |( c( c' I5 i  1.sqlplus / as sysdba
$ k1 \; K5 G# l$ s+ Q. r8 @. r  h4 s. f, c
  set autotrace on;
. `& S  X" O2 k6 b
0 G) Y$ `  ?2 Q+ \) ]8 x  关于Autotrace几个常用选项的说明:, L7 d0 f0 B# i" z

3 ~" A$ R7 J  z6 X: K  SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式- N) n+ T; O/ b7 N1 k8 g  t4 L

2 O) g+ b. N& c  k' D! ~. H  SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告$ ~! R4 i# j' h% e9 c9 Z2 A

8 T8 t" m9 a9 ^  s  SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
+ F; w' O: X2 C
# e/ O' j) \* T- l  N( R6 I  SET AUTOTRACE ON ----------------- 包含执行计划和统计信息* z1 d  {7 V5 H( B: B* Z

0 b. S! B7 S5 z6 I' X7 v% l  SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询
/ J; ?  t: H& I& M# I( M& W# g4 p
  2.执行sql7 B6 B" b: L) ~/ `  ?
8 I% _7 I5 V& u  H
  四.sql trace
5 \: _9 a. t: Z) ~- @4 r! K8 o4 f+ o1 ]
  1.alter session set sql_trace=true;/ u3 ^- O  \2 \3 v

2 K7 M! H' D$ Q% {/ h$ R  2.执行sql8 e8 S2 X9 X1 |: ^" V7 s

, j3 {4 A% w( K# U  J  K  3.alter session set sql_trace=false;
2 ^4 j2 z4 K0 H7 V
* l3 m- D6 j* I) e" U  4.查看相应的sql trace文件。
2 a5 o" V5 M+ Q+ N5 f1 Z
( x$ u+ j: b* L7 y2 _% k  五.诊断事件(10046)# R% ?" q6 c+ I7 |5 H. c+ w* ?9 _

5 V7 R2 |: ~% n  1.alter session set events '10046 trace name context forever,level 12';3 r& Z# a3 L% K6 W) L4 B0 W

* k; d0 }8 m4 G( R4 B  2.执行sql. v' L' f8 [1 z& ~
$ z* k- j" f9 B5 T, f3 v
  3.alter session set events '10046 trace name context off';
9 J  F) W0 B3 c! B* Q
9 I# U# X, a5 U1 Z+ b8 Z5 F- v4 x7 C  3.查看相应的sql trace文件。
; P1 {" s& b0 r+ |
( v* I! U$ ~- f! A  可利用TKPROF工具查看跟踪文件0 R9 a& d' p; s5 L
7 N- f! E. a) A* L
  TKPROF是一个用于分析oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是跟踪用户的会话并且使用TKPROF工具的排序功能格式化输出,从而找出有问题的SQL语句。
0 Q( x5 |6 S+ M5 s& p* V6 a& n% K: k
  TKPROF命令后面的选项及输出文件各个列的含义在这里不做详细的介绍。google一下就会有很多资料。: s. ~! d4 W- e) d2 x) H
7 }5 n/ P" \+ e% Z
  下面简单描述一下TKPROF工具的使用步骤:
1 @/ A% \4 P2 b' }) x1 j* o/ f  ]. h# d. V* A0 B
  1、在session级别设置sql_trace=true9 j+ Q& u; ~: t; b# s9 p( r  ], D

! \; ~) z' h3 T' c/ G; ]9 h, K4 o  alter">sys@ORCL>alter session set sql_trace=true;
7 W" ^5 g$ t8 J, N. w" b" l0 Q: l0 `  P5 b7 Y- N, }  O. [
  Session altered.
( l/ ~3 J2 j3 y0 m  A# a- @, |- Q+ ?" w1 f8 u
  如果要在pl/sql中对session级别设置true,可以使用dbms_system这个包:, K8 X" L0 \6 b! {
2 t- z) D$ k$ K9 S. j- I+ q" t2 `
  sys@ORCL> exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
( E: Q: R8 F. Q; z
" x& d4 A6 Q) X5 j  2、指定一下生成的trace文件的名字,便于查找:/ B! d% B4 `% K# i1 `9 M. F1 \

+ ~# r* U9 O+ }! M, S9 |  alter">sys@ORCL>alter session set trace file_identifier='yourname';
: r" ^& V$ W1 A5 ]) |3 S2 F! H+ J8 y/ m8 j4 R6 }8 r) w
  3、执行SQL语句。
, J/ B$ W2 f( D0 K2 K
3 y; f4 @! j7 r) v% u  4、利用TKPROF工具格式化输出的trace 文件:4 x, O% D; ]: G

; L$ p  e2 @6 Y7 Z' j" r% R  [oracle@q1test01~] $tkprof/oracle/admin/orcl/udump/orcl_ora_10266_yourname.trc/oracle/yourname.txtexplain=user/pwdaggregate=yessys=nowaits=yessort=fchela" ]: ^- e8 k5 ^- N) x, @/ [1 q

2 t# n. f3 F0 n1 p* |) x  5、查看生成的文件再设置sql_trace=false:
8 }) G2 M2 N+ b8 w- R% m$ Q
% l' W5 x( X+ e, B  alter">sys@ORCL>alter session set sql_trace=false;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖

该用户从未签到

1

主题

3

帖子

3

积分

禁止访问

积分
3
QQ
2#
发表于 2012-5-18 16:10:28 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

3

积分

禁止访问

积分
3
QQ
3#
发表于 2012-5-18 17:14:42 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

1

积分

偶而路过

Rank: 1

积分
1
QQ
4#
发表于 2012-5-18 19:23:27 | 只看该作者
只是路过看帖就要回帖。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|中国喷墨论坛 ( 沪ICP备05013984号

  

GMT+8, 2025-1-6 00:40 , Processed in 0.083020 second(s), 27 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表