我们希望淘汰Oracle仓库中的旧数据。
为了给出一个非常简单的概述,有人建议使用PL SQL存储过程开发一个过程,该过程在给定源/目标表等参数的情况下,使用Oracle ALL_TAB_COLUMNS视图来构造镜像源表的目标表。
如果从上一次运行中存在dest表,则建议的解决方案包括将源表的当前模式与目标(存档)表进行比较,如果发现差异,则使两个表同步。我确信在提议的功能中存在局限性,但是尽管该规范在这一领域似乎相当雄心勃勃,但我怀疑他们是否会用PL-SQL重写Red Gate的SQL比较实用程序。
我想我有两个问题。
1) PL/SQL真的是用于这类任务的合适语言吗?对我来说,存储过程用于快速输入和快速输出数据操作,而复杂逻辑属于我认为功能更全的客户端语言,如C#或其他.NET语言。我预计会有一个10,000行、缩进不佳的单个存储过程,并且我对不得不检查它感到畏缩。我知道Oracle /Pkgs不需要这样,但是,由于某些原因,我们的开发人员在使用PL\SQL时倾向于比在.NET中编写时更少模块化。我欢迎你的建议和选择的理由。
2)是否有可用于归档目的的Oracle实用程序(我想我们使用的是10g)?有人有什么建议吗?
在提供评论时,我将投票支持任何不重复的价值。
谢谢。
发布于 2009-09-25 06:07:08
你说这是一个数据仓库。你在使用分区吗?如果是,分区方案是否标识了您想要存档的行?如果这两个问题的答案都是“是”,那么partition exchange可能就是你要搜索的功能。
发布于 2009-09-24 22:52:10
PL/SQL不仅仅是用于“快进快出”的数据操作。在它的基础上构建了大量的应用程序。对于这类任务,PL/SQL本身并没有什么问题。也就是说,如果您预计在PL/SQL中会有一个写得很差的10K行过程,请不要使用它。让你的程序员做他们最擅长的事情。
发布于 2009-09-24 22:49:22
首先,这听起来像是PL-SQL的一项任务。非模块化代码问题是可以强制执行的,使用PL-SQL会给您带来更好的结果,并且更易于编写。
至于概念本身,如果模式被更新,你所做的任何解决方案都会有问题-同步将失败,或者更糟糕的是,它不会并且数据将被破坏。
如果有一个复制服务器,您可以从主服务器添加一个“删除旧记录”,并且只在离线服务器上执行插入/更新,那该怎么办呢?这将允许您既拥有所有数据,又保留较少的活动数据。
https://stackoverflow.com/questions/1474535
复制相似问题