3

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

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

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

4

5 回答 5

2

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

于 2012-11-28T11:59:06.437 回答
1

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

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

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

于 2012-11-29T06:20:04.847 回答
0

根据Oracle 的说法,比 Liquibase 更便宜、更糟糕的解决方案:只导出模式主题,可以是提交后挂钩,这

  • expdp ... DUMPFILE=file.dmp CONTENT=METADATA_ONLY进入目录,这是 WC 或存储库中的特殊位置
  • 提交这个文件.dmp
于 2012-11-28T12:38:54.410 回答
0

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

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

于 2012-12-21T15:16:40.757 回答
-1

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

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

支持颠覆分支。

可以在 Windows 和 Linux 上工作(您需要 JRE 8)。

于 2018-11-12T15:34:51.723 回答