Toadq可以外挂一些别的品,比如PL/Formatter, RevealNet Knowledge Base , SQL Impact{,q些都能够和Toad紧密集成Q共同提供了(jin)一个完的集成开发环境。新版本q新增加?jin)DBA模块Q更加拓q了(jin)Toadq个产品的适用范围?
二、系l要求:(x) 客户端:(x) ü Windows 95 / 98 / NT/2000中英文均? ü 完整安装的SQL*Net 2.0或者Net8 ü 盘Q一般安装需?0M左右的空_(d)Ҏ(gu)所选择模块的不同和安装方式的不同,最也?M的磁盘空_(d)从网l服务器dQ? ü 内存QWindows 9x/Me:16M 内存QWindows NT/2000: Min 32M] ü Tuning模块需要额外的25MI间
服务器端Q? ü Oracle 7.3 或者更高,在Q何硬件^C? ü 需要一个DBA用户帐号
三.安装Q? 1Q?三种安装方式的选择Q? a) TOAD and Personal Configuration Files to PC 默认安装选择Q完成一个完整的Client端的安装Q把所有需要的文g拯到本地Toad目录? l大多数用户应该选择使用q个安装方式? b) Personal Config Files to PC, read TOAD from Network Server 从网l服务器dToadE序Q在本地计算机安装一些自定义的文Ӟq且创徏到服务器文g的快h式,一般不推荐使用q个方式Q而且要求|络服务器已l配|? c) TOAD to Network Server 把Toad安装到网l服务器上,以便q样别的用户能够q行Personal Config Files to PC, read TOAD from Network Serverq种方式的安装? 2Q?Ҏ(gu)需要用到的特性,需要运行一些脚?都在Toad\temps目录? ü 如果需要用Toad来查看执行计划,必须q行脚本PrepToad.sql或者notoad.sql n 如果希望专门建立一个Toad 用户来存放Toad需要用的对象的话Q就q行preptoad.sql? n 如果希望在当前连接用h式下建立toad需要用的对象的话Q就q行notoad.sql? n 注意Q如果是选择?jin)专门徏立toadq个用户的话Q需要先修改一下脚本,指定用户的默认表I间和(f)时表I间? ü 需要用Oracle8i 的Profile analyzerQ必运行ToadProfiler.sql ü 需要加强Toad的安全性,必须q行ToadSecurity.sql
四、Toad使用快速入? 1Q?Schema BrowserQ? Schema browser是Toad的极为有特色的模块。在schema browser的帮助下Q可以方便的览数据库内部的各类数据库对象,比如表,索引Q序列,存储q程{,而且可以方便的倒出DDL语句和进行各U修改,重徏工作。定位到某一cd象上Q这列对象允许的操作都会(x)自动列出来? 特色Q? l 支持Oracle数据库里面所有对象的新徏、查看、修改,集成?jin)几乎对所有数据库对象的管理所需要的功能? l 按照 模式->对象cd ->对象->对象可操作属?-> 对象本n的详l信息和对象相关的信?来组l,非常有条理,Ҏ(gu)定位对象Q也能够看到所有你需要的对象的相关信息? l 对于表:(x) i. 完备的徏表向|不用输入冗长的语法,更加全面地替你考虑? ii. 可以修改表的各种逻辑和物理属性,修改列的属性,增加列,删除?在Oracle8i里面)Q修改表的物理存储属性,TruncateQDrop{? iii. 可以生成的完整的DDl语句Q包括存储信息,权限信息Q约束,索引和触发器{,而这些手工很隑ց到? iv. 可以方便的对表进行分析,查看表地所有信息,可以有条件的倒出表里面的数据Qƈ且保存ؓ(f)sql语句? v. 可以方便的对表进行重l,可以完成exp/imp作不到的事情Q而且更少Ch工参与,更加安全?
l 对于视图Q存储过E:(x) i. 可以保存建立视图、存储过E的语句为文本, ii. 重新~译失效的视图,存储q程Q修改视囄定义语句{。方便的查看存储q程的代码,怺依赖关系Q权限信息等保存为文本等? l 回滚D, i. z明?jin)的onlineQoffline状态,方便地online/offline操作 ii. 详细的回滚段物理信息和当前状态? iii. 可以方便的修改物理存储属?
l 表空_(d)(x) i. Tablespace MapQ直观的昄数据物理的在表空间上的分? ii. 直观的查看各个表I间的利用率、剩余空间、破情늭信息 iii. 可以q行各种alter操作Qonline, offline, 增加数据文gQ改变数据文件大,改变物理存储属性等 l 对其他数据库对象也有完备的操作支持?
2Q?SQL Editor: a) ȀzSQL Editor的三U方式:(x) i. q接到数据库之后QToad自动打开SQL Editorq个H口? ii. 点击dh上最左边的那个按? iii. 从菜单栏QDatabase -> SQL Editor b) 特点Q? l 允许同时打开多个~辑H口Q同时编辑多个SQL语句 l 支持同时q接到多个数据库Q同时对多个数据库进行操? l 允许~辑SQLQPLSQLQJAVAQHTML和文? l 使用书签功能Q可以在大量SQL语句里,快速定位某个语句所在位|? l SQL Editor本nh强大的编辑功能,非常方便~辑SQL语句? l 强大的快捷键支持和工h快速按钮的支持Q更加高效编?很多快捷键可以自己定义,在View ->options ->SQL Editor里面) l 能够Ҏ(gu)前面的条Ӟ推测需要输入的代码Q可以做到某U程度的代码填充 l 把鼠标定位到?视图/存储q程名称之上Q按F4Q可以打开对象描述H口Q方便的查看表和视图的定义,存储q程的源代码Q? l 非常Ҏ(gu)对SQL语句的分析其执行计划Q单dh上的 按钮可以看到Explain Plan的结? l 支持部分SQL*Plus命o(h)Q可以方便的执行大量的ؓ(f)SQL*Plus~写的数据库脚本 l 可以通过SQLab xpert来对当前SQL语句q行全面的分析,l出各种合理的调优意见,只需要单dh上的Tuning按钮Q? l 可以方便的保存,打开和运行SQL脚本 l 支持Ҏ(gu)询结果进行修改, l 可以把查询结果以多种格式保存hQ可以保存ؓ(f)HTMLQ纯文本QXLS{多U格? l 很容易的得到SQL函数的列表和用法描述QShow SQL help Window 按钮Q? l 可以查看SQL语句的执行情况:(x)通过下方的AutoTraceH口 Q看到SQL语句的实际执行结果和执行效率? l 支持历史SQL(F8) Q可以方便的查询以前执行q的SQLQ不用反复重新输入? l 可以执行匿名块,存储q程Q从下方的窗口看到DBMS_OUTPUT的结果,如:(x)
3Q?Stored Procedure Editor a) 打开存储q程~写器的几个途径Q? l 单击总菜单栏上的W三个按钮:(x) l 点击Database - > Procedure Editor Q? l 可以通过Schema browser来调? b) 一些特点和优点Q? 1Q?强大的自定义讄Q从保留字的昄方式Q到自动替换Q到各种快捷键的定义{等Q用得越熟越手? 2Q? 3Q?自动用不同颜色显CSQL和PL/SQL关键字,语法清晰明了(jin)Q可Ҏ(gu)自己的习(fn)惯来具体定制各类关键字的具体昄方式。可以自定义存储q程得模板,在新建存储过E的时候,自动生成E序的框架可以方便的调用Schema BrowserQ把鼠标定位于某个对象上QF4QSchema Browser打开该对象的详细描述Q帮助顺利快速开发程序。支持代码自动更正,如输入ndfQ自动替换成NO_DATA_FOUNDQ输入the自动替换成theQ类似的自动替换q可以自׃改和d? 7Q?方便的左边行hC,单击左边行号可以实现调试断点的增加/删除 8Q?对各U快捷键的支持,不但包括常见的编辑操作,q可以有自己定义的PLSQL块的支持Q自己定义快h式)(j)。如可以定义CTRL+SHIFT+D:弹出所有PLSQL Block的类型,可以自己选择? 9Q?可以在一个集成开发环境里面,一边编码,一边调试,不用多处切换 10Q?方便的同时打开多个存储q程Q通过面快速切? 11Q?快速编译存储过E,快速定位错误所在,自己选择是否同时~译依赖的存储过E? 12Q?内置对PL/FormatterQ可以用PL/Formatter对存储过E进行格式化Qƈ且可以提供存储过E的概要分析和修改徏? PL/Formatter可以对现有的存储q程q行高速的格式化,使所有的存储q程都符合同L(fng)~写标准Q这h有利于提高程序的可读性,避免不同人写的模块的风格上的很差异? PL/Formatter q有助于提高E序的模块化Q增强程序的l构清晰度,增强SQL的共用性? PL/Formatter q可以帮助完成PL/SQL和Oracle版本之间的管理?
13Q?内置RevealNet Knowledge BaseQ单击鼠标右键就可以打开Q快速得到技术上的支持,解决技术难? nPL/SQL: n包含整个开发过E中可能遇到问题的答? nCode Library:大量的严谨的PL/SQL代码例子和现成过E,完全源代码提? n各种错误处理模块可供参考,各类字符日期函数 n包含1400多个主题 nAdminQ? n解答DBA日常工作?0%的常见问题,覆盖2400多个主题 n从网l到性能优化Q从备䆾恢复到Error message,一应俱? 例子Q遇到失效的存储q程怎么办? 4. 如何对存储过E进行DebugQ? u 需要Toad单独的Debug Option(Standard Version 没有q个选项) u 要用Toad对存储过E进行debugQ必d装Oracle的系l包Qdbms_debugQ而且必须安装Oracle Probe API v2.0 或者更高的版本? u 集成在Stored Precedure Editor里面Q可以一边编写一边调试,大大提高开发效? u 打开Procedure Editor后,Debug菜单Ȁz,可以开始进行Debug工作? u 允许对存储过E进行逐行调试、断点调?也支持对触发器进行调试? u 可以有断Ҏ(gu)持,支持Watch变量Q允许运行时改变变量的? u 允许对多层调用的Debug支持 调试步骤具体举例Q? 1Q?点击菜单栏的W三个按钮:(x) Q打开Procedure Editor 2Q?点击Procedure Editor的菜单栏?按钮Q调出需要调试的存储q程 3Q?单击工具栏上的按?Q输入需要传入的参数Q如果不需要传入参敎ͼ可以直接单击工具栏上的按钮:(x) Q直接开始调试,如下图输入传入参敎ͼ(x)
5Q?SQL ModelerQ? SQL Modeler可以帮助开发h员很Ҏ(gu)的写出各U复杂的SQL语句Q只需通过单的拖动鼠标Q就能够写出复杂的SQL语句来? 打开SQL Modeler的几个途径Q? i. 菜单?Database -> SQL Modeler Q打开H口 ii. 单击工具栏第四个按钮 Q打开SQL ModelerH口 H口׃个主要部分组成:(x) n 表选择区域Q最双的那个部分,用来选择From子句中用到的表。拖动到左边的区域或者双d选择?jin)该表? n 表模型区域:(x)用来囑Ş化的昄选择的表和表之间的关联关pR? n 生成SQL区域Q这里显C用囑Ş化方式创建的查询对应的SQL语句Q?
DBA斚w的功能:(x) Toad在DBA日常理斚w的能力是非常强大的,可以帮助DBA安全快速地完成许多日常工作Q还有ToadҎ(gu)的一些小工具能完成一些普通方法很隑ց到的功能。下面大概讲qC(jin)各个常用模块的主要功能:(x) a) Database Monitor 提供直观的Oracle数据库运行状况,包括下面q些详细信息Q? 可以看到逻辑IOQ物理IOQ各个状态的session数目QSGA的利用率Q共享池的用状况,各类事g的等待状况,以及(qing)各类事g随着旉的变化情? b) Instance Monitor i. 可以用来(g)查本地tnsnames.ora文g里面定义的所有节炏VListener和数据库的运行状态和版本{相关信息? ii. 可以q程启动、关闭数据库Q如果设|了(jin)password验证方式Q? c) Unix MonitorQ? i. 可以监控Unix机器的运行状冉|如详l的机器启动旉QCPU利用率,主要的进E以?qing)这些进E占用的资源Q主要的盘I(y)O{? d) Trace/Kill session i. 方便的查看所有的q接用户相关信息Q比如终端,E序Q连接时间等 ii. Ҏ(gu)个用戯行跟t,查看用户执行的SQL语句Q查看语句的执行计划Q? iii. 方便的查阅系l的Lock对象Q有没有什么等待别的事务释N的情况,q能够轻易查出等待什么用L(fng)什么事件结束,那个用户执行的是什么SQL? iv. 查看回滚D늚使用状态,什么用P什么语句,使用的什么回滚段Q多读写量{? e) Oracle Parameter i. 可以方便的查看Oraclepȝ的参敎ͼ(x)是否默认|参数作用的简要描qͼ是否可以用alter session/alter system来动态改变,对于那些可以动态改变的参数Q可以双击鼠标来q行修改
f) NLS_PARAMETER: i. 方便的查看sessionQinstanceQdatabase一U的NLS参数| ii. 可以动态修改session的NLS参数?
g) Extents i. 可以查看某个用户下的表和索引的详l的存储情况Q? ii. 发现那些占用大量I间的表和烦(ch)引,可以考虑使用相应的对{,比如分区 iii. 发现那些卛_辑ֈmax_extents的表和烦(ch)引ƈ可以?qing)时U正 iv. 发现那些索引和表处于同一个表I间的情况,q可以及(qing)时纠正?
h) Tablespace i. 直观的查看每个表I间的利用率Qȝ_(d)已用空_(d)剩余可是用空间以?qing)默认存储参敎ͼ和表I间是否需要整理等信息 ii. 查看每个表空间的状态,l成的数据文Ӟ 以及(qing)每个数据文g的详l信? iii. 查看每个表空间里面存在的对象和这些对象的详细存储Ҏ(gu)? i) Tablespace MapQ? i. 囑Ş化的昄表空间里面各个表/索引所占用的空_(d)各个segment的大,segment是否q箋{信息,非常直观 ii. j) Server Statistics: i. 可以非常直观的看到系lMq行情况Q迅速定位系l瓶颈所? ii. 可以查看pȝ范围内各cȝ待事件的状况Q查看每个连接会(x)话的状况Q? k) Pinned CodeQ? i. 我们知道Q频J执行的大的存储q程最好PinhQ这样可以避免被Oracle在内存不的情况下换出内存,避免动态加载,也避免flush shared pool的时候被清出内存? ii. Ҏ(gu)每个模块的大,执行ơ数Q决定是否要把某个存储过EPINh。一个按钮就搞定?jin)? l) Control Files: 可以查看当前pȝ有哪几个控制文gQ以?qing)控制文件内部记录的详细信息? Q实际上是V$CONTROLFILE, V$CONTROLFILE_RECORD_SECTIONQ? m) Redo Log Manager: i. 可以方便的查看LOG的组Q当前日志,每个l里面的成员名字Q大,方便的增加、删除logl,切换当前日志Q对日志归档q行具体的控制? ii. 可以在这个界面里完成几乎所有的对redo log的操作? n) Repair chained rows: i. Chained rows影响pȝ性能Q处于系l性能的考虑Q需要把chained rows修复成普通的表的行。用repaie chained rows,可以比较容易的做到q一炏V选择需要分析的表,然后分析一下,看有没有chained rowsQ如果有Q点击repairQToad帮你把那些chained rowsl修复了(jin)? o) Identify Space Deficits 如果pȝ出现1659,1653错误Q就是一个不合格的DBA。但是要x预见q些错误Q还是有一定的隑ֺ的。有?jin)Toad的这个小工具之后Q一Ҏ(gu)个表I间Q就知道q个表空间里面的剩余自由I间是否允许M表能够扩展到下一个extent。ƈ能够在发现问题之后,直接Ҏ(gu)问题?
p) Estimate Table/Index Size i. 数据库的物理规划中,?索引的存储子句的定义是非帔R要的Q媄(jing)响系l。但是没有什么工L(fng)话,要ؓ(f)表定义合理的存储子句也不Ҏ(gu)? ii. 在Toad里面Q专门有工具帮助你合理定义表/索引的存储情况:(x) 1. 自己可以定义来表中需要存储的数据的数? 2. 多种估计方式Q? a) Ҏ(gu)对已有的数据的分析来定义表的大小Q最_Q但是比较慢Q? b) Ҏ(gu)表定义数据类型来定义表的大小 c) Ҏ(gu)数据字典中以前分析过的数据来估计大小Q需要近期分析过该表Q?
q) Analyze All Tables i. ZCBO的SQL需要CBO提供最优化的执行\径来提高E序的执行效率,但是假如对表q行大量的DML操作之后Q不?qing)时更新表的l计数据Q这时候C(j)BO׃能选择最为有效的执行路径Q导致程序执行效率低? ii. 手工分析表比较麻?ch),一个一个做? iii. 用Toad的Analyze Alltablesq个工具Q可以一ơ分析整个模式下面的所有表Q有丰富的控刉项Q包括是采用估计q是完全Q是否同时分析烦(ch)引,估计的话Q采用多大的癑ֈ比等? r) Rebuild Table i. 当表中的数据被反复大量的DML之后Q而且PCTFREE和PCTUSED定义的不合理的情况下Q表可能?x)变得非常破,占用大量的extentQ烦(ch)引也?x)相当破,D效率相当低下? ii. 传统的方式是通过exp/imp来解册个问题,但是步骤实在比较ȝ(ch)Q手工操作也有一定的危险性? iii. 使用Rebuild Table工具Q轻松搞定,而且可以手工修改一些通过EXP/IMP无法修改的参敎ͼ比如freelists ,freelists group, tablespaceQinitial{,q能够更改列的名字? s) Relocate Index i. 我们知道Q表和烦(ch)引一般都需要分开存放C同的表空_(d)q样比较便于理Q性能上也?x)有一定的提高Q因为可以对表和索引同时存取? ii. 但是实际上很多时候,׃q样那样的原因,常常忽略?jin)?ch)引单独存放这个基本概念,比如建立主键U束的时候没有加USING INDEX子句Q后来disable/enable?jin)主键约?唯一性约束等Q都?x)导致把索引直接存放到和表同一个表I间里面? iii. 手工发现q些索引Q再逐个Ud非常ȝ(ch)Q容易出错,在Toad里面Q就很容易根据用?表空间来发现那些不恰当存攄索引Q可以批量移动这些烦(ch)引,q且允许重新定义索引的存储子句? t) Generate Schema ScriptsQ? i. 可以用来生成整个用户下所?部分对象的DDL语句。可以把l果保存为sql语句或者保存ؓ(f)TOAD的自定义格式? ii. 可以用来复制表结构,QEXP/IMP有非怸重的~陷Q就是从一个大的数据库倒出的表l构Q无法导入到一个小的数据库里面Q因为里面包含了(jin)原来表的存储信息Q即佉K择rows=NQ也要在导入数据库里面占用相当大的空_(d)(j) u) Compare SchemaQ? i. 在开发的时候,有时候同时在几个开发库上开发,但是最后两个库的结构不完全一P很难比较 ii. 用TOAD的这个功能,可以对两个数据库的模式(用户Q下面的所有对象(包括存储q程Q进行比较,可以选择具体的比较内宏V? iii. 可以通过直接打开两个到各自数据库的连接,或者根据Toad generate schame scripts生成的文件进行对比? iv. 可以直接生成同步两个数据库的sql脚本Q给出汇ȝ区别要和详细报告{?/FONT>