【问题标题】:Oracle PL/SQL package version control [closed]Oracle PL/SQL 包版本控制 [关闭]
【发布时间】:2021-07-21 14:39:59
【问题描述】:

我们正在构建一个需要版本控制的自动化流程,以便我们甚至可以在几年后使用某些参数重新运行它。我们一直在讨论实现“版本控制”级别的方法。我们希望以某种形式保留 Oracle 中的版本,以便您可以相对轻松地让它们再次运行。

决定我们需要为不同的版本使用不同的名称,例如 *_1、*_2 等。

我对此有一些担忧。首先,无论更改多么小,都需要努力始终制作新版本的软件包,因此版本的数量很容易失控。其次,您无法知道是否有人接触过该版本,因为它已经创建并针对一组特定的参数运行。 (您可以在 Oracle 表中获取最后更新的日期并与原始运行时间进行比较,但这并不是特别有效,而且您不知道它只是删除了空格还是实际代码更改。)

有没有经过验证的好的替代方案?

【问题讨论】:

  • 文件和得到... 文件和差异的版本是自动的。 thatjeffsmith.com/archive/2021/04/…
  • 叹气,Git,没有。
  • 如果 pack_a_1.0.1 引用的表版本不再有效,例如新的 NOT NULL 列、新触发器等,会发生什么?您不能保证旧版本仍可与最新架构一起使用。所以,关键问题是运行旧版本是否需要数据库结构与旧包版本上次(成功)运行时的结构相同?
  • 感谢@thatjeffsmith 的推荐。我们正在使用 git,但此架构保存在安全服务器上,不允许自动连接,这意味着您需要手动复制包。将尝试查看我们如何连接它们,但很可能我们的安全人员不会允许这样做,因为架构包含非常敏感的信息。
  • @TenG 这是一个非常好的问题,而且确实引起了我对这个决定的很多担忧。包状态只是当您想要返回可能几年并且您不想随时冻结相关对象因此寻找替代选项时的问题之一。

标签: oracle version-control package oracle-sqldeveloper plsql-package


【解决方案1】:

您可以使用 EBR(基于版本的重新定义)。 它可能会解决您的所有问题。

基于版本的重新定义允许在单个架构中使用多个版本的 PL/SQL 对象、视图和同义词,从而可以在零停机时间的情况下执行数据库应用程序的升级。

  • 如果更改很小,您可以在同一版本中重新编译您的对象。
  • 您可以创建版本并仅实现您想要更改的对象。
  • 在您将新版本提供给其他用户和应用程序之前,更改将被隔离。
  • 您可以使用ALTER DATABASE DEFAULT EDITION = edition-name; 语句更改版本

您可以在此处阅读有关 EBR 的更多信息 https://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_editions.htm#ADFNS020

https://oracle-base.com/articles/11g/edition-based-redefinition-11gr2

【讨论】:

  • 我不知道这个,所以谢谢。这似乎是为了在不停机的情况下进行升级,以及在出现任何问题时快速退出更改的方法。这如何处理表定义更改,即如果将新列添加到表中以进行升级,切换回以前的版本是否也会恢复该表更改?
  • EBR 是一个很大的话题,阅读这个话题,我相信你会明白这背后的想法。 “这似乎是为了在不停机的情况下进行升级”它不仅可以减少停机时间,您还可以像版本一样创建对象的版本并非常轻松地处理它们。 “这如何处理表定义更改”您不能拥有表的版本,这仅仅是因为表有数据并且制作它的副本是不可行的。但是您可以创建可编辑的视图,以便您对表格进行更改。
  • 这是了解编辑视图和整体 EBR db-oriented.com/2018/05/21/ebr-part-7-editioning-views 的好博客
  • 这是个好主意@AmanSinghRajpoot,我会阅读链接。非常感谢,可能正是我们需要的!
【解决方案2】:

您可能想看看 Gitora www.gitora.com。它有助于使用 Git 管理 Oracle PL/SQL 包。全面披露:我是开发者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 2010-09-22
    • 1970-01-01
    • 2023-04-03
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    相关资源
    最近更新 更多