toad 还可以外挂一些别的产品,比如pl/formatter, revealnet knowledge base , sql impact等,这些都能够和toad紧密集成,共同提供了一个完美的集成开发环境。新版本还新增加了dba模块,更加拓广了toad这个产品的适用范围。
二、系统要求: 客户端: ü windows 95 / 98 / nt/2000中英文均可 ü 完整安装的sql*net 2.0或者net8 ü 磁盘:一般安装需要20m左右的空间,根据所选择模块的不同和安装方式的不同,最少也要5m的磁盘空间(从网络服务器读取) ü 内存:windows 9x/me:16m 内存;windows nt/2000: min 32m] ü tuning模块需要额外的25m空间
服务器端: ü oracle 7.3 或者更高,在任何硬件平台上。 ü 需要一个dba用户帐号
三.安装: 1. 三种安装方式的选择: a) toad and personal configuration files to pc 默认安装选择,完成一个完整的client端的安装,把所有需要的文件拷贝到本地toad目录。 绝大多数用户应该选择使用这个安装方式。 b) personal config files to pc, read toad from network server 从网络服务器读取toad程序,在本地计算机安装一些自定义的文件,并且创建到服务器文件的快捷方式,一般不推荐使用这个方式,而且要求网络服务器已经配置。 c) toad to network server 把toad安装到网络服务器上,以便这样别的用户能够进行personal config files to pc, read toad from network server这种方式的安装。 2. 根据需要使用到的特性,需要运行一些脚本(都在toad/temps目录下) ü 如果需要用toad来查看执行计划,必须运行脚本preptoad.sql或者notoad.sql n 如果希望专门建立一个toad 用户来存放toad需要使用的对象的话,就运行preptoad.sql。 n 如果希望在当前连接用户模式下建立toad需要使用的对象的话,就运行notoad.sql。 n 注意,如果是选择了专门建立toad这个用户的话,需要先修改一下脚本,指定用户的默认表空间和临时表空间。 ü 需要使用oracle8i 的profile analyzer,必须运行toadprofiler.sql ü 需要加强toad的安全性,必须运行toadsecurity.sql
四、toad使用快速入门 1. schema browser: schema browser是toad的极为有特色的模块。在schema browser的帮助下,可以方便的浏览数据库内部的各类数据库对象,比如表,索引,序列,存储过程等,而且可以方便的倒出ddl语句和进行各种修改,重建工作。定位到某一类对象上,这列对象允许的操作都会自动列出来。 特色: l 支持oracle数据库里面所有对象的新建、查看、修改,集成了几乎对所有数据库对象的管理所需要的功能。 l 按照 模式->对象类别 ->对象->对象可操作属性 -> 对象本身的详细信息和对象相关的信息 来组织,非常有条理,容易定位对象,也能够看到所有你需要的对象的相关信息。 l 对于表: i. 完备的建表向导,不用输入冗长的语法,更加全面地替你考虑。 ii. 可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除列(在oracle8i里面),修改表的物理存储属性,truncate,drop等。 iii. 可以生成建表的完整的ddl语句,包括存储信息,权限信息,约束,索引和触发器等,而这些手工很难做到。 iv. 可以方便的对表进行分析,查看表地所有信息,可以有条件的倒出表里面的数据,并且保存为sql语句。 v. 可以方便的对表进行重组,可以完成exp/imp作不到的事情,而且更少地人工参与,更加安全。
l 对于视图,存储过程: i. 可以保存建立视图、存储过程的语句为文本, ii. 重新编译失效的视图,存储过程,修改视图的定义语句等。方便的查看存储过程的代码,相互依赖关系,权限信息等保存为文本等。 l 回滚段, i. 简洁明了的online,offline状态,方便地online/offline操作 ii. 详细的回滚段物理信息和当前状态。 iii. 可以方便的修改物理存储属性
l 表空间: i. tablespace map;直观的显示数据物理的在表空间上的分布 ii. 直观的查看各个表空间的利用率、剩余空间、破碎情况等信息 iii. 可以进行各种alter操作:online, offline, 增加数据文件,改变数据文件大小,改变物理存储属性等 l 对其他数据库对象也有完备的操作支持。
2. sql editor: a) 激活sql editor的三种方式: i. 连接到数据库之后,toad自动打开sql editor这个窗口。 ii. 点击总工具栏上最左边的那个按钮 iii. 从菜单栏:database -> sql editor b) 特点: l 允许同时打开多个编辑窗口,同时编辑多个sql语句 l 支持同时连接到多个数据库,同时对多个数据库进行操作 l 允许编辑sql,plsql,java,html和文本 l 使用书签功能,可以在大量sql语句里,快速定位某个语句所在位置 l sql editor本身具有强大的编辑功能,非常方便编辑sql语句。 l 强大的快捷键支持和工具栏快速按钮的支持,更加高效编写(很多快捷键可以自己定义,在view ->options ->sql editor里面) l 能够根据前面的条件,智能推测需要输入的代码,可以做到某种程度的代码智能填充 l 把鼠标定位到表/视图/存储过程名称之上,按f4,可以打开对象描述窗口,方便的查看表和视图的定义,存储过程的源代码, l 非常容易对sql语句的分析其执行计划:单击工具栏上的 按钮就可以看到explain plan的结果 l 支持部分sql*plus命令,可以方便的执行大量的为sql*plus编写的数据库脚本 l 可以通过sqlab xpert来对当前sql语句进行全面的分析,给出各种合理的调优意见,只需要单击工具栏上的tuning按钮: l 可以方便的保存,打开和运行sql脚本 l 支持对查询结果进行修改, l 可以把查询结果以多种格式保存起来,可以保存为html,纯文本,xls等多种格式 l 很容易的得到sql函数的列表和用法描述(show sql help window 按钮) l 可以查看sql语句的执行情况:通过下方的autotrace窗口 ,看到sql语句的实际执行结果和执行效率。 l 支持历史sql(f8) :可以方便的查询以前执行过的sql,不用反复重新输入。 l 可以执行匿名块,存储过程,从下方的窗口看到dbms_output的结果,如:
3. stored procedure editor a) 打开存储过程编写器的几个途径: l 单击总菜单栏上的第三个按钮: l 点击database - > procedure editor , l 可以通过schema browser来调用 b) 一些特点和优点: 1. 强大的自定义设置:从保留字的显示方式,到自动替换,到各种快捷键的定义等等,用得越熟越顺手。 2. 3. 自动用不同颜色显示sql和pl/sql关键字,语法清晰明了,可根据自己的习惯来具体定制各类关键字的具体显示方式。可以自定义存储过程得模板,在新建存储过程的时候,自动生成程序的框架可以方便的调用schema browser,把鼠标定位于某个对象上,f4,schema browser打开该对象的详细描述,帮助顺利快速开发程序。支持代码自动更正,如输入ndf,自动替换成no_data_found,输入the自动替换成the,类似的自动替换还可以自己修改和添加。 7. 方便的左边行号显示,单击左边行号就可以实现调试断点的增加/删除 8. 对各种快捷键的支持,不但包括常见的编辑操作,还可以有自己定义的plsql块的支持(自己定义快捷方式)。如可以定义ctrl+shift+d:弹出所有plsql block的类型,可以自己选择。 9. 可以在一个集成开发环境里面,一边编码,一边调试,不用多处切换 10. 方便的同时打开多个存储过程,通过页面快速切换 11. 快速编译存储过程,快速定位错误所在,自己选择是否同时编译依赖的存储过程 12. 内置对pl/formatter,可以用pl/formatter对存储过程进行格式化,并且可以提供存储过程的概要分析和修改建议 pl/formatter可以对现有的存储过程进行高速的格式化,使所有的存储过程都符合同样的编写标准,这样既有利于提高程序的可读性,避免不同人写的模块的风格上的很差异。 pl/formatter 还有助于提高程序的模块化,增强程序的结构清晰度,增强sql的共用性。 pl/formatter 还可以帮助完成pl/sql和oracle版本之间的管理。
13. 内置revealnet knowledge base,单击鼠标右键就可以打开,快速得到技术上的支持,解决技术难题 npl/sql: n包含整个开发过程中可能遇到问题的答案 ncode library:大量的严谨的pl/sql代码例子和现成过程,完全源代码提供 n各种错误处理模块可供参考,各类字符日期函数 n包含1400多个主题 nadmin: n解答dba日常工作中80%的常见问题,覆盖2400多个主题 n从网络到性能优化,从备份恢复到error message,一应俱全 例子:遇到失效的存储过程怎么办? 4. 如何对存储过程进行debug? u 需要toad单独的debug option(standard version 没有这个选项) u 要用toad对存储过程进行debug,必须安装oracle的系统包:dbms_debug,而且必须安装oracle probe api v2.0 或者更高的版本。 u 集成在stored precedure editor里面,可以一边编写一边调试,大大提高开发效率 u 打开procedure editor后,debug菜单激活,可以开始进行debug工作。 u 允许对存储过程进行逐行调试、断点调试,也支持对触发器进行调试。 u 可以有断点支持,支持watch变量,允许运行时改变变量的值 u 允许对多层调用的debug支持 调试步骤具体举例: 1. 点击菜单栏的第三个按钮: ,打开procedure editor 2. 点击procedure editor的菜单栏的 按钮,调出需要调试的存储过程 3. 单击工具栏上的按钮 ,输入需要传入的参数,如果不需要传入参数,可以直接单击工具栏上的按钮: ,直接开始调试,如下图输入传入参数:
5. sql modeler: sql modeler可以帮助开发人员很容易的写出各种复杂的sql语句,只需通过简单的拖动鼠标,就能够写出复杂的sql语句来。 打开sql modeler的几个途径: i. 菜单栏 database -> sql modeler ,打开窗口 ii. 单击工具栏第四个按钮 ,打开sql modeler窗口 窗口由三个主要部分组成: n 表选择区域:最右边的那个部分,用来选择from子句中用到的表。拖动到左边的区域或者双击就选择了该表。 n 表模型区域:用来图形化的显示选择的表和表之间的关联关系。 n 生成sql区域:这里显示用图形化方式创建的查询对应的sql语句,
dba方面的功能: toad在dba日常管理方面的能力是非常强大的,可以帮助dba安全快速地完成许多日常工作,还有toad特有的一些小工具能完成一些普通方法很难做到的功能。下面大概讲述了各个常用模块的主要功能: a) database monitor 提供直观的oracle数据库运行状况,包括下面这些详细信息: 可以看到逻辑io,物理io,各个状态的session数目,sga的利用率,共享池的使用状况,各类事件的等待状况,以及各类事件随着时间的变化情况 b) instance monitor i. 可以用来检查本地tnsnames.ora文件里面定义的所有节点、listener和数据库的运行状态和版本等相关信息。 ii. 可以远程启动、关闭数据库(如果设置了password验证方式) c) unix monitor: i. 可以监控unix机器的运行状况比如详细的机器启动时间,cpu利用率,主要的进程以及这些进程占用的资源,主要的磁盘io等。 d) trace/kill session i. 方便的查看所有的连接用户相关信息:比如终端,程序,连接时间等 ii. 对某个用户进行跟踪,查看用户执行的sql语句,查看语句的执行计划, iii. 方便的查阅系统的lock对象,有没有什么等待别的事务释放锁的情况,并能够轻易查出等待什么用户的什么事件结束,那个用户执行的是什么sql。 iv. 查看回滚段的使用状态,什么用户,什么语句,使用的什么回滚段,多少读写量等 e) oracle parameter i. 可以方便的查看oracle系统的参数:是否默认值,参数作用的简要描述,是否可以用alter session/alter system来动态改变,对于那些可以动态改变的参数,可以双击鼠标来进行修改
f) nls_parameter: i. 方便的查看session,instance,database一级的nls参数值, ii. 可以动态修改session的nls参数值
g) extents i. 可以查看某个用户下的表和索引的详细的存储情况, ii. 发现那些占用大量空间的表和索引,可以考虑使用相应的对策,比如分区 iii. 发现那些即将达到max_extents的表和索引并可以及时纠正 iv. 发现那些索引和表处于同一个表空间的情况,并可以及时纠正。
h) tablespace i. 直观的查看每个表空间的利用率,总空间,已使用空间,剩余可是用空间以及默认存储参数,和表空间是否需要整理等信息 ii. 查看每个表空间的状态,组成的数据文件, 以及每个数据文件的详细信息 iii. 查看每个表空间里面存在的对象和这些对象的详细存储特性 i) tablespace map: i. 图形化的显示表空间里面各个表/索引所占用的空间,各个segment的大小,segment是否连续等信息,非常直观 ii. j) server statistics: i. 可以非常直观的看到系统总体运行情况,迅速定位系统瓶颈所在 ii. 可以查看系统范围内各类等待事件的状况,查看每个连接会话的状况, k) pinned code: i. 我们知道,频繁执行的大的存储过程最好pin起来,这样可以避免被oracle在内存不足的情况下换出内存,避免动态加载,也避免flush shared pool的时候被清出内存。 ii. 根据每个模块的大小,执行次数,决定是否要把某个存储过程pin起来。一个按钮就搞定了。 l) control files: 可以查看当前系统有哪几个控制文件,以及控制文件内部记录的详细信息。 (实际上就是v$controlfile, v$controlfile_record_section) m) redo log manager: i. 可以方便的查看log的组,当前日志,每个组里面的成员名字,大小,方便的增加、删除log组,切换当前日志,对日志归档进行具体的控制。 ii. 可以在这个界面里完成几乎所有的对redo log的操作。 n) repair chained rows: i. chained rows影响系统性能,处于系统性能的考虑,需要把chained rows修复成普通的表的行。使用repaie chained rows,就可以比较容易的做到这一点。选择需要分析的表,然后分析一下,看有没有chained rows,如果有,点击repair,toad就帮你把那些chained rows给修复了。 o) identify space deficits 如果系统出现1659,1653错误,就是一个不合格的dba。但是要即时预见这些错误,还是有一定的难度的。有了toad的这个小工具之后,一点某个表空间,就知道这个表空间里面的剩余自由空间是否允许任何表能够扩展到下一个extent。并能够在发现问题之后,直接改正问题。
p) estimate table/index size i. 数据库的物理规划中,表/索引的存储子句的定义是非常重要的,影响系统。但是没有什么工具的话,要为表定义合理的存储子句也不容易。 ii. 在toad里面,专门有工具帮助你合理定义表/索引的存储情况: 1. 自己可以定义将来表中需要存储的数据的数目 2. 多种估计方式: a) 根据对已有的数据的分析来定义表的大小(最精确,但是比较慢) b) 根据表定义数据类型来定义表的大小 c) 根据数据字典中以前分析过的数据来估计大小(需要近期分析过该表)
q) analyze all tables i. 基于cbo的sql需要cbo提供最优化的执行路径来提高程序的执行效率,但是假如对表进行大量的dml操作之后,不及时更新表的统计数据,这时候cbo就不能选择最为有效的执行路径,导致程序执行效率低。 ii. 手工分析表比较麻烦,一个一个做。 iii. 用toad的analyze alltables这个工具,可以一次分析整个模式下面的所有表,有丰富的控制选项,包括是采用估计还是完全,是否同时分析索引,估计的话,采用多大的百分比等。 r) rebuild table i. 当表中的数据被反复大量的dml之后,而且pctfree和pctused定义的不合理的情况下,表可能会变得非常破碎,占用大量的extent,索引也会相当破碎,导致效率相当低下。 ii. 传统的方式是通过exp/imp来解决这个问题,但是步骤实在比较麻烦,手工操作也有一定的危险性。 iii. 使用rebuild table工具,轻松搞定,而且可以手工修改一些通过exp/imp无法修改的参数,比如freelists ,freelists group, tablespace,initial等,还能够更改列的名字。 s) relocate index i. 我们知道,表和索引一般都需要分开存放到不同的表空间,这样比较便于管理,性能上也会有一定的提高,因为可以对表和索引同时存取。 ii. 但是实际上很多时候,由于这样那样的原因,常常忽略了索引单独存放这个基本概念,比如建立主键约束的时候没有加using index子句,后来disable/enable了主键约束/唯一性约束等,都会导致把索引直接存放到和表同一个表空间里面。 iii. 手工发现这些索引,再逐个移动非常麻烦,容易出错,在toad里面,就很容易根据用户/表空间来发现那些不恰当存放的索引,可以批量移动这些索引,并且允许重新定义索引的存储子句。 t) generate schema scripts: i. 可以用来生成整个用户下所有/部分对象的ddl语句。可以把结果保存为sql语句或者保存为toad的自定义格式。 ii. 可以用来复制表结构,(exp/imp有非常严重的缺陷,就是从一个大的数据库倒出的表结构,无法导入到一个小的数据库里面,因为里面包含了原来表的存储信息,即使选择rows=n,也要在导入数据库里面占用相当大的空间) u) compare schema: i. 在开发的时候,有时候同时在几个开发库上开发,但是最后两个库的结构不完全一样,很难比较 ii. 用toad的这个功能,可以对两个数据库的模式(用户)下面的所有对象(包括存储过程)进行比较,可以选择具体的比较内容。 iii. 可以通过直接打开两个到各自数据库的连接,或者根据toad generate schame scripts生成的文件进行对比。 iv. 可以直接生成同步两个数据库的sql脚本,给出汇总的区别简要和详细报告等。 --------------------------------------------------------------------------------