所以,我有这个分区,这使得一个错误,因为我在谷歌搜索它说,大多是像 "值大于分区"。
PARTITION BY LIST (BUSINESS_DATE)
(PARTITION D20200326 VALUES (TO_DATE('26/03/2020','DD/MM/YYYY'))
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE ( BUFFER_POOL DEFAULT)
TABLESPACE DWH LOGGING NOCOMPRESS)
GO
这是日期为'26032020'的分区,但我想让这个分区是动态的,所以我有这个ETL作业,如果ETL作业在'27032020'上运行,我的ETL作业就会出错,不想插入,所以我必须把这个分区改成27032020。
但我如何动态地做到这一点?
PARTITION BY LIST (INSERT_DATE)
(PARTITION D20200326 VALUES (TO_DATE(SYSDATE))
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE ( BUFFER_POOL DEFAULT)
TABLESPACE DWH LOGGING NOCOMPRESS)
GO
我试过改变SYSDATE,但只给了我一个错误。
ORA-14308:分区绑定的元素必须是:字符串、日期时间或间隔文字、数字或NULL中的一种 脚本第23行,语句第23行,第47列。
如果你需要自动创建day-wise partition,那么你可以使用 INTERVAL
分区,当插入的数据不属于以下任何一个分区时,将创建该分区。
CREATE TABLE YOUR_TABLE (
......
created_date DATE
)
PARTITION BY RANGE (created_date)
INTERVAL (NUMTODSINTERVAL(1,'DAY'))
(
PARTITION YT_PART_01 values LESS THAN (TO_DATE('02-JUN-2020','DD-MON-YYYY'))
);
如果你插入任何超过02-jun的数据,它将自动创建新的分区。
请参考 这个 有关该功能的文件。