Oracle11g中的自动分区

时间:2013-01-04 08:51:00

标签: oracle oracle11g database-partitioning

我有一张包含大量数据的表格。我需要每天自动进行分区。我需要分区的名称是sysdate的日期。我怎么能这样做呢?

1 个答案:

答案 0 :(得分:5)

当前(11gR2)无法为间隔分区表中的自动生成分区指定名称。请参阅Common Questions On Interval Partitioning [ID 1479115.1](需要Oracle支持帐户):

  

自动创建的间隔分区的名称是什么?

     

[...]目前无法为分区名称指定掩码或模板,但系统生成的名称可以重命名[...]

您还必须使用分区键列,该列必须是DATENUMBER类型,以及其他一些内容(请参阅该说明)。

您可以按照Creating Partitions文档中的示例了解语法:

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中的USER_TAB_PARTITIONS重命名分区,尽管这听起来不太好。
另一种选择是根本不重命名它们,并在想要查询特定分区时使用此语法:

select *
from foo
partition for (<the day you're interested in>);

例如参见:Oracle Interval Partitioning Tips