多个Oracle Pl/SQL包的编译可以是原子操作吗?

发布于 2024-08-30 04:01:36 字数 68 浏览 5 评论 0原文

如果我将N个pl/sql包部署到Oracle DB,我可以使它们的编译原子化,即在成功编译所有包后将应用这些包中的更改吗?

If I deploy N pl/sql packages to Oracle DB, can I make their compilation atomic i.e. the changes in these packages will be applied after the successful compilation of all packages?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一枫情书 2024-09-06 04:01:36

由于软件包是可编辑的,您可以查看 基于版本的重新定义。这将为您提供一种在软件包版本之间自动切换的方法。

Since packages are editionable you could look at edition-based redefintion. This would give you a way to atomically switch between versions of your packages.

夏有森光若流苏 2024-09-06 04:01:36

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

在我看来,您遇到了配置管理问题。配置管理加上源代码控制是解决这个问题的方法。将所有 PL/SQL 脚本(哎呀,只是所有脚本)置于版本控制之下。当您部署某些 PL/SQL 程序的新版本时,也请检查以前的版本(到一个单独的子目录中,或者在您的部署机制下任何有意义的地方)。然后,如果新版本的软件包出现任何问题,重新部署旧版本就很容易了。

CREATE OR REPLACE and ALTER PACKAGE are DDL statements, and each single DDL statement is a discrete transaction. A COMMIT is issued before and after each DDL command; that is why there is no rollback for DDL.

It seems to me that you have a configuration management issue. And configuration management, plus source control, is the way to fix it. Keep all your PL/SQL scripts (heck , just all your scripts) under version control. When you deploy a new version of some PL/SQL programs check out the previous versions too (into a separate sub-directory, or whatever makes sense under your deploymenet regime). Then if there are any problems with the new versions of your packages it is a cinch to re-deploy the old versions.

那一片橙海, 2024-09-06 04:01:36

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

PL/SQL Developer 提供了另一个选项,可以将其配置为进行测试编译(编译包在“真正的”编译之前。

The other answers here are good (e.g. edition-based redefinition, which is available in 11gR2).

Another option is provided by PL/SQL Developer, which can be configured to do a test compile (compiles a package to an alternative name) prior to the "real" compile.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文