【问题标题】:Integration of Oracle and SubversionOracle 和 Subversion 的集成
【发布时间】:2012-11-28 11:47:05
【问题描述】:

我正在与 8 个开发人员一起管理一个基于 java、subversion 和 svn 的基于 Web 的项目。不幸的是,修改数据库更改是该项目的一个大问题。在我们的例子中,每个用户都可能更新表格而忘记将更改脚本放在 svn 中。因此,我们需要花费大量时间来查看和调试由于未更新的表或视图而引发的问题。

所以,我想知道,oracle 11g 是否有任何方法、工具或插件可以将所有数据库更改作为脚本保存在某个地方,例如在svn上?

编辑 1: 从整个数据库中获取转储并不能解决我的问题,因为在真实环境中我无法丢弃客户数据并返回新的转储。

【问题讨论】:

  • “在我们的例子中,每个用户都可能更新表格而忘记将更改脚本放入 svn。” 那是你的问题。您只需要更好的变更管理程序。人们必须提交更改,这是系统工作的唯一方式。如果人们没有提交更改,则说明情况管理存在问题,而不是您使用的工具有问题。
  • @Ben - 和你一样,我不认为这是我的工具的问题。我有一个问题,我认为它可以通过自动生成更改脚本来解决。因此,如果您有更好的解决方案,可以告诉我。另外,您能否为我们的案例提出一个更好的变更管理程序??
  • 不幸的是,这就是我发表评论而不是答案的原因。我同样依赖于其他人以及他们做出的改变。唯一的区别是人们确实在我工作的地方提交了他们的更改,如果他们不这样做,他们通常会被发现,因为他们引起的问题是相当明显的。我目前的问题,总会有一个问题,是垃圾提交消息:-)。

标签: java database svn version-control oracle11g


【解决方案1】:

我认为这正是您所需要的。一个开源数据库变更管理系统。液化石油气。 http://www.liquibase.org/

【讨论】:

    【解决方案2】:

    不要存储更改脚本,只存储删除和重新创建所有对象的脚本。开发人员应在本地实例上更改和运行这些脚本,运行自动化单元测试,然后签入他们的更改。

    从头开始重建所以比不断运行更改脚本要好得多。在每个人都可以轻松地从头开始重建整个系统之前,您永远无法控制您的应用程序。

    (我假设您是在询问关于trunk 的开发,在那里您有很多小的更改。对于重大升级,例如从版本 1.1 移动到版本 1.2,您仍然需要使用更改脚本来帮助保存数据。 )

    【讨论】:

    • 我说的是把版本从 1.1 移到 1.2。我如何确保我所有的更改脚本都存储在某个地方?谁可以保证存储的更改脚本可以将我的数据库完全升级到版本 1.2?
    【解决方案3】:

    根据Oracle: exporting only schema主题,比Liquibase更便宜更差的解决方案,可以 提交后钩子,其中

    • expdp ... DUMPFILE=file.dmp CONTENT=METADATA_ONLY 进入目录,即 WC 或存储库中的特殊位置
    • 提交此文件.dmp

    【讨论】:

    • 但我不需要转储文件。我需要更改脚本将数据库从一个版本迁移到另一个版本。
    • 这就是我们现在正在做的事情。这真的很令人沮丧。 :--(
    【解决方案4】:

    维护数据库更改有两个方面。一种,正如您所提到的,以脚本的形式,可以应用于旧模式以升级它。然而,这是答案的一部分,因为开发人员很难查看脚本、解析它们并弄清楚最近的架构更改可能如何影响他们的工作。

    因此,除了更改脚本之外,我建议您还可以在文本文件中签入数据库元数据的人类可读版本。 SchemaCrawler 就是为此目的而设计的一个免费工具,它以一种旨在区分的格式生成丰富的元数据信息。我发现,如果您将数据库元数据作为一个夜间流程来自动签入架构元数据,那么随着时间的推移,数据库元数据的更改就会变得可追溯。

    【讨论】:

    • MerC Agha Sualeh !!!我只是想知道您的工具如何检测列重命名?难道真的是重命名的列应该被删除并重新插入???
    • 列重命名存在问题,需要使用变更管理工具进行管理。 liquibase.org/manual/rename_column
    【解决方案5】:

    请试试这个工具:www.dbapply.com

    它既有用于从 Subversion 存储库手动部署脚本的 GUI,也有用于持续集成的命令行界面。

    支持 Subversion 分支。

    可以在 Windows 和 Linux 上运行(您需要 JRE 8)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2019-02-26
      相关资源
      最近更新 更多