我有一张包含大量数据的表格。我需要每天自动进行分区。我需要分区的名称是sysdate的日期。我怎么能这样做呢?
答案 0 :(得分:5)
当前(11gR2)无法为间隔分区表中的自动生成分区指定名称。请参阅Common Questions On Interval Partitioning [ID 1479115.1](需要Oracle支持帐户):
自动创建的间隔分区的名称是什么?
[...]目前无法为分区名称指定掩码或模板,但系统生成的名称可以重命名[...]
您还必须使用分区键列,该列必须是DATE
或NUMBER
类型,以及其他一些内容(请参阅该说明)。
您可以按照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>);