Oracle:将现有数据库放到版本控制中
我有现有的oracle数据库.我想把它放在源代码控制下(Subversion).
我知道的唯一解决方案 – 创建’DROP / CREATE / INSERT’文本脚本并将它们存储到SVN. 可能有更好的方法来管理架构和数据?我正在使用Oracle SQL Developer,我已经看到了迁移/存储库管理功能.我应该使用它们吗?以及如何使用它们? 我不确定我是否真的在这里回答你的问题,或者只是随便乱扔东西:)首先,我想首先说我非常反对将数据放入源代码控制 – 您的数据库是您维护数据的地方.我使用SCM跟踪对象更改和DB中的归档策略以跟踪数据更改. 我没有使用SQL Developer的版本控制,主要是因为我们的部署与Jenkins CI服务器集成,所以它可能完全符合您的需求. 组织代码需要一个基本结构,我认为这应该尽可能地与您的实际数据库保持一致. <database> |_____<schema> | |____<DDL> | |____<DML> | |____<PLSQL> | |____<Indexes> | |____<Constraints> |____<schema> ... 以上模仿了Oracle中的命名空间边界. PLSQL和DDL对象确实共享相同的命名空间,但由于PLSQL具有业务逻辑,我将它们分开. 我使用OBJECTNAME.TYPEEXTENSION的命名模式托管这些文件夹中的所有对象,并使用(或多或少)标准化文件扩展名: Table .tbl Package Spec .pks Package Body .pkb Trigger .trg View .vw ... 我找到的这些脚本的内容取决于您的部署工具和对象类型. >您可以在文件对象之间创建依赖关系,还是知道要运行什么? 考虑到这一点,您可以找出这些文件中需要的结构. 我们的工具目前无法处理可重用性,即我们没有CREATE OR REPLACE对象或用户定义对象之间存在紧密耦合的依赖关系. 对于这些,我们必须编写一个PLSQL块来检查系统表,例如,是否已添加索引,如果是,则抛出一个异常,工具捕获并知道丢弃并转移到下一个脚本. 我只想在持续集成期间在数据库中应用增量,因此我们不使用DROP / CREATE / INSERT脚本.这允许我们独立跟踪每个更改,并使用我们的回滚逻辑恢复到特定的构建. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |