Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 为什么Oracle数据库在按间隔创建分区时要求至少提供一个分区_Database_Oracle_Partitioning_Database Partitioning - Fatal编程技术网

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

Database 为什么Oracle数据库在按间隔创建分区时要求至少提供一个分区,database,oracle,partitioning,database-partitioning,Database,Oracle,Partitioning,Database Partitioning,我想知道为什么Oracle数据库在按范围间隔创建分区时要求至少定义一个分区 这是正确的: 创建表FOO( 巴尔·瓦尔查尔2(10), 创建日期时间戳(6)不为空 ) 按范围划分(创建日期)间隔(NUMTODSINTERVAL(1,'DAY'))( 分区部分的值小于(截止日期('2018年3月1日,'DD-MM-YYYY')) ) 但这并不是: 创建表FOO( 巴尔·瓦尔查尔2(10), 创建日期时间戳(6)不为空 ) 按范围划分(创建日期)间隔(NUMTODSINTERVAL(1,'DAY'))

我想知道为什么Oracle数据库在按范围间隔创建分区时要求至少定义一个分区

这是正确的:

创建表FOO(
巴尔·瓦尔查尔2(10),
创建日期时间戳(6)不为空
)
按范围划分(创建日期)间隔(NUMTODSINTERVAL(1,'DAY'))(
分区部分的值小于(截止日期('2018年3月1日,'DD-MM-YYYY'))
)

但这并不是:

创建表FOO(
巴尔·瓦尔查尔2(10),
创建日期时间戳(6)不为空
)
按范围划分(创建日期)间隔(NUMTODSINTERVAL(1,'DAY'))

我希望在某些迁移情况下需要第一个分区,但在创建新表时不需要

Oracle关于此的文档:

CREATETABLE语句的INTERVAL子句为表建立间隔分区。必须使用partition子句指定至少一个范围分区。


如果没有默认间隔,Oracle不知道从何处开始间隔。对于每日分区,这不是很明显,但假设您每周有一个分区,即7天

是星期一、星期天还是别的什么


“1天”的间隔是什么意思?从00:00:00-23:59:59(如您的示例中所暗示的)或其他时间,例如12:00:00-11:59:59(这将是
分区部分\u 01值小于(截止日期('01-03-2018 12:00','DD-MM-yyyyyyh24:MI')

投票决定转移到这一点可能会使您无法获得理由:如果您说我需要一周的假期;你很快就会得到这样的回答:从哪一天开始?不清楚你期望什么。如果对表进行分区,则无论何时(现在或将来)向表中添加数据,都必须将其转到分区。也许您会问“如果我不这样说的话,为什么默认情况下整个表不在一个分区中?”。这很好,但是分区必须有一个名称,这样才能引用它。你在哪里提供这个名字?