create table tq84_part_range_range (
id number primary key,
col_1 varchar2(10),
dt date not null,
nm number not null
)
partition by range(dt) interval (numtoyminterval(1, 'year'))
subpartition by range(nm)
subpartition template (
subpartition lt_0 values less than ( 0),
subpartition lt_1000 values less than ( 1000),
subpartition lt_1000000 values less than ( 1000000),
subpartition lt_max values less than (maxvalue)
)
(
partition tq84_p1 values less than (date '2000-01-01')
)
;
insert into tq84_part_range_range values (1, 'a', date '2017-05-03', 9999);
exec dbms_stats.gather_table_stats(user, 'tq84_part_range_range');
select
p.partition_name,
s.subpartition_name,
p.high_value,
s.high_value,
s.subpartition_position,
s.num_rows
from
user_tab_subpartitions s join
user_tab_partitions p on s.table_name = p.table_name and
s.partition_name = p.partition_name
where
s.table_name = 'TQ84_PART_RANGE_RANGE';
drop table tq84_part_range_range purge;
create table tq84_part_interval_list (
id number,
txt varchar2(10),
cat varchar2( 3),
dt date
)
partition by range (dt) interval (numtoyminterval(1, 'month'))
subpartition by list (cat)
subpartition template (
subpartition foo values ('foo'),
subpartition bar values ('bar'),
subpartition baz values ('baz')
)
(
partition values less than ( date '2017-01-01')
);
insert into tq84_part_interval_list values (1, 'abc', 'foo', date '2017-03-01');
insert into tq84_part_interval_list values (2, 'def', 'bar', date '2017-03-02');
insert into tq84_part_interval_list values (3, 'ghi', 'baz', date '2017-03-03');
insert into tq84_part_interval_list values (4, 'jkl', 'foo', date '2017-12-01');
insert into tq84_part_interval_list values (5, 'mno', 'bar', date '2017-12-02');
insert into tq84_part_interval_list values (6, 'pqr', 'baz', date '2017-12-03');
select * from user_tab_subpartitions where table_name = 'TQ84_PART_INTERVAL_LIST';
drop table tq84_part_interval_list purge;