开发工具:Oracle SQL Developer与PL/SQL Developer

时间:2021-11-26 20:50:39

之前作为一个Oracle Employee,却总是在使用PL/SQL Developer (而且是破解版),这实在有些说不过去,但是如何找到一个合心趁手的能够在有条件的情况下比SQL*PLUS更方便的工具却实在不是一件简单的事情,以前期待tora 被Quest收购以后会有长足发展,可惜,并没有看到最终的结果。

之前曾经说过,PL/SQL Developer对于我最难以割舍的是completion insight功能,当你记不住表、性能视图或者存储过程、函数的全名,PL/SQL Developer将会在你输入了几个字母之后自动提示。TOAD发展了那么多年,却一直没有提供相类似的功能。

但是现在完全免费的替代产品出现了,这就是Oracle SQL Developer,Oracle官方出品的开发工具,当然这个工具并不是今年才推出的,现在最新版本已经是1.5.1.54.40,但是,最早的1.0版本并不是那么好用,而现在,我可以郑重地推荐它了。

请注意,这个工具是完全免费 的,可以通过这个链接 下载。

以一个普通使用者(甚至说是一个并不是着重在开发上的数据库管理员)的身份比较一下Oracle SQL Developer和PL/SQL Developer。

1. 格式化的结果输出。
这一点任何一个第三方工具都做得不错,是一个基本功能。

2. 自动提示。
也就是上面提到的Completion Insight功能,可以说,Oracle SQL Developer拥有的功能以及速度绝对不亚于PL/SQL Developer,甚至有更人性化的表现。比如当你键入select * from,空格之后,Oracle SQL Developer会立刻给出一个当前用户下的所有Table的列表,如果继续键入比如DBA三个字母,那么列表将转换为DBA打头的所有数据字典。而如 果你从一行的开头键入exec四个字母,那么当回车以后,Oracle SQL Developer会立刻给出一份所有可以执行的存储过程的列表。
最新版本中对于V$视图的提示有bug,相信很快就可以修改。

3. 代码美化功能。
所有使用过PL/SQL Developer的朋友们应该都知道在最近这几版中都有一个PL/SQL Beautifier的功能,可以将一大串SQL语句格式化更容易阅读的样式。同样Oracle SQL Developer也提供了这样的功能,称之为Format,快捷键是Ctrl+F7。

4. 显示SQL的执行计划。
在Oracle SQL Developer中快捷键是F6,同时也提供了显示Autotrace的结果,快捷键是F10(最新版本中似乎有点儿小bug,有时候需要按两次F10才能显示)

5. 会话监控。
在PL/SQL Developer中我们可以显示当前数据库中的所有会话,点击某一个会话,在下方会显示该会话正在执行的SQL,正在经历的等待事件以及其它一些可以自 定义的感兴趣的信息,Oracle SQL Developer同样提供了这个功能,可以在Tools -> Monitor Sessions菜单中找到它。

6. 快捷显示对象信息。
比如写了一条SQL语句,其中牵涉到一张表,我们可能会想立刻看到这张表有哪些字段,这张表上有哪些约束哪些索引,如果是分区表有哪些分区,在 PL/SQL Developer中我们会选中SQL语句中这张表的名字,然后右键 -> View,同样Oracle SQL Developer也提供了这个功能,同样可以鼠标右键选中表名 -> Popup Describe,另外还有快捷键Shift+F4。

7. 编写以及调试存储过程。
我并不有太多的机会去编写一个很长的存储过程,因此这点我不敢对PL/SQL Developer和Oracle SQL Developer做过多的比较,但是我知道好几个版本的PL/SQL Developer(包括最新版)在编译存储过程的某些特定语句的时候会导致ORA-600错误,而在SQL*Plus里面直接编译则完全没有问题,很多 客户出现了这个问题寻求我们的帮助,而我们的回答是,抱歉,这是PL/SQL Developer的问题我们不做技术支持,但是如果你要是改用了Oracle SQL Developer呢?恭喜你,虽然这是个免费的产品,但是仍然可以得到原厂商的技术支持。

好吧,具有了上述这些功能,至少对于我来说,Oracle SQL Developer已经完全具备了日常管理数据库的所有需要点,而且用起来一点儿也不觉得别扭,只是可能快捷键的改变需要适应一下。比如在PL/SQL Developer中执行一个SQL是F8,而Oracle SQL Developer则是F9,显示执行计划一个是F5而另外一个是F6,但是这都是小问题,不是吗?要知道人生总是在不断变化的,呵呵。

接下来是Oracle SQL Developer的闪光点,这些闪光点会让Oracle SQL Developer更加可爱。

1. 自动更新。
Help -> Check for updates,将会自动将Oracle SQL Developer更新到最新的版本,包括多种插件。

2. 插件。
这是多么令人兴奋的功能,要知道,在浏览器领域的Firefox,在Java开发工具领域的Eclipse,都是因为支持插件(或者称之为扩展)体系,并 且有大量丰富的插件才成为了焕然一新的工具,噢,我知道PL/SQL Developer也是支持Plugins的,但是这么多年了,Plugins始终只有那几个。而Oracle SQL Developer才推出多久,我们已经可以看到像Fourth Elephant的Insider 这样强大的扩展了,Insider一眼看上去简直就是一个Quest Spotlight for Oracle,虽然我对这个插件不是那么感兴趣,但是你得承认它确实很强大。

3. 跨平台。
PL/SQL Developer只能在Windows上使用,而Oracle SQL Developer目前已经支持了Windows,Mac OS X,Linux,这得益于Java的跨平台特性,好吧,我承认Java用于桌面应用确实速度有些让人不满意,但是对于Oracle SQL Developer来说,仅仅是启动速度有些慢而已,实际使用中仍然是行云流水的。而且得益于依靠Java,Oracle SQL Developer连接数据库,并不需要安装Oracle数据库客户端,这确实很方便。

4. Reports。
一个新安装的Oracle SQL Developer就已经包含了一个Reports标签页,内置了一部分可以用于数据库管理的脚本,并且可以允许使用者自定义自己需要日常使用的脚本,而 且支持复杂的父子视图效果,就是类似于Session Viewer的效果,点击父结果中的某一行,能够将更详细的关联信息显示在子结果中。每个DBA都有自己积累的一套SQL,你可以将它们全部放在 Oracle SQL Developer中。

5. 多连接。
在同一个Oracle SQL Developer界面里,可以连接多个数据库实例,虽然这不是什么复杂的功能,但是,PL/SQL Developer却做不到。

6. tkprof直观显示。
用Oracle SQL Developer直接打开一个trc文件,将会出现一个图形化的界面,并且包含了几乎所有的tkprof功能,比如可以按照某个指标进行排序。

7. 免费。
有什么东西比免费更吸引人呢?曾经在itpub 上 做过一个投票调查,目前使用PL/SQL Developer的Oracle DBA或者开发人员占据了超过60%,而其中绝大部分都在使用破解版。改为Oracle SQL Developer吧,你不用再去辛辛苦苦找最新的破解,你也可以自豪地说我现在用的开发工具是Free的,是正版的。

好吧,我承认Oracle SQL Developer是一个新产品,在很多小功能上确实还没有像PL/SQL Developer那样丰富。比如说也许我们需要一个command window,一个类似于SQL*Plus的界面,可以输入诸如archive log list或者show sga这样的命令,也可以仅仅输入edit 表名就可以弹出更改表结构的界面,输入edit 存储过程名就可以弹出编辑存储过程的界面;也许我们需要一个text import工具,可以方便地通过图形化界面将一个csv文件中的记录插入到一个表中;也许我们需要一个data gernerater工具可以方便地生成测试数据。

但是,这些都是小事儿,没有也就没有吧。另外,请相信Oracle的研发实力,短短的一年时间,Oracle SQL Developer已经开始引人瞩目了,而且Oracle一直在大力地研发这个工具在频繁地发布新版本,所以也许不久的将来这个工具将更好更强大。在这里 可以看到大量使用者提出的Feature Request,很多已经被接收,将会出现在下一个版本中。

这篇文章不是一个正规的Oracle SQL Developer的产品功能或者说使用介绍,这仅仅是因为我作为一个普通的Oracle数据库顾问发现了一个免费的好用的工具(只不过恰巧这个工具是 Oracle推出的而已)而感到欣喜之后的随意而为的文章,我很期待与已经在使用Oracle SQL Developer和看到这篇文章转而使用它的各位做更多的经验交流。

用一个使用者的感想做结,这个感想在Oracle SQL Developer的主页 上也可以找到。



转载地址:http://beckshanling.iteye.com/blog/458548