设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

该用户从未签到

1

主题

4

帖子

4

积分

偶而路过

Rank: 1

积分
4
QQ
跳转到指定楼层
1#
发表于 2012-5-17 17:19:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.在线查看执行计划表
$ w* L3 W. A& t) A4 ~8 A% M
% [; P6 X. r6 a9 E$ f# t  如果PLAN_TABLE表不存在,执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建plan_table表。
. i/ Y; B# _: ?* |3 p1 ^& a* K! z' ?" s% G5 M- }2 W
  1.explain plan% E! H" t0 b( T" a" ?
, x# r' h3 v* f# t/ N. B1 z' N, l
  for
7 P" e& }2 p6 j6 k$ E! Z1 s9 I, k6 c/ w0 l& m; h  \* h
  select * from ......' m" t5 q3 Y4 ]+ |) k8 L5 i, Y# t
- }7 Q7 e( Z( @0 O7 ?2 \3 t7 `* k0 D6 R
  2.select * from table(DBMS_XPLAN.Display);( ?+ j( s% |0 _: k9 @$ ]5 p4 N' R8 _4 j

" d5 h0 f* X- v' Q& D  二.使用oracle第三方工具:
  C& a/ p$ s6 V: A/ D( o% A4 G; A, a' j4 g) @1 h
  plsql developer(F5)+ P0 O* f8 a& ?$ U

( H' K( r9 b1 E, s2 Z  Toad (Ctrl+E)
+ g: d$ m" _5 x4 e/ f" s% z
, \. {4 V8 P$ m# E7 @1 ]7 ^  三.使用SQL*PLUS:
* b5 T" y: D1 C
# u- l1 U) O1 z" k6 q  如果PLAN_TABLE表不存在,执行$ORACLE_HOME/rdbms/admin/utlxplan.sql创建plan_table表。1 c1 c2 H0 V' N; O: u8 l
/ i6 E* _5 v; i$ o: |
  如果PLUSTRACE角色不存在,执行
4 L6 d( `5 B. L5 ?' F' y3 [' y0 P3 g
  $ORACLE_HOME/sqlplus/admin/plustrce.sql
: J1 J" G% \5 w% u  K# c8 i2 k" Z! |' g" t$ j' F& p) F. J
  1.sqlplus / as sysdba" j! ~, l3 C/ I$ J

; [" f/ m7 C; [9 [7 T5 Q; Y% @  set autotrace on;
- I" A2 t4 z2 f, ?8 H
7 p* o5 o' n- U" u- x2 I1 e- G  关于Autotrace几个常用选项的说明:# T( n  I- Y, D  H. a
/ V: s2 |  b8 r# f
  SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式6 i7 d8 E5 g2 X1 }) s8 U9 \9 R
% ?- R" U( ?. H8 s) K3 a
  SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
& Y; S' w( a( W
- n5 }# K4 }# ^" ?7 ?6 I  SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息& @: C& |$ {/ K$ ?; T1 z" ~

- C2 \2 O! R  U& T" u  SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
' ]1 N* o* A4 g( K8 m9 F$ e. v" n$ [  j0 b% b9 O% h
  SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询7 a8 H. P* r: o% }- a  }) P7 e

" `9 ~& F: p# m( U* F. o  2.执行sql$ [: z* q0 o; o6 g3 Q0 ?
* B' R4 Y1 T) {% N# a+ v
  四.sql trace
; S& X' Z' F& f
/ \4 {' p  L6 p9 Q( a0 B' l- ~% G! E  1.alter session set sql_trace=true;* o4 m; A( J/ @8 q6 h

7 M/ f9 X2 \) l  ^% M- H: u# o1 w& Z  2.执行sql$ J0 J7 f4 W* B% K
/ ~! Z% Y! W6 L8 @. S  P) U
  3.alter session set sql_trace=false;
5 X6 T2 [8 a8 s/ P* U* g! f: p) h' C8 n$ ^! f% J4 b' x
  4.查看相应的sql trace文件。
+ z! f0 j& l, ]7 V
  X$ h# X  y9 ]) Z/ k8 X1 i  五.诊断事件(10046)/ P9 U4 z1 z- J/ a9 i  A' L

' G* U2 C; p; P8 f5 |7 p4 I  1.alter session set events '10046 trace name context forever,level 12';+ Y7 l9 ?; _, g# c

; W( |1 c/ X, e2 ^) ?9 |. {8 A  2.执行sql
. q* l5 T, z9 |1 `; R, O' t2 b" }. a
  3.alter session set events '10046 trace name context off';5 Q% ?5 }" E, v7 o( V7 Z! c

( v% B7 _7 q/ m& R5 y" N  3.查看相应的sql trace文件。  Z  N( v3 w, b" ]' F  c5 w

" q) V1 l% [. u/ [# o+ `6 e  可利用TKPROF工具查看跟踪文件/ Y& G. ]3 [( ?) ]4 B) V

. r% m& H: r4 n  TKPROF是一个用于分析oracle跟踪文件并且产生一个更加清晰合理的输出结果的可执行工具。如果一个系统的执行效率比较低,一个比较好的方法是跟踪用户的会话并且使用TKPROF工具的排序功能格式化输出,从而找出有问题的SQL语句。
8 ^1 m% Y) }* R- I. c1 h7 X2 G6 h  i: e0 V5 P: L
  TKPROF命令后面的选项及输出文件各个列的含义在这里不做详细的介绍。google一下就会有很多资料。' D+ s& v  [3 U' u* n; s! S1 Y
$ ~! z) i7 s/ z5 R* e
  下面简单描述一下TKPROF工具的使用步骤:
+ O) M9 d& V3 o% Q% e$ L# M, C* \  F4 R* X
  1、在session级别设置sql_trace=true
  l# Z  S& T2 ?9 b; O8 l
! q5 S9 Y/ m  T8 N0 y; }  alter">sys@ORCL>alter session set sql_trace=true;
  K: h# Y* w% z) ], u: `* M# }0 W* G" |5 I- Y4 K$ Q
  Session altered.: M& U( a3 i3 h' P( @: G
) A+ F- t1 G; F. Y  Q4 F6 ^
  如果要在pl/sql中对session级别设置true,可以使用dbms_system这个包:
8 C# ^7 w: f' Q6 Z1 b
" I0 Y8 S% m* C6 a3 ^; t4 U0 ]  sys@ORCL> exec dbms_system.set_sql_trace_in_session(sid,serial#,true);
, L. [9 _6 U2 i: A/ R# y" E: V9 ~
+ G5 G" S! n. c8 ]! \; `$ d  2、指定一下生成的trace文件的名字,便于查找:
: x- j* d2 }' B4 ~  D% o6 C! n( {
+ Q4 _; G) I  D6 Z  alter">sys@ORCL>alter session set trace file_identifier='yourname';
1 f8 s0 T9 n3 r0 d4 v1 R, w/ ~% f; ]
* O6 {, p" z- L$ i' l2 J  3、执行SQL语句。! ?4 F- o1 f" r6 \* X5 Q
5 o$ K9 X2 T( z) P
  4、利用TKPROF工具格式化输出的trace 文件:+ ?& i/ e$ g! P( V0 ^

% b0 n: W4 {- P4 {. p; H  [oracle@q1test01~] $tkprof/oracle/admin/orcl/udump/orcl_ora_10266_yourname.trc/oracle/yourname.txtexplain=user/pwdaggregate=yessys=nowaits=yessort=fchela6 Q  [2 e1 ]3 V! J/ F% r: R) ?
5 A' ?, H+ R% ?% n6 q$ r2 u
  5、查看生成的文件再设置sql_trace=false:
% K4 @/ f; [2 O4 \% ^) s9 {' B* Q7 n0 n
  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, 2024-11-24 13:40 , Processed in 0.064463 second(s), 27 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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