数据库对象版本控制(非架构)

时间:2013-07-26 13:07:06

标签: sql oracle svn version-control database-versioning

我正在尝试弄清楚如何在我们有两个数据库的环境中实现版本控制:一个测试和一个生产

测试中。正在测试任意数量的任务。它们对操作对象的数量和复杂性没有限制,这意味着我们可以有一个3天的任务来更改2个包体和一个触发器,我们可以有一个3个月的任务来更改100个不同的对象,包括С源文件和二进制文件对象。

我主要担心的是DB的基于文本的对象。我们需要对 Test Production 代码进行版本控制,但任何任务都可以从 Testing 转到 Production 而没有定义无论如何。

这意味着我们现在必须手动跟踪文件中的更改,在每个文件中选择代码中的哪些行从 Testing Production 。我们使用一个非常基本的解决方案,在标题中写入一系列注释,其中包含基于文件的版本号,并在代码标记中添加该序列以分隔更改。

我正在努力实施SVN,因为我想创建 Testing 作为 Production 的分支,在 Testing 中有分支以限制每个任务,但我发现它可以导致许多 Testing 任务在合并期间被移植到 Production

这就是说,我的问题是:

  • 有没有办法自动解决这个问题?
  • 是否有任何特定于数据库的版本控制解决方案?
  • 如果代码库如此不同,我如何“链接”两个环境?

1 个答案:

答案 0 :(得分:0)

我使用SVN对数据库脚本进行源代码控制。

我没有技术解决方案,但我可以解释我们使用的方法。

我们有两组脚本 - 一组用于增量更改,另一组用于完整声明数据库对象和过程。

在开发期间,我们仅更新了在部署期间最终使用的脚本中的增量更改。在测试期间,我们更新了脚本。 最后,在生产中运行脚本之后,我们更新了包含完整声明的第二组脚本。完整脚本用作参考并从头开始创建数据库。