Oracle数据库(PL / SQL)重构工具

7
我想知道是否有适用于Oracle数据库和特别针对PL/SQL的良好重构工具。我正在处理一个项目,其中一半开发人员使用c#,而另一半则在数据库上工作,其中包含大量复杂的模式和大量的pl/sql代码库。我们还使用sql server,但数据库团队专门使用Oracle。
这个代码库正在积极地进行重构,但我很惊讶发现Oracle的重构工具似乎很差(或者至少与Eclipse和Resharper相比如此)。开发人员使用Toad,它只有基本的重构支持(可能更注重db管理员而不是开发)。我之前也用过Toad,但一直以为对于pl/sql,有更多的功能可以用来处理代码,但从未深入研究过。据我所见,它提供的唯一重构是提取方法(过程)和变量重命名。我读了一篇文章,比较了sql developer和pl/sql developer,并且它们似乎没有更好的重构支持。我快速浏览了一下eclipse数据工具项目,但没有看到他们自从我上次使用它以来添加了重构支持(几年前)。
对于Sql Server,存在Sql Refactor,当表结构发生变化时,会传播到存储过程中。对我来说,这比手动更新所有存储过程要干净得多,也不容易出错。我曾在以前的项目中使用过这些工具的旧版本,它们似乎还可以,但有点慢,但那是几年前的事情,仍然可以使用。
如果存在适用于Oracle的良好重构工具,那么类似的东西对我们的开发团队已经是很大的帮助了,所以如果它们确实存在,我会感激一些指向Oracle好的重构工具的提示。谢谢, Crocked
1个回答

10

TOAD中的“D”代表开发人员而不是数据库管理员(DBA)。实际上,许多DBA都对TOAD和其他类似工具表示反感。

很遗憾,据我所知,没有针对PL/SQL重构的工具。问题的根源在于重构作为一个概念来自面向对象编程范例,而PL/SQL并非面向对象。它不支持继承或多态性(*)。这意味着许多经典重构实践(如Fowler所定义的)所依赖的技术-抽象、接口等,在PL/SQL中都没有类比物。

这的推论是,习惯将重构作为其概念工具箱一部分的人们往往避免使用PL/SQL进行编程。我曾在TDD列表上与人激烈争辩过这个问题。结果是,即使是需要并欣赏PL/SQL优点的开发人员,也更愿意使用有更好工具支持的语言,而不是遵循敏捷宣言第一条款

重构最重要的工具是自动化单元测试。虽然TOAD(我认为)没有集成单元测试,但Oracle SQL Developer的下一个版本将会有。还有独立的单元测试工具。我最近在另外一个SO线程中提到了其中的一些。

在重构PL/SQL以匹配数据库变化方面,与表交互的大部分操作应该由生成的表API来完成,而不是嵌入在事务性PL/SQL中。在这个幸福的领域中,我们不需要重构工具,只需要重新生成相关的API。我上面提到的帖子还提到了一个名为QCGU的工具,可以实现这一点。当然,当我们有一个没有这种方式组织的PL/SQL代码库时,生活会更加艰难。你不会惊讶地发现,在PL/SQL中实现Feathers的WELC并没有太多的工具支持。

(*) 是的,我知道Oracle有类型(type),但它们是(a) SQL而不是PL/SQL,(b)有多少人实际上在使用它们构建API?


1
关于大多数PL/SQL事物,Steven Feuerstein是首选人选。在这种情况下,他的演讲《打破你对SQL的依赖》是开始的地方。尽量在会议上听取(他是一个很棒的演讲者)。不幸的是,互联网上似乎没有它的副本,但他的最佳实践材料经常提到它:http://www.toadworld.com/Education/StevenFeuersteinsPLSQLExperience/Trainingandpresentations/tabid/155/Default.aspx...此外,Toon Koppleaars的博客在构建PL/SQL API方面非常出色:thehelsinkideclaration.blogspot.com - APC
3
Tom Kyte和Steven Feuerstein几乎就表API的好处进行了激烈的争论(但也许不至于刀光剑影)。详见链接:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:672724700346558185 - Tony Andrews
这个答案是不正确的。有一些用于重构PL/SQL的工具。它们好用吗?那是一个观点,我的观点是“不好用”。在谷歌搜索“oracle数据库重构”会很容易地找到一些这样的工具。也许当回答被写下时它们还不存在,但现在它们已经存在了,请更新回答。 - Jason
@Jason - 抱歉你不喜欢我的回答。如果你有更好的经验,可以随意写一篇更好的回答。 - APC
@APC,我对数据库不太了解... 我这里只能提供我的评论,但是我已经对问题进行了反对,因为它包含错误的信息。我得到你不想更新你的答案。如果你愿意,我可以列出我发现的工具,并编辑你的答案来包括它们。你想让我把这些工具添加到答案中吗?这是 Oracle 的一篇文章,介绍了他们数据库中的重构:http://www.oracle.com/technetwork/issue-archive/2011/11-jul/o15plsql-101302.html 有一本关于重构数据库的书,叫做“Refactoring Databases”。 - Jason
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接