哪里是在Oracle中存储表格版本的最佳位置?是否可以将版本存储在表本身中,例如: G。类似于分配给表的评论?
答案 0 :(得分:1)
一种方法是在桌子上定义评论:
comment on table your_table is 'some comment';
然后,您可以使用all_tab_comments
表读取该元信息。
见
如需进一步阅读,请参阅:
答案 1 :(得分:1)
我不认为您可以将这些信息存储在Oracle中,除非可能在表中发表评论,但这很容易出错。
但我个人认为你不应该跟踪表的版本。毕竟,要从版本1升级到版本2,您可能还需要修改数据,或其他对象,如用于新版本表的触发器和过程。
因此,在某种程度上,最好对整个数据库进行版本控制,这样您就可以将这些数据库结合起来。一个原子版本号的多个更改。
有不同的方法,以及可以帮助您的不同工具。我认为Oracle甚至有一些内置功能,但是对于Oracle来说,这意味着如果你使用它就会被收取金条,所以我不会进入它,只是描述了我有试过:
去过那里,做到了:在Git中保存架构结构
在某些时候,我们想在GitHub中保存我们的数据库更改,我们的其他来源也是如此。
我们一直在使用Red Gate Source Control for Oracle(和Schema Compare,一个类似的工具),并且一直在研究其他类似的工具。这些工具使用像Git这样的版本控制来保留数据库的最新结构,它可以帮助您从开发数据库到脚本文件夹或VCS进行更改,并且它可以为您生成迁移脚本。
就我个人而言,我并不是一个大粉丝,因为这些工具和脚本只关注数据库的结构(就像你对单个表进行版本控制一样)。您仍然需要知道如何从版本1升级到版本2,有时只添加一列不够;您还需要迁移数据。这并没有被这样的工具正确覆盖。
此外,我认为他们的工作总体上相当昂贵,他们的工作并不像盒子里的承诺那么容易,而且你需要不同的工具来处理不同的数据库。
使用迁移
更好的解决方案是使用迁移脚本。您只需创建一个脚本以将数据库从版本1升级到版本2,然后创建另一个脚本以将其从版本2升级到版本3.这些迁移可以是关于表结构,对象修改,甚至只是数据,它不会无所谓。您需要做的就是记住最后执行的脚本,然后执行所有版本。
执行迁移可以手动完成,也可以简单地编写脚本。但也有这方面的工具。其中一个是Flyway,这是一个免费工具(如果你需要支付专业支持),它就是这样做的。您可以从文件夹中提供SQL脚本,这些脚本按顺序排序和执行。每个脚本都是一个版本'。有关该过程的元数据存储在数据库的单独表中。整个过程在more detail on Flyway's website中描述。
这个工具的优点是它非常简单和灵活,因为您只需自己编写迁移脚本。所有工具都执行它们并跟踪它。它可以用于各种数据库,因此您可以为每个数据库引入相同的流程。