每天为表创建oracle分区。
ALTER TABLE TAB_123 ADD PARTITION PART_9999 VALUES LESS THAN ('0001') TABLESPACE TS_1
在这里我得到了错误,因为值减小为0001作为下边界。
答案 0 :(得分:2)
您可以让Oracle使用PARTITION BY RANGE
选项自动创建分区。
示例DDL,假设分区键为列my_date_column
:
create table TAB_123
( ... )
partition by range(my_date_column) interval(numtoyminterval(1,'day'))
( partition p_first values less than (to_date('2010-01-01', 'yyyy-mm-dd')) tablespace ts_1)
;
完成此设置后,如果需要,Oracle将在将数据插入表中时动态创建一个分区。如上所述,创建默认分区通常也是一个好主意。
答案 1 :(得分:1)
此命名约定(年份的最后一位数字加上日期号)将不支持保存超过十年的数据。也许您认为这无关紧要,但是我知道数据库已经进入了第二个十年。要乐观!
此外,该键对于查询几乎没有用。大多数针对分区表的查询都希望获得消除分区的好处。但这仅适用于查询使用与分区键相同的值的情况。开发人员确实不希望每次在表上编写选择内容时都将日期转换为YDDD格式。
所以。使用实际日期定义分区键,从而定义范围。也可以用来命名分区(如果有那么重要的话)。
ALTER TABLE TAB_123
ADD PARTITION P20200101 VALUES LESS THAN (date '2020-01-02') TABLESPACE TS_1
/
请注意,该范围的定义少于第二天。否则,分区名称的日期将与实际分区中记录的日期不一致。