Oracle 如何将列表子分区自动创建到主范围分区中
我有一个表,在日期上有一个范围分区,下面列出了子分区Oracle 如何将列表子分区自动创建到主范围分区中,oracle,oracle11g,Oracle,Oracle11g,我有一个表,在日期上有一个范围分区,下面列出了子分区 CREATE TABLE REC_XXX_DATA ( XXX_ID VARCHAR2(8), TEMPLATE_ID VARCHAR2(20), XXX_DATE DATE ) partition by RANGE(XXX_DATE) INTERVAL (numtodsinterval(7, 'DAY')) subpartition by list(XXX_ID) ( partition OCT2619
CREATE TABLE REC_XXX_DATA
(
XXX_ID VARCHAR2(8),
TEMPLATE_ID VARCHAR2(20),
XXX_DATE DATE
)
partition by RANGE(XXX_DATE) INTERVAL (numtodsinterval(7, 'DAY'))
subpartition by list(XXX_ID)
(
partition OCT2619 values less than (TO_DATE(' 2019-10-26 23:59:59', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
(
subpartition T360_OCT2619 values('AAA'),
subpartition ABMC_OCT2619 values('BBB')
)
);
我在列XXX_DATE中插入了2019年10月27日的数据,然后将一个新的范围分区添加到一个表中,其子分区也添加了列表值作为默认值。因此,所有数据都移动到同一个子分区中
我的要求是使用插入的XXX\u ID的实际值自动创建子分区
请建议。否。自动列表分区在高达12cR2的子分区级别不受支持。我不知道有更高的版本 如果您已经知道XXX_ID列的不同值,并且XXX_ID很少有新值,则可以创建子分区模板,为新值保留默认分区
CREATE TABLE REC_XXX_DATA
(
XXX_ID VARCHAR2(8),
TEMPLATE_ID VARCHAR2(20),
XXX_DATE DATE
)
partition by RANGE(XXX_DATE) INTERVAL (numtodsinterval(7, 'DAY'))
subpartition by list(XXX_ID)
subpartition template
(subpartition AAA values('AAA'),
subpartition BBB values('BBB'),
subpartition XXX values(DEFAULT))
(
partition OCT2619 values less than (TO_DATE(' 2019-10-26 23:59:59', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
(
subpartition AAA values('AAA'),
subpartition BBB values('BBB'),
subpartition XXX values(DEFAULT)
)
);
insert into REC_XXX_DATA values('AAA','T1',to_date('27-oct-19','dd-mon-yy'));
select table_name, partition_name, subpartition_name, high_value
from user_tab_subpartitions
where table_name = 'REC_XXX_DATA' order by 1,2,3;
输出:
TABLE_NAME PARTITION_NAME SUBPARTITION_NAME HIGH_VALUE
REC_XXX_DATA OCT2619 AAA 'AAA'
REC_XXX_DATA OCT2619 BBB 'BBB'
REC_XXX_DATA OCT2619 XXX DEFAULT
REC_XXX_DATA SYS_P197962 SYS_SUBP197959 'AAA'
REC_XXX_DATA SYS_P197962 SYS_SUBP197960 'BBB'
REC_XXX_DATA SYS_P197962 SYS_SUBP197961 DEFAULT
select count(1) from REC_XXX_DATA subpartition(SYS_SUBP197959);--1