我想知道为什么Oracle数据库要求在创建PARTITION BY RANGE INTERVAL
时至少定义了单个分区
这是对的:
CREATE TABLE FOO (
bar VARCHAR2(10),
creation_date timestamp(6) not null
)
PARTITION BY RANGE (creation_date) INTERVAL (NUMTODSINTERVAL(1,'DAY')) (
PARTITION part_01 values LESS THAN (TO_DATE('01-03-2018','DD-MM-YYYY'))
)
然而,这不是:
CREATE TABLE FOO (
bar VARCHAR2(10),
creation_date timestamp(6) not null
)
PARTITION BY RANGE (creation_date) INTERVAL (NUMTODSINTERVAL(1,'DAY'))
我希望在某些迁移情况下需要第一个分区,但在创建新表时则不需要。
有关该文档的Oracle文档:
CREATE TABLE语句的INTERVAL子句为表建立间隔分区。您必须使用PARTITION子句指定至少一个范围分区。 https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin001.htm#BAJHFFBE
没有默认间隔,Oracle不知道从哪里开始间隔。对于每日分区,它不是那么明显,但想象你每周有一个分区,即7天。
应该是星期一,星期一,星期日,星期日还是其他什么?
“1天”的间隔是什么意思?从00:00:00 - 23:59:59(在您的示例中隐含地给出)或其他内容,例如12:00:00 - 11:59:59(这将是PARTITION part_01 values LESS THAN (TO_DATE('01-03-2018 12:00','DD-MM-YYYY HH24:MI'))
)