我有一个包含大量数据的表(TMain),它存档到存档表(TArchive) - 记录超过3个月。
由于TMain是一个易失性表,并且其中的列在一段时间内被更改/删除,我想要进行某种控制,以便在更改TMain时TArchive始终保持同步。
在Oracle中实现这一目标的最佳方法是什么?
感谢任何建议和解决方案。
答案 0 :(得分:1)
Oracle中的DDL不是事务性的。这意味着任何自动化进程在Oracle中跨两个对象复制DDL将存在一些缺陷。如果第二个DDL语句失败怎么办?你无法回滚第一个,你被卡住了。
此外,您应该已经有一个外部组织流程来验证DDL。例如,在许多组织中,开发人员只能对开发数据库进行更改。这些更改会传播到临时数据库以进行测试。只有DBA可以在验证后将这些更改推送到生产环境。即使开发人员和DBA是同一个人,也应遵循以下准则:验证每个DDL。
出于这些原因,我建议不要自动化DDL复制。这看起来太麻烦了。代替:
答案 1 :(得分:1)
保持历史数据与存储当前数据的方式相同的最佳解决方案是分区 在11G中你也可以设置间隔,oracle会自动创建新的分区。 但有一件事,如果您想要使用压缩,请考虑在存在压缩分区时无法进行DDL更改。