对Oracle版本控制系统的建议

时间:2010-01-27 10:56:28

标签: oracle version-control

在工作中,我们使用Oracle(ick)作为客户端的数据库(这是从以前公司的项目迁移,所以不幸的是数据库一成不变)。 到目前为止,这并没有引起任何重大问题(除了通常的Oracle与MSSQL之外的东西):我们正处于五个单独的开发人员正在为系统开发五个单独的增强功能的点,每个都在Perforce中使用不同的分支。 / p>

有人能建议一种跟踪Oracle版本更改的好方法:主要是存储过程,还有(可能)对表架构的更改?

目前我们只是简单地将'创建或替换'脚本附加到FogBugz案例中,但有时候这会导致更改被忽视,而且很快就会传播到一个大问题!

N.B。

,它不可能拥有多个数据库本身的副本,因为它太大了。

4 个答案:

答案 0 :(得分:7)

我在Database source control with Oracle之前提出了一个非常类似的问题。

摘要 - DDL和存储过程是应该在版本控制工具中管理的代码,就像Java,C#或其他任何东西一样。

答案 1 :(得分:4)

你没有说你正在使用哪个版本的Oracle,我怀疑它不太可能是 最新的。但是如果您使用的是11gR2,那么您应该阅读版本功能。

基于版本的重定义允许我们在数据库中管理不同版本的PL / SQL对象 。它不会取代正确的版本控制,而是通过允许不同版本的模式在同一实例中共存来补充它。这很酷。 Find out more

答案 2 :(得分:2)

如何在脚本中检查SVN中的过程,用FB案例编号标记每个检查,以便可以直接在FB中看到更改?

这就是我们为脚本(主要是MSSQL)所做的,但我们使用Jira而不是FB。

答案 3 :(得分:1)

作为ACP said,如果您拥有最新版本的Oracle,则版本功能可以很好地用于此。

在任何情况下,other linked answer都显示了可行的方法 - 在版本控制中维护所有PL / SQL,并将所有DDL更改保留为补丁,这些补丁也会输入到版本控制中。

一些可能会影响您案件的实用性。

如果你有一个相对统一的数据库结构和快速更改的PL / SQL包,那么一个选项是让一个模式保存表和PL / SQL包的主分支,并为每个开发人员提供一个单独的模式来支持他们的分支。 PL / SQL包。主模式中的所有表都与每个开发人员的模式同义。

因此,您有多个针对单个数据存储运行的PL / SQL版本。当开发人员分支聚集在一起时,这些分支被检入主分支并编译到主应用程序模式中。

我发现在每个开发模式中都包含所有pl / sql包更容易,而不仅仅是当前正在开发的模式包,但是你可以使它以任何方式工作。

显然,您仍然需要至少 2个数据库,因此您的生产环境对所有这些恶作剧都是安全的。

如果这对您不起作用,另一个选择是为每个开发人员提供他们自己修改的数据库。您说这里的大小是一个禁止因素,但您可以使用Data Pump中的功能来限制从主数据库传输到每个开发人员数据库的行数。

例如:

仅导出5%的行......

$ expdp sample=5

仅导出特定表格的5%...

$ expdp sample=mybigtable:5

通过这种方式,每个开发人员都可以使用相同的数据库结构,但是您没有相同的存储问题。

希望这有帮助。