Oracle SQL Developer 探究

作者:Przemyslaw Piotrowski

这是 Oracle 一个免费的旗舰产品,用于开发、管理和调优数据库,该产品自 2006 年推出以来已有长足进步。

2012 年 5 月发布

我从 2005 年开始使用 Oracle SQL Developer,当时它还只是以代号 Project Raptor 推出的第一个试用版本。当 2006 年到达 1.0 里程碑时,Project Raptor 更名为 Oracle SQL Developer,从此开始定期改进。目前,Oracle SQL Developer 不仅是免费的,而且还为 Oracle 数据库客户提供支持;在我看来,与同类产品相比,它支持的 Oracle 数据库特性最多,例如原生支持 Oracle Application Express、基于版本的重定义、RMAN、作业调度程序和 Data Pump。

截至本文撰写时的当前版本为 3.1,它具有更多增强功能。下面我将介绍我使用该工具的日常经验以及如何充分发挥该工具的价值。

Worksheet 很好用

Oracle SQL Developer 最用但却经常被忽视的特性就是其代码编辑器(称为 Worksheet)了。作为一个铁杆的命令行用户,我倾向于远离 GUI,但正是由于此特性,我才提高了生产效率,尤其是在开发 PL/SQL 代码和排除性能问题时。我的做法是在 Worksheet 中输入很多查询,然后以非线性方式在这些查询及其结果之间切换,事实证明这确实是一种高效使用该工具的方式。这种回退到先前结果的功能在其他工具中很少见,而它恰恰让命令行变得如此高效。

 fig1

图 1 Worksheet 特性,包括结果、解释计划和脚本输出等多个选项卡。

3.1 版还改进了自动填充特性,它不仅能填充模式和对象名称,还能生成可随着您在查询中添加或删除列而自动更新的 GROUP BY 子句。自动填充功能可以使用 CTRL+空格手动调用,也可以在设定好的延时后自动调用。

为进一步辅助代码编辑,从 3.1 起,内嵌的格式器支持 7 种不同类别的 43 种格式化选项,允许精确控制查询和 PL/SQL 块的外观。还值得一提的是,可以将格式器设置轻松移植到其他计算机,而且格式器支持 IBM DB2、Microsoft Access、SQL Server 和 Sybase 语法。

 fig2

图 2 针对 Oracle SQL 方言的 SQL 格式器设置

在我每天要处理成百上千的数据库,因此标准的 SQL 脚本集并不总是有用 -- 相反,我经常需要重访先前输入的语句。SQL 历史记录特性(使用 F8 键打开)能够让您以即输即查的方式搜索所有先前运行过的命令并按执行时间顺序返回搜索结果。

强大的网格

在 Oracle SQL Developer 中,用数据网格来显示查询结果和对象属性。数据网格在 3.1 中的普遍使用从多方面增强了可用性 — 从像筛选和排序这样的基本操作到复杂的搜索和高亮显示操作。

网格上的上下文菜单会提供一些很方便的选项,便于快速创建新代码片段或报表。其中几种常用选项有持久高亮显示、动态筛选器或将结果直接发布到 Oracle Express。同时,可以将所有结果导出为多种格式,包括从纯文本和分隔符格式,到 HTML、INSERT 或 SQL*Loader 格式,再到 PDF 和 Microsoft Excel。可以通过 Save Grid as Report 操作预览任何网格的源查询。

 fig3

图 3 数据字典网格视图,具有持久高亮显示、动态筛选器和自定义排序功能。

布局

Oracle SQL Developer 成名于其所承袭的原始平台:Oracle JDeveloper。由于其深度可扩展性,基于 Java 的 JDeveloper 充当了现在 Oracle 融合中间件系列中许多工具(包括 Oracle SOA Suite、Oracle BPEL Process Manager、和 Oracle Data Integrator)的基本平台。这对于 Oracle SQL Developer 的意义就在于所有可用性特性都是派生的。

例如,两个虽小但很重要的特性,当它们组合起来时就成了我在 Oracle SQL Developer 内所有窗口排列的基石。这就是窗口分割和固定。它们可以将屏幕工作区分割为多个部分,从而让我可以在结果集、对象定义、报表、视图和任何其他窗口类型之间舒适地切换和工作。

固定有时称为“冻结”,可以使窗口保持在屏幕上,从而不会被其他打开操作重用。可以通过 Code Editor > Autopin PL/SQL editors, Database > Object Viewer > Automatically Freeze Object Viewer Windows Database > Worksheet > Show query results in new tabs 下的首选项精确设置自动固定的行为。未设置自动模式时,可以手动固定和分割每个窗口,然后将其并列排列。对于脚本和查询,每个结果可以单独固定,从而使下一查询的结果在新选项卡中打开并自动编号。

 fig4

图 4 带弹出式切换器的固定窗口排列。

可以通过将选项卡拖到屏幕边缘来分割窗口,且桌面本身对于可以并排排列的窗口数量并无限制。这可能是一种非常有效的处理多个数据库对象的方式,无需选择究竟将哪个对象留在屏幕上。双击选项卡可以将其全屏化,而将选项卡拖到窗口区域中心可以将其附加到下面的选项卡组。

PL - SQL - 模型

Project Raptor 被称为“Developer”是有其充分理由的。首先,它有一个非常直观的代码编辑器,而且该编辑器与 PL/SQL 引擎紧密集成,尤其是与 Oracle Database 11g 监测器和调试器集成地非紧密。基本上,使用 SQL Developer 编写代码就像使用某种编程语言的 IDE 一样轻松自如。

fig5

图 5 设置了断点的调试窗口和代码编辑器。

现在,真正的开发都要经过大量的单元测试。Oracle SQL Developer 通过将用户界面与数据库持久单元测试信息库集成,全面满足了这一要求。作为编程工作流的另一重要环节,代码版本控制也是该工具的一个有机组成部分,它在 Subversion 之外提供了与本地文件系统的集成。这意味着您使用 SQL Developer 编辑的每一个文件都会自动生成一个版本,这让您可以快速掌握后续编辑或稍远的编辑之间的差异,并可根据需要将其合并。

 fig6

图 6 显示文件历史记录和图形化差异的版本控制视图。

我尝试至少十几种数据建模工具后,有一个特别引起了我较长时间的注意,后来成为了我应对所有 3NF 需求的首选软件。SQL Developer Data Modeler 最初定价约为 Standard Edition One 许可的三分之一,以独立程序的形式提供。但不久之后,Data Modeler 就变成免费了,并从 3.0 版开始也整合到了 Oracle SQL Developer 之中。尽管 Modeler 的特性不在本文讨论范围之内,但我还是要说一下我个人喜爱的特性有完美的正向和反向工程功能、用于保持模型一致的命名和设计规则 (Tools > Preferences > Data Modeler > Naming Standards Tools > Data Modeler > Design Rules) 以及在 ERD 工具中唯一令我满意的自动布局功能。

 fig7

图 7 带自动布局的 Data Modeler 反向工程得到的关系模型。

虽然 Data Modeler 仍以一个独立工具的形式提供,但捆绑包的大小也不到 200MB,因此也可以通过这个方便的软件包获得整个套件。

Developer 与 DBA

从 3.0 版开始,Oracle SQL Developer 即作为一种通用的多功能数据库工具而享有盛名。传统报表功能得到大幅增强,并且自 3.1 起,提供了一个打包的内置库,可以使用定制报表轻松扩展。

fig8

图 8以图形报表形式显示最近一小时等候情况的报表视图。

大多数 DBA 都视为无价之宝的一个特性是与 SQL*Plus 的深度兼容,这在数据库工具中是一个独特的特性。SQL Developer 的 ScriptRunner 组件原生支持 SHOW、SET 甚至 PAUSE 和 ACCEPT。该组件用于在 Worksheet 上运行所有数据库脚本。3.1 版对该支持进行了许多增强:几乎所有命令都是用 Java 实现的,使 Oracle SQL Developer 与 SQL*Plus 基本实现了全面兼容。因此,对于想从永恒的命令行工具转出来的人来说已经没有障碍了。尽管 Oracle SQL Developer 不大可能最终完全替代其命令行工具,但我个人确实越来越少使用 SQL*Plus 了。

还为喜欢使用 GUI 的管理员提供多项增强功能,其核心是一个名为 DBA 的全新窗口视图。通过该视图可以很方便地查看 Resource Manager 分配计划、RMAN 备份或数据库安全属性等。

在 3.0 版之前,您需要安装更改管理包才能利用数据库差异功能 (Tools > Database Diff)。新版本全面改造了这一功能,使之不再需要额外的许可。

对于从 MySQL、Microsoft SQL Server、Sybase Adaptive Server、Microsoft Access、Teradata 或 IBM DB2 迁移过来的人员来说,Oracle SQL Developer 提供了一个迁移助手来帮助精确、无损地迁移到 Oracle 平台。

业务技巧

由于 Oracle SQL Developer 提供了这么多特性,因此使用几年后必定受益匪浅。比较节省时间的特性位于一个不太明显的地方:快捷方式配置屏幕 (Tools > Preferences > Shortcut Keys)。默认情况下其中许多没有设置快捷方式,而另一些则没有显示在菜单中。

 fig9

图 9 快捷键首选项,带增量搜索和冲突检测字段。

根据本文所述将窗口分割到极限后,在它们之间切换的便捷方式是使用 CTRL+TAB 组合,这会显示当前打开的窗口,并在各窗口之间来回切换(类似于操作系统的任务切换器)。如果您习惯了使用 Web 浏览器中的后退前进 按钮,则没有理由在 Oracle SQL Developer 下丢掉这个习惯,因为 Oracle SQL Developer 分别使用 ALT+向左箭头和 ALT+向右箭头在连续打开的视图之间切换。

尽管我喜欢使用 Schema Browser 选项卡,但我发现另一个特性用起来绝对更快。通过 View > Find DB Object 窗口,可以即时查找任何对象并移动到其定义,而无需遍历对象树和模式下拉列表。Compare Plans 是一个很有用的特性,但在界面里不太好找到 -- 要想使用它,只需打开并固定两个解释计划,然后右键单击计划选项卡并选择 Compare with …

Code Editor 窗口是最常用的窗口。我对在这个特性上的增强非常欢迎。这些增强包括使用 CTRL+E 进行即时预键入搜索(反之则为 CTRL+SHIFT+E)、通过快捷方式 CTRL+/(斜杠)注释和取消注释,以及妙不可言的多剪贴板,它可以记住从 Worksheet 复制的所有内容(并可使用 CTRL+SHIFT+V 粘贴回去)。

fig10

图 10 预键入搜索 (Incremental Find Forward) 和多剪贴板粘贴。

下一步要做什么呢?

Oracle SQL Developer 的用户社区正在蓬勃发展。在 SQL Developer Exchange 上,您可以评价和讨论规划并提出建议、分享代码以及了解还可以使用该工具执行哪些操作。其讨论论坛一直是最活跃的论坛之一,即使是最难得问题也可以在这里快速获得解答。Oracle SQL Developer 多年来一直位居 Oracle 技术下载排行榜前列。Oracle 学习上还提供了大量演示和视频。

如果您感兴趣,还不赶紧试用一下 Oracle SQL Developer。您可以放心,在学习它的特性上所花的时间从长远来看都会给您带来丰厚回报。它最终还可能会成为您的首选工具。强烈推荐。


Przemyslaw Piotrowski 是一名信息技术专家,专门研究新兴技术和动态、灵活的开发环境。他拥有很强的 IT 专业技术背景(包括管理、开发和设计),并发现了许多软件互操作方法。