我是一名scm开发人员,目前我的任务是涉及数据库版本控制的活动。虽然我已经完成了源代码管理,但我对此并不熟悉。因此,我希望对如何实现这一点有不同的看法和经验。
我的意思是数据库(oracle / sybase)版本是捕获发生在数据库模式/触发器/等上的更改并将其存储为修订版。基本上在我们公司的客户数据库中有一些变化,我们不知道或者至少无法识别何时以及谁做出了特定的变更。我们只是尝试创建DB中发生的更改记录。
注意:我不是数据库人。
答案 0 :(得分:5)
通常的做法是允许更改通过构建过程。基本上......有一个像CVS这样的版本控制工具,用户可以在其中检查必须转到QA和Prod环境的更改。
所以..让我们说,有一些列添加到表中,开发人员将使用“Alter table ...”命令检入.ddl脚本,并将“应用”到数据库中下次你做一个构建。
除非您限制用户(在本例中为开发人员)直接进行更改而是使用标准构建过程,否则跟踪对象的更改几乎是不可能的。
考虑必要的详细信息,例如进行更改的用户,更改时间,原因(签入注释,错误编号,新功能请求等),您稍后需要了解更改的原因。所有更改通常使用标准用户(如“APPOWNER”)进行编译,如果没有版本控制系统,您只能访问最新的更改(last_ddl_change)。
如果您关注的是跟踪数据的更改,您可以使用触发器或使用Golden Gate等应用程序来读取重做日志并获取更改捕获记录。在您的问题中,您似乎正在寻找一种跟踪对象更改的方法。
答案 1 :(得分:1)
最好的方法是使用某种数据库修订软件管理所有更改,并允许轻松将其应用于多个数据库(上/下)。
它需要将所有更改保存到修订版软件,不需要直接更改数据库。
也许类似的PostgreSQL工具会有所帮助:
depesz scripts http://www.depesz.com/index.php/projects/。