Oracle自动分区-分区的名称模式

Sar*_*ens 2 oracle partitioning oracle11g

我将使用来自Oracle 11g的自动分区,我想知道是否有任何选项可提供特定于分区名称的模式?

例如,我有:

create table 
pos_data ( 
   start_date        DATE,
   store_id          NUMBER,
   inventory_id      NUMBER(6),
   qty_sold          NUMBER(3),
) 
PARTITION BY RANGE (start_date) 
INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
(  
   PARTITION pos_data_init VALUES LESS THAN (TO_DATE('01-01-2017', 'DD-MM-YYYY')),
   PARTITION pos_data_201702 VALUES LESS THAN (TO_DATE('01-02-2017', 'DD-MM-YYYY')),
   PARTITION pos_data_201703 VALUES LESS THAN (TO_DATE('01-03-2017', 'DD-MM-YYYY')),
);
Run Code Online (Sandbox Code Playgroud)

我将使用init分区来包含2017年之前的所有行,然后是每个月的分区。

如何命名分区将自动生成?是否有可能创建名称结尾为YYYYMM的模式?还是我以后必须重命名那些分区?

Nic*_*nov 6

不,没有这样的选项可以让您为动态创建的分区指定分区名称模式。如果需要,您可以/应该在以后重命名它们。我个人认为不需要重命名它们。如果要为这些自动生成的分区赋予有意义的名称,以便可以在查询中引用它们,例如:

select *
  from partitioned_table
  partition (part_1);
Run Code Online (Sandbox Code Playgroud)

那么您可以轻松地使用partition for (<<date>>)子句来查询特定的分区,它不需要您知道要查询的分区名称:

select *
  from partitioned_table
  partition for (date '2017-01-01')
Run Code Online (Sandbox Code Playgroud)