我有一张包含大量数据的表格。我需要每天自动进行分区。我需要分区的名称是 sysdate 的日期。我该怎么做呢?
问问题
6269 次
1 回答
5
当前 (11gR2) 无法为间隔分区表中的自动生成分区指定名称。请参阅有关间隔分区的常见问题 [ID 1479115.1](需要 Oracle 支持帐户):
自动创建的间隔分区的名称是什么?
[...] 目前无法为分区名称指定掩码或模板,但系统生成的名称可以重命名 [...]
您还受限于必须为DATE
or类型的分区键列NUMBER
,以及其他一些内容(请参阅该注释)。
您可以按照创建分区文档中的示例获取语法:
create table foo (date_created date, ...)
partition by range(date_created)
interval(numtodsinterval(1, 'DAY'))
(partition one values less than (to_date('01012013', 'DDMMYYYY')));
使用上述方法,每当您插入具有今年或以后日期值的行时,都会创建一个新分区。不会为 2013 年之前的日期创建新分区。
要解决分区名称问题(如果有必要),您可以根据HIGH_VALUE
in重命名分区USER_TAB_PARTITIONS
,尽管这听起来不太好。
另一种选择是根本不重命名它们并在要查询特定分区时使用此语法:
select *
from foo
partition for (<the day you're interested in>);
例如,参见:Oracle 间隔分区技巧。
于 2013-01-04T09:14:23.123 回答