主要条件是:
>适用于Oracle 9R2
>人类可读,所以我们可以使用diff来看待差异. (.dmp文件似乎不可读)
>批次中的所有表.我们有200多张桌子.
>存储两个结构和数据
>它支持CLOB和RAW类型.
>它存储过程,包及其身体,功能,表格,视图,索引,约束条件,保密和概念.
>它可以变成一个可执行脚本,将数据库重建成一个干净的机器.
>没有限制到真正的小数据库(支持至少200.000行)
这不容易我已经下载了许多以某种方式失败的演示.
编辑:我不会介意替代方法,只要它们允许我们以批处理模式检查我们的发布数据库结构和对象数据的工作系统.
顺便一提.我们的项目已经开发了多年.当你做一个新的开始,但似乎很难在这一点上,一些aproaches可以很容易的实现.
编辑:为了更好地理解问题,让我们说一些用户有时可以在生产循环中对配置数据进行更改.或者开发人员可能会在realease分支中创建一个新的字段或更改视图而不另行通知.我需要意识到这些变化,或者将更改合并到生产中将变得复杂.
>源代码进入版本控制工具(Subversion,CSV,GIT,Perforce …).对待它就好像是Java或C代码,它真的没有什么不同.您应该有一个安装过程,检查它并将其应用于数据库.
> DDL是源代码它也进入版本控制工具.
>数据是一个灰色区域 – 查找表可能应该在版本控制工具中.应用生成数据当然不应该.
我今天做的事情是创建类似于Ruby on Rails迁移的迁移脚本.将您的DDL放入脚本并运行它们以在版本之间移动数据库.将发行版的组更改为单个文件或一组文件.那么你有一个脚本将您的应用程序从x版移动到y版.
有一件我从来没有做过的事情(我曾经做过,直到我学得更好)使用任何GUI工具在我的开发环境中创建数据库对象.从第1天起编写DDL脚本 – 您将需要它们来促进代码进行测试,生产等.我看到有这么多人使用GUI来创建所有的对象,并且发布时间有一个拼写尝试产生脚本以正确的方式创建/迁移模式,这些脚本通常不会被测试并失败!
每个人都有自己的喜好,如何做到这一点,但是我已经看到很多事情做得糟糕多年来形成了我的观点.