如何在 oracle 中已经间隔分区 table 中创建子分区
How to create sub partition in already interval partitioned table in oracle
我有一个 table,它是按日期列进行间隔分区的。我想将这些已经创建的分区子分区为列表分区。
如何在 Oracle 中执行此操作?
假设有一个table,其中有一个日期列和一个区域列以及其他列。
Table 已使用此日期列进行间隔分区。
现在我要将这些区间分区在region列的基础上进行子分区
怎么可能?
在 19c 上,您可以使用 alter table
更改分区策略(这是在 18c 中添加的)。这允许您定义子分区:
create table t (
c1 date, c2 int
) partition by range ( c1 )
interval ( interval '1' month ) (
partition p0 values less than ( date'2022-03-01' )
);
insert into t
with rws as (
select level x from dual
connect by level <= 60
)
select date'2022-03-01' + x, mod ( x, 3 ) from rws;
commit;
select partition_name, subpartition_name, high_value
from user_tab_subpartitions
where table_name = 'T';
no rows selected
alter table t
modify partition by range ( c1 )
interval ( interval '1' month )
subpartition by list ( c2 )
subpartition template (
subpartition p1 values ( 1 ),
subpartition p2 values ( 2 ),
subpartition pdef values ( default )
) (
partition p0 values less than ( date'2022-03-01' )
)
online ;
select partition_name, subpartition_name, high_value
from user_tab_subpartitions
where table_name = 'T';
PARTITION_NAME SUBPARTITION_NA HIGH_VALUE
--------------- --------------- -------------
P0 P0_P1 1
P0 P0_P2 2
P0 P0_PDEF default
SYS_P42745 SYS_SUBP42742 1
SYS_P42745 SYS_SUBP42743 2
SYS_P42745 SYS_SUBP42744 default
SYS_P42749 SYS_SUBP42746 1
SYS_P42749 SYS_SUBP42747 2
SYS_P42749 SYS_SUBP42748 default
请注意 不 支持间隔或 auto-list 子分区。您需要更新子分区模板以根据需要添加新值。
我有一个 table,它是按日期列进行间隔分区的。我想将这些已经创建的分区子分区为列表分区。
如何在 Oracle 中执行此操作?
假设有一个table,其中有一个日期列和一个区域列以及其他列。
Table 已使用此日期列进行间隔分区。
现在我要将这些区间分区在region列的基础上进行子分区
怎么可能?
在 19c 上,您可以使用 alter table
更改分区策略(这是在 18c 中添加的)。这允许您定义子分区:
create table t (
c1 date, c2 int
) partition by range ( c1 )
interval ( interval '1' month ) (
partition p0 values less than ( date'2022-03-01' )
);
insert into t
with rws as (
select level x from dual
connect by level <= 60
)
select date'2022-03-01' + x, mod ( x, 3 ) from rws;
commit;
select partition_name, subpartition_name, high_value
from user_tab_subpartitions
where table_name = 'T';
no rows selected
alter table t
modify partition by range ( c1 )
interval ( interval '1' month )
subpartition by list ( c2 )
subpartition template (
subpartition p1 values ( 1 ),
subpartition p2 values ( 2 ),
subpartition pdef values ( default )
) (
partition p0 values less than ( date'2022-03-01' )
)
online ;
select partition_name, subpartition_name, high_value
from user_tab_subpartitions
where table_name = 'T';
PARTITION_NAME SUBPARTITION_NA HIGH_VALUE
--------------- --------------- -------------
P0 P0_P1 1
P0 P0_P2 2
P0 P0_PDEF default
SYS_P42745 SYS_SUBP42742 1
SYS_P42745 SYS_SUBP42743 2
SYS_P42745 SYS_SUBP42744 default
SYS_P42749 SYS_SUBP42746 1
SYS_P42749 SYS_SUBP42747 2
SYS_P42749 SYS_SUBP42748 default
请注意 不 支持间隔或 auto-list 子分区。您需要更新子分区模板以根据需要添加新值。