加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle:将现有数据库放到版本控制中

发布时间:2020-12-12 16:25:55 所属栏目:百科 来源:网络整理
导读:我有现有的oracle数据库.我想把它放在源代码控制下(Subversion). 我知道的唯一解决方案 – 创建’DROP / CREATE / INSERT’文本脚本并将它们存储到SVN. 可能有更好的方法来管理架构和数据?我正在使用Oracle SQL Developer,我已经看到了迁移/存储库管理功能.
我有现有的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脚本.这允许我们独立跟踪每个更改,并使用我们的回滚逻辑恢复到特定的构建.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读