在特定时间段后归档Oracle表数据

时间:2014-05-14 12:36:06

标签: database oracle backup archiving

我们要求将6个月以上的oracle表中的数据归档到平面文件或db日志中。

oracle是否存在解决此问题的方法,或者我们需要为此做一些手动工作?

也可以有人建议解决此归档过程的不同方法,例如编写批处理程序以获取超过6个月的记录并将其写入平面文件或csv等。要么它可以是oracle支持的解决方案,如触发器,已安排工作或程序化解决方案(最好是在java中)

请帮助..

3 个答案:

答案 0 :(得分:0)

我认为将数据存档到平面文件中不是一个好主意。考虑使用表的分区。 Differnet分区可以存储在不同的表空间中,因此也可以存储在不同的存储空间中(理论上甚至可以使用磁带存储)。

答案 1 :(得分:0)

您可以将Oracle 12c ILM用于此About Oracle Database for ILM 它使您能够声明应将哪些数据移动到更便宜的存储层,或者进行清除。

当然,这也可以通过自定义代码实现,将分区移动到专用表空间,这些表空间的数据文件位于更便宜的存储上。升级到12c并使用Oracle为此目的创建的内容会更便宜,更容易。我的投票将用于使用Oracle ILM工具;不要低估自己代码的开发和维护工作。

答案 2 :(得分:0)

执行以下步骤时,请考虑将许可成本分区为额外负担,并且在归档后无需查询归档数据。

  1. 使用查询选项为归档行转储(expdp),该选项将提供6个月的数据集。 Reference用于基于查询的expdp命令。

  2. 从表格中删除已归档的行。

  3. 刷新表的统计信息(dbms_stats)以解决将来的性能问题。

  4. 注意:您可能需要卸载表(备份表并再次恢复)或为未归档的数据启用行移动,这样可以避免碎片问题和表格占用的空间。