【发布时间】:2019-06-17 09:14:14
【问题描述】:
我们有一个带分区的表。它还有一个溢出分区(最大分区),它可以作为与分区标准不匹配的记录的全部内容。这个想法是提前创建分区,这样记录就不会出现在 max_partition 中。但是对于一个表,这被遗漏了,所以所有的记录都在那个单一的分区中。
现在这些记录中的大部分不再使用,因此可以删除它们。然而,我们的方法是在分区太旧时删除分区。在这种情况下不能这样做。有没有简单的方法来处理清除?
也许现在创建分区并将记录移动到它们然后现在删除分区是一个想法,但是它似乎在性能上会很差。另一种选择是创建一个临时表,其中从那里移动和删除记录的子集,但再次单独移动记录似乎很耗时。该表有大约 500 万条记录。
从性能角度来看,这将是最好的前进方式。我们可以管理一点停机时间,但不会太多。
我们使用 Oracle 11g。
表创建脚本如下所示:
CREATE TABLE "TRANSACTIONS"
("year" number(4,0) NOT NULL ENABLE)
PARTITION BY RANGE ("year")
(PARTITION "P_OLD" VALUES LESS THAN (2010),
PARTITION "P_2011" VALUES LESS THAN (2011),
...
PARTITION "P_MAX" VALUES LESS THAN (MAXVALUE));
【问题讨论】:
标签: oracle partitioning