|

楼主 |
发表于 2006-11-7 14:03:48
|
显示全部楼层
来自: 中国陕西西安
3. Stored Procedure Editor# @1 H2 Q6 e/ |( A N
a) 打开存储过程编写器的几个途径:6 F n4 y6 e) u; ~! f0 w1 |+ d, z
l 单击总菜单栏上的第三个按钮: ! R, f- Z% D9 I& M7 j9 J
l 点击Database - > Procedure Editor ,% c, N8 S1 c$ G- f4 J( s _, F
l 可以通过Schema browser来调用
a6 Y/ {' S$ }5 _/ r$ bb) 一些特点和优点:) `6 F3 u Z$ ]. V
1. 强大的自定义设置:从保留字的显示方式,到自动替换,到各种快捷键的定义等等,用得越熟越顺手。
3 z# H6 _+ g& q3 ?, ~9 M2.
1 d/ E! }3 [" M, L& p! I+ S3. 自动用不同颜色显示SQL和PL/SQL关键字,语法清晰明了,可根据自己的习惯来具体定制各类关键字的具体显示方式。可以自定义存储过程得模板,在新建存储过程的时候,自动生成程序的框架可以方便的调用Schema Browser,把鼠标定位于某个对象上,F4,Schema Browser打开该对象的详细描述,帮助顺利快速开发程序。支持代码自动更正,如输入ndf,自动替换成NO_DATA_FOUND,输入the自动替换成the,类似的自动替换还可以自己修改和添加。
) p) \. _: C% N! l& S& f5 ~# g+ i7. 方便的左边行号显示,单击左边行号就可以实现调试断点的增加/删除& o/ S" S9 O& `$ Q2 Y3 ?/ C8 K
8. 对各种快捷键的支持,不但包括常见的编辑操作,还可以有自己定义的PLSQL块的支持(自己定义快捷方式)。如可以定义CTRL+SHIFT+D:弹出所有PLSQL Block的类型,可以自己选择。" c' _5 L* j+ P8 j5 `( E1 X: i
9. 可以在一个集成开发环境里面,一边编码,一边调试,不用多处切换
9 O& H9 g6 z. \7 _% j" P% E10. 方便的同时打开多个存储过程,通过页面快速切换+ u* d0 p/ n$ `2 Q- d, z
11. 快速编译存储过程,快速定位错误所在,自己选择是否同时编译依赖的存储过程( E0 P3 D$ b$ }) L
12. 内置对PL/Formatter,可以用PL/Formatter对存储过程进行格式化,并且可以提供存储过程的概要分析和修改建议
( N6 Q$ A. }# A& t% HPL/Formatter可以对现有的存储过程进行高速的格式化,使所有的存储过程都符合同样的编写标准,这样既有利于提高程序的可读性,避免不同人写的模块的风格上的很差异。! ?+ c2 h, q. M
PL/Formatter 还有助于提高程序的模块化,增强程序的结构清晰度,增强SQL的共用性。
5 w& _( X( y/ \2 d( G( F; i: {PL/Formatter 还可以帮助完成PL/SQL和Oracle版本之间的管理。7 p, b1 H8 H: \' m4 k
13. 内置RevealNet Knowledge Base,单击鼠标右键就可以打开,快速得到技术上的支持,解决技术难题% K# n2 u/ Z( C: o c
nPL/SQL:
, a0 I( Y6 k' C" \' R) en包含整个开发过程中可能遇到问题的答案7 Z. V' m, Q ^
nCode Library:大量的严谨的PL/SQL代码例子和现成过程,完全源代码提供7 i$ j( O# \) }; a! T
n各种错误处理模块可供参考,各类字符日期函数
6 p8 d& n" f- T2 h6 i- t1 C( nn包含1400多个主题
. o; K3 |9 n# XnAdmin:
. U7 P g# {* Cn解答DBA日常工作中80%的常见问题,覆盖2400多个主题
1 D/ A+ W# B8 rn从网络到性能优化,从备份恢复到Error message,一应俱全- A F9 j9 f3 L A% [/ a0 p* l
例子:遇到失效的存储过程怎么办?
7 A2 {5 ]0 l. X4. 如何对存储过程进行Debug?/ R, H: g* u. r( S
u 需要Toad单独的Debug Option(Standard Version 没有这个选项)
8 W* l. b+ j/ t" F) `u 要用Toad对存储过程进行debug,必须安装Oracle的系统包:dbms_debug,而且必须安装Oracle Probe API v2.0 或者更高的版本。8 X0 Q0 j6 M% U0 ]
u 集成在Stored Precedure Editor里面,可以一边编写一边调试,大大提高开发效率
, m3 |8 }$ J9 z+ M8 K1 N4 Ju 打开Procedure Editor后,Debug菜单激活,可以开始进行Debug工作。
& y4 F4 H0 [+ W. Fu 允许对存储过程进行逐行调试、断点调试,也支持对触发器进行调试。( {/ ?& m. W2 F% y+ ^3 N% S9 |
u 可以有断点支持,支持Watch变量,允许运行时改变变量的值# F! v5 V+ s' T' O8 X0 x: n
u 允许对多层调用的Debug支持
0 K' d& w4 u7 Z; c( @调试步骤具体举例:, W9 x/ T, e/ {! {
1. 点击菜单栏的第三个按钮: ,打开Procedure Editor
; {4 i5 x( ], J2. 点击Procedure Editor的菜单栏的 按钮,调出需要调试的存储过程% t1 l+ j0 {( U& G, P p
3. 单击工具栏上的按钮 ,输入需要传入的参数,如果不需要传入参数,可以直接单击工具栏上的按钮: ,直接开始调试,如下图输入传入参数:2 b8 H z% e- y- T7 b5 X9 Y7 i
% e9 Q7 Y) o# A' e
4. 单击菜单栏的按钮: ,可以单步跟踪,也可以定义一个断点,直接运行到断点在单步执行,在存储过程运行的过程中,当前语句会高亮度显示,并且把鼠标指针定位到变量上,Toad自动显示该变量的当前值。* ?, E+ U5 e6 s: Z" j
- j9 U$ L; I+ }3 \* b' U! Q; z5. 可以随时中止程序的执行,只要点Debug ->Halt Execution,或者菜单栏上的按钮 ,就可以中止程序的执行
5 t$ L2 r& K9 e( @! R. s" z3 W0 b$ `6. 当碰到一个存储过程调用另外一个存储过程的时候,可以选择跳过(Step Over) ,这样就直接运行那个被调用的存储过程,返回调用结果,继续这个存储过程的调试,也可以选择Trace Into ,这样就打开被调用的存储过程,进一步深入调试那个被调用的子存储过程。如果需要保持Debug信息,在编译的时候应该选择Compile Dependencies with Debug Information,就是Procedure Editor工具栏最右边的那个按钮 。. z( @, S/ E- I4 h) L
7. 支持对变量实时追踪:使用Watch:! F+ S( B+ p3 f" ?- E) X" l
可以在运行前,或者运行过程中对某个变量进行实时跟踪:Add Watch,把鼠标定位到该变量上,然后点击Debug ->Add Watch At Cursor,该变量就会出现在Debug状态窗口上,而且实时反应该变量的当前值。如上图中的变量v_empname。可以运行时刻修改1 q9 Z; N; @) g% m9 K6 F
8. 断点支持:
( c4 g" e: g+ c3 P8 I单击存储过程需要加断点的地方的行号,该行颜色变红,输入参数,单击执行按钮 ,可以直接运行到断点处,可以不必逐行追踪,更加高效率的进行调试。
% S; b7 Z) {, O# K+ gDebug Option还支持条件断点,只有当满足条件的时候才会在那个地方停止,否则就好像不存在这个断点一样继续运行。
8 A4 r9 R' I8 x) ? L, x?? 注意DBMS_OUTPUT.PUT_LINE的结果只有当程序执行完成以后才会出现,在程序执行过程中是没有结果的。
- A3 u" |( }. p6 I! F; B- G: O. r2 q( v' U7 S
2 P# s, R2 A# Z7 i6 X" p0 v7 i4. 如何用SQLab Xpert对存储过程进行调优?' z' Z* m$ E/ L/ I3 W
我们知道,Oralce数据库的优化,最主要的步骤就在于SQL的优化。而在没有专门的工具(如Toad)的帮助下,进行SQL优化是一件非常困难和乏味的事情,并且需要对Oracle的深入理解和高超的Oracle调优技巧。使用Toad的SQLab Xpert Tuning模块,可以使我们普通开发人员也能够非常快速,精确的对SQL进行专家级的分析
# R5 Q. j, P: U# h在SQL Editor和Procedure Editor里面,选中需要调试的SQL语句(SQLab Xpert只能调试Select,Insert, Update,Delete语句),复制到SQL Editor里面,然后点击工具栏上的调优按钮 ,Toad会自动打开SQLab xpert 窗口,捕获当前的SQL语句,并且把它转化为符合explain plan格式的语句。5 ]+ j9 I& s# }, I
第一次打开Xpert的时候,Toad会提示你,需要安装一些Server端的表、视图和包等对象,可以把表存储到某个指定的表空间(如Tools)里面。可以简单的按照提示一步一步做就可以了。如果系统设定不允许Job的话(Job_queue_process=0),Toad提示有些部件不会现在安装,可以忽略。安装完成以后,可以选择让某些非DBA用户也可以使用Toad的SQLab Xpert调优功能。: f$ {8 @2 U; @
安装完成以后,Toad会提示你一些关于优化目标方面的问题,你可以选择每次优化都可以重新设定,或者一次设定,以后一直使用这个设定。当然如果需要,还是可以更改的,在SQLab Option xpert的窗口的Administration和Preference下面重新设定。
' b/ i; o' S1 z4 e+ }! {例子:
3 n; a3 x" W) J下面这个SQL语句涉及到多表之间的关联,有一定的复杂性,我们可以借助Toad的SQLab Xpert Option来帮助分析:) w! s! x3 K9 Q4 T
select a.name. b.name, c.emp_name2 J- x" \, w7 \; @" G
from dep a, manager b,emp c. B4 M- t5 M o) u
where a.dep_no=c.DEP_NO1 D% Y+ u9 t. ?6 L
and b.manag_id=c.manag_id
1 w/ A$ c+ ?% m q" r4 Eand c.emp_no=3+ n7 a. i) |5 V; c6 e8 z
我们把这个SQL复制到SQL Editor里面,单击上面的调优按钮,Toad打开SQLab Xpert Option窗口。
% _0 \# d- W$ n# a8 E3 T如下图:
3 _" v) R i* S* p9 Y9 s( ^! }# ~" i% M. H9 Y1 h5 d
从上面的图中我们可以方面的看到:在各种优化模式下,该SQL语句的执行计划分别是什么样的,Toad给出了每一种执行计划的具体每一个步骤,每个步骤的成本,该表涉及的相关的数据等,如果SQL存取的表还没有经过分析,Toad会以红色警告显示,并且很方便的帮助你对该表进行分析,收集统计数据,重建索引等,以有助于优化器作出最好的选择。可以把当前的分析结果保存到它的资料库里边,以备以后再次调用之需。0 J% G! k0 M4 i# g, g2 q7 F
我们还可以求助与SQLab 的自动优化功能:点击Original SQL下面的auto tune按钮,Toad会对执行结果按照tkprof进行分析(当然,这需要你在initsid.ora里面设置好utl_file_dir,如果服务器是在Unix机器上的话,还需要通过FTP方式得到Trace文件,有一些小小的设置)。. q6 w- J: q/ o
自动优化非常高效的对所有执行计划进行实际运行比较,并且给出实际执行的时间的对比,如下图:
# R5 T1 r. b" W) F
$ S8 d9 A7 }8 s2 S( T 我们还可以让Toad给出实际的优化建议:点击Original SQL,单击下面的Advice按钮,Toad根据对SQL的分析和执行结果给出合理的建议: o' a8 g3 S% _+ d: L$ C
如:
. U: _, p6 Q+ E9 T1. 把表和索引分别放到两个不同的表空间,因为我们在创建表,加上约束的时候没有指定USING INDEX子句,所以表和索引都建立在了用户的默认表空间上了。+ H7 M* ?8 i- m# t z( G9 ?/ D# l$ R
2. 对表EMP,DEP和MANAGER进行分析,收集最新的统计数据,有利于CBO得到最优的执行计划$ J3 p* g+ c4 N$ P; m$ N- E; ]
3. 在合适的列上创建索引:EMP的manag_id和dep_no。当表中存在大量的数据的时候,这样可以大大减少由于全表扫描带来的成本。
; I$ N' a, S, `, W+ |+ ]" ~4 q8 \+ k; A! K( R" N
0 J: ~' M; s" x5 P, T$ ~& V, B
5. SQL Modeler:' z# ?' R4 ?3 A' x& }9 n3 E
SQL Modeler可以帮助开发人员很容易的写出各种复杂的SQL语句,只需通过简单的拖动鼠标,就能够写出复杂的SQL语句来。4 n6 s; Q# ?3 b6 z0 t) q
打开SQL Modeler的几个途径:
5 ]+ b( J% c" j5 u% y* x) T8 J' ]+ P$ Si. 菜单栏 Database -> SQL Modeler ,打开窗口# Q0 w7 B& I4 Y- ~' \
ii. 单击工具栏第四个按钮 ,打开SQL Modeler窗口
; b. I M z1 H z/ @窗口由三个主要部分组成:3 G) B1 s2 o/ p2 n) C9 G
n 表选择区域:最右边的那个部分,用来选择From子句中用到的表。拖动到左边的区域或者双击就选择了该表。. |9 D. E7 ~0 `6 e
n 表模型区域:用来图形化的显示选择的表和表之间的关联关系。
( z4 U2 ~" z3 I B( o) Q7 ^n 生成SQL区域:这里显示用图形化方式创建的查询对应的SQL语句,
0 D7 ]& {- S3 y$ J( F0 [" T7 H5 k
5 `; r$ T) n8 \; S c; K8 A 在SQL Modeler里面,还支持对生成的SQL进行Explain Plan,调试SQL的性能,运行SQL,看是否得到了希望的结果,保存生成的语句,或者把语句粘贴到SQL Editor里面。
+ c# A/ B& d+ x0 |; n# l2 O3 n% u5 c+ W; O8 z5 p
有了SQL Modeler的帮助,即使是初级的程序员也能编写出复杂而又高效的SQL查询来。
* R X1 U- i# f比如下面的例子; |
|