2010-04-23 25 views

回答

3

由于软件包是可编辑的,你可以看看edition-based redefintion。这会给你一个在你的软件包版本之间进行原子切换的方法。

3

CREATE OR REPLACE和ALTER PACKAGE是DDL语句,每个DDL语句都是离散事务。在之前以及在每个DDL命令之后发出一个COMMIT ;这就是为什么DDL没有回滚的原因。

在我看来,你有一个配置管理问题。配置管理和源代码控制是解决问题的方法。在版本控制下保存所有的PL/SQL脚本(只是所有的脚本)。当您部署新版本的某些PL/SQL程序时,也请检查以前的版本(在单独的子目录中,或在您的部署网络系统下有意义的内容)。那么,如果你的软件包的新版本有任何问题,重新部署旧版本是一件小事。

+0

同意,似乎测试环境将是一个好主意! – 2010-04-23 10:11:07

+1

的确如此,但问题是,环境就像对冲基金一样。仅仅因为在Test中部署的东西并不能保证它在生产中会这样做。 – APC 2010-04-23 10:27:51

2

这里的其他答案很好(例如,基于版本的重定义,这在11gR2中可用)。

另一个选项由PL/SQL Developer提供,它可以配置为在“真正”编译之前进行测试编译(将包编译为替代名称)。

相关问题