为什么Oracle数据库在按间隔创建分区时需要至少提供单个分区

问题描述 投票:1回答:1

我想知道为什么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

database oracle partitioning database-partitioning
1个回答
6
投票

没有默认间隔,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'))

© www.soinside.com 2019 - 2024. All rights reserved.