我有一个Oracle表,它包含应用程序的事件日志消息。我们不希望这张桌子失去控制并占用太多空间,所以我们想要限制它可以包含的一些行数,例如一百万。通过删除旧行来自动实施最大数据库表大小
所以我们想告诉Oracle,当表格变得太大时,它应该删除最老的行以为新行腾出空间。
有没有办法做到这一点?我想我们可以通过触发器或通过使用存储过程来创建所有插入,但有没有更简单的方法?
编辑:几个答案建议涉及分区的解决方案。我们目前并未对此表进行分类,但我们有能力在必要时这样做。然而,从调查问题来看,即使我们对表格进行分区,我们仍然需要某种预定的作业来删除旧的分区等。因此,我们决定放弃分区而倾向于计划作业检查行数并根据需要删除旧行,每天一次。
感谢您的帮助,每个人。
如果它是一个“大”表,那么你可能会发现分区更高性能。你可以放下他们没有大惊小怪。如果您必须在大表上进行选择并从中删除行,则会在撤销/重做方面产生开销。当然你的决定。 – 2008-10-16 01:27:19