您的位置:首页 > 数据库 > Oracle

使用Oracle数据库进行企业开发(二)

2010-04-07 11:45 316 查看
工欲善其事,必先利其器。Oracle自身带了一些辅助的客户端工具,但是都不太好用,但真正的DBA都喜欢用命令行方式来操作数据库。我们不是DBA,我们是程序员,所以我们很有必要去找一些好用的工具以提高我们的工作效率。下面推荐两款工具:

1.PL/SQL Developer

这个工具从名字就可以看出,非常适合开发人员使用,这个工具对数据库本身的管理功能很弱,给DBA使用的功能也很少。这个工具的版本更新较快,目前常用的是5.0和7.0,6.0的好像不太稳定。

使用这个工具,可以实现建表、建视图等基本功能,还可以运行命令文件。在如下所指的菜单中可以找到相应的功能。

如果SQL为查询语句,则直接在主窗口的表格中可以显示查询内容,如下图:

图上有几个比较重要的按钮,第一个表示锁定,点击成功后,可以对表格中的数据进行编辑;紧接着的绿色向下,表示向下翻一页的数据,因为这个工具默认不会取出所有的数据,这样可以提高性能;再后面的两个三角加一个横线的按钮,表示可以把所有的数据全部取出放在表格中,这种方式使用的时候要注意,如果数据量很大,会造成客户端内存不足;“竖向按钮”可以把一个记录行竖向排版,更方便显示和编辑,如下图:

如果需要编辑数据,有两种办法:

使用update命令,如update table_name set column_name=’value’;

也可以使用表格自身的编辑功能,如:select * from table_name for update

上面虽然是个查询语句,但是因为最后带着for update子句,则这句话同时将数据库这个表锁定,并且在表格上面的“锁”标志可以使用,实现数据的编辑,如下图:

如果不喜欢for update子句,还有另外一个更简单的办法,在左侧菜单中找到相对应的表,然后点右键,出现一个“Edit Data”

这个功能会自动新建一个SQL窗口,并实现对数据的编辑。

以上几种方式作用相同,可根据实际情况来决定。

说过了如何编辑数据,下面说一下PL/SQLDeveloper一个比较好用的功能:单步调试。

在编写存储过程的时候,都会像一般写程序一样调试,但是如果不借用一些工具的话,对存储过程的调试是相当困难的,不过好在我们现在有了这个好用的工具。

上图是一个最简单的存储过程的例子,中间过程对一个变更进行多次赋值,最后返回,我们只来看一下中间变量值的变化过程:

首先在函数名Test上点右键,出现菜单,选择Test(测试):

然后会出现专门的调试窗口,如下图:

如果函数有参数,在最底下还会出现输入参数的地方。如何开始调试呢,看一下上图中的齿轮的地方,点击它,即可进入调试状态,然后后面的一系列按钮都变为可用状态,如下图:

其中绿色的三角表示运行,直到碰到断点才结束,后面几个按钮和其它语言一样,分别表示单步、把子函数作为一个语句、从子函数中跳过,最后的红色我没有试验过。

上面提到了断点,那么如何添加断点呢?这要回到存储过程的编辑状态,在下图红色位置单击一下,就会自动添加一个断点,也可以使用Ctrl+B功能键来处理。

有了以上断点后,程序运行到这里,系统会自动停下来等待处理,当然这种方式只适用于调试模式,对于正常F8运行模式无效。

当系统停在某个断点的时候,把鼠标放在某个变量上,就会自动显示这个变量的当前值,如上图,当然,也可以添加监控,实时看某个变量的变化过程,在下图的位置来添加监控。

上图红线的位置是新添加的一个监控变量,可以随着程序的运行而不断变化,并可以根据需要添加多个变量同时监控。

当然有时您可能会被告之当前函数无法取得调试信息,这时就要手动添加一下,添加的方式是在package的名字上点右键,菜单中选择“Add Debug Information”

说完了单步调试,再来看一下执行计划

在大型数据库中,都有执行计划的概念,也就是数据库会很公正的告诉你,它用什么样的方式(路径)来执行你提交的请求,你可以自己判断一下它的执行路线是否正确,如果不正确,你可以很明确的告诉它去修改运行路径。

在正常的情况下,F8按钮可以运行一个SQL语句,当你点击F5功能键的时候,就是启动执行计划的分析了,这比命令行方式要方便很多倍,而且效果非常直观,如下图:

上面一部分是SQL语句,下面就是相对应的执行计划。与实际运行不同,在这里查看执行计划,不会真正的运行SQL语句,所以会很快得到计划结果,而不论数据量到底有多大。

上面已经看到执行计划,那看这个计划有什么用呢?从计划里,我们可以清楚的看到是否使用了索引,如上图,TABLE ACCESS FULL(FTS)就是没有使用索引,如果数据量很大,而需要检查一条记录的时候,FTS将把所有数据进行扫描,速度是非常慢的,也就是利用这个执行计划,可以知道如何调优,比如建立索引等。还有一些更深入的用法,属于调优部分,不再多讲。

这个工具还有很多的小功能,非常实用的亮点,大家可以在使用过程中不断发现。

2.TOAD

与上一个工具不同,这个工具更侧重于DBA管理功能,要说写代码的支持,我觉得还是上面的工具更人性化。

作为开发人员,在TOAD里,我们可以做以下几个工作:

A.导入导出功能

TOAD的导入导出功能,实际上也是调用了Oracle自己的EXP/IMP功能,只是加上了UI界面,操作更加友好,可以实现更好的交互,因为使用命令行方式,交互很容易出错。在TOAD的菜单“DBA”中,可以找到导入和导出的功能,先看一下导出:

首先要指定导出方式,一般来说,常规的备份是按用户来备份,即第二个,其它各有个的功能,可以查询一下相关的文档。然后进行下一步:

选中需要备份的用户后,把它们放入右侧的框中,一次可以选择多个用户,然后再进行下一步,如果没什么特别需要,全按默认参数处理即可:

以此类推,一直点下一步,即可实现数据的导出。这种导出一般作为数据库的逻辑备份策略,与rman备份可以互为补充。

导入的方式与导出基本相似,操作方式也相似,就不再多讲了,总之,用TOAD的导入导出会比较方便。

B.表分析

从理论上讲,我觉得这个功能应该是DBA来操作的,但是程序员如果有权限,也可以自己操作,不过最好是在测试环境,对于正式环境,发现问题,需要申请DBA进行协助,因为有些不当的操作,会破坏原有的执行计划,甚至更严重的后果。

说到这里,要说一下为什么要进行表分析。如果要回答这个问题,首先要说一下Oracle是怎么进行SQL查询的:查询中有一个步骤就是对所需要的SQL进行分析,得出正确的执行计划。在上一个工具中,我们已经提到怎么样检查执行计划,现在要做的就是当发现执行计划不对的时候,我们做一下表分析,有可能再检查执行计划就对了(只是有可能),因为执行计划需要依靠表分析的信息。

这个功能位于Tools目录的Analyze All Objects,如下图:

点击后,出现新的窗口,对于程序员来说,我们只需要分析我们自己的表即可。

点击后,就把当前用户自己的所有表列出为供选择了,如下图:

然后选中左侧的复选框,点绿色的箭头,就开始了表分析,一般不做任务参数调整的话,会很快完成,并且在工具栏上有进度指示,大家可以自己看一下。
TOAD里的功能实在是太多了,大家有权限的话,自己试一下吧,记住不要在生产环境做测试噢。

未完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: