在这个代码块的创建分区部分中,我如何设置分区2仅在分区p2内存储3个月的最新数据?
CREATE TABLE server1.test_temp
PARTITION BY RANGE (receiveddate)
(
PARTITION P2_test_temp VALUES LESS THAN (TO_DATE('08-05-23', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
)
AS
SELECT * FROM server1.test;
2条答案
按热度按时间guykilcj1#
最简单的解决方案是指定间隔分区,它将为新日期动态分配指定大小的新分区。分区修剪非常适合
where
条件,甚至子查询,并允许基于条件的动态分区选择。但是,如果出于某种原因,您仍然需要在过去三个月内使用动态上限的单个分区,则需要安排每日作业,以相应地调整现有分区。它应:
1.为新日期添加新分区,以使用其上边界作为新的上边界。
1.将这个新分区与“旧”的最后一个分区合并。
1.在日期前3个月分割最后一个分区,以从最新分区中删除旧数据。
1.将此旧数据与前一个分区合并。否则,它将把这一天的数据留在自己的分区中,最好考虑每天进行自动间隔分区。
下面是针对此特定表执行这些步骤的过程。如果要将表作为参数传递,则需要调整它并添加名称验证。
表格和初始数据:
拆分为
2023-05-14
(截至今天):检查结果:
fiddle
mmvthczy2#
最好使用
INTERVAL
分区,它使你的生活更容易,例如像这样: