保持存档表结构(列等)与实时表同步

Posted

技术标签:

【中文标题】保持存档表结构(列等)与实时表同步【英文标题】:Keeping Archive table structure (columns, etc.) in sync with Live table 【发布时间】:2013-02-21 11:52:12 【问题描述】:

我有一个包含大量数据的表 (TMain),它被存档到存档表 (TArchive) - 其中记录超过 3 个月。

由于 TMain 是一个易失性表,并且其上的列会随着时间的推移而更改/删除,因此我想要进行某种控制,以便 TArchive 在 TMain 更改时始终保持同步。

在 Oracle 中实现这一目标的最佳方法是什么?

感谢任何建议和解决方案。

【问题讨论】:

建立一个组织程序,以便表上的 DDL 遵循一组规则? @Andy 你试过什么?你的研究结果是什么?请详细说明。 【参考方案1】:

Oracle 中的 DDL 不是事务性的。这意味着在 Oracle 中跨两个对象复制 DDL 的任何自动化过程都会有些缺陷。如果第二个 DDL 语句失败怎么办?你不能回滚第一个,你被卡住了。

此外,您应该已经有一个外部组织流程来验证 DDL。例如,在许多组织中,开发人员只能对开发数据库进行更改。这些更改被传播到临时数据库以进行测试。只有 DBA 才能将这些更改在验证后推送到生产环境。即使开发人员和 DBA 是同一个人,您也应该遵循以下准则:验证每个 DDL。

出于这些原因,我建议不要自动化 DDL 复制。这看起来太麻烦了。而是:

如果您不经常更改表结构,只需在 DBA 清单中添加一条规则即可。 如果您过于频繁地更改表,也许您可​​以研究不需要 DDL 的替代架构。例如,将易失性信息存储为结构较少的格式(如 XML),您还可以添加通用列,这些列可能根据行保存不同类型的信息。即使是本地化键值表也可以减少更改表结构的需要。

【讨论】:

【参考方案2】:

保持历史数据与当前数据存储方式相同的最佳解决方案是分区。 在11G你也可以设置间隔,oracle会自动创建新的分区。 不过有一件事,如果您想使用压缩,请考虑到存在压缩分区时无法更改 DDL。

【讨论】:

以上是关于保持存档表结构(列等)与实时表同步的主要内容,如果未能解决你的问题,请参考以下文章

PLSQLDeveloper来实现不同数据库的表结构以及表数据同步

kettle数据同步方法

云图说|DAS表结构对比与同步,实现您多个数据库管理心愿

记录一次EFCore CodeFirst迁移实践,解决多个项目表结构同步更新问题

mysql如何实现两个数据库数据结构实时同步?

嵌入式实时操作系统6——链表数据结构