--list_range 示例
drop table list_range_tab purge;
create table list_range_tab
(n1 number,n2 date)
partition by list(n1)
subpartition by range(n2)
(partition p01 values(1)
( subpartition subp01 values less than (to_date('3001-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss')),
subpartition subp_default values less than (maxvalue)
))
--range_list 示例
drop table range_list_tab purge;
create table range_list_tab
(n1 date,n2 number)
partition by range(n1)
subpartition by list(n2)
(partition p01 values less than (to_date('3001-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss'))
( subpartition subp01 values(1) ),
partition p_default values less than (maxvalue)
);
--range_list_inter 主分區自動分區 子分區自動分區示例
drop table range_list_tab_inter purge;
--按天自動分區
create table range_list_tab_inter_dd
(n1 date,n2 number)
partition by range(n1)
interval(numtodsinterval(1,'day'))
subpartition by list(n2)
(partition p01 values less than (to_date('3001-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss'))
( subpartition subp01 values(1) ,
subpartition subp_default values(default))
);
insert into range_list_tab_inter_dd values(to_date('3001-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),1);
insert into range_list_tab_inter_dd values(to_date('3001-02-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),1);
insert into range_list_tab_inter_dd values(to_date('3001-03-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),1);
insert into range_list_tab_inter_dd values(to_date('3001-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),111);
insert into range_list_tab_inter_dd values(to_date('3001-02-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),222);
insert into range_list_tab_inter_dd values(to_date('3001-03-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),333);
insert into range_list_tab_inter_dd values(to_date('3001-03-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),444);
insert into range_list_tab_inter_dd values(to_date('3001-03-01 22:00:00','yyyy-mm-dd hh24:mi:ss'),555);
select t1.table_name,
t1.partition_position,
t1.partition_name,
t2.subpartition_position,
t2.subpartition_name
from user_tab_partitions t1, user_tab_subpartitions t2
where t1.table_name = t2.table_name
and t1.table_name = 'RANGE_LIST_TAB_INTER'
order by t1.partition_position asc,t2.subpartition_position asc;
select * from user_tab_subpartitions where table_name = 'RANGE_LIST_TAB_INTER_DD'
--按月自動分區
drop table range_list_tab_inter_mm purge;
delete from range_list_tab_inter_mm ;
create table range_list_tab_inter_mm
(n1 date,n2 number)
partition by range(n1) --指定 主分區 以 n1 字段做 range 分區
interval(numtoyminterval(1,'month')) --指定主分區的擴展方式
subpartition by list(n2) --指定 子分區 以 n2 字段 做 list 分區
(partition p01 values less than (to_date('3001-01-01 22:00:00','yyyy-mm-dd hh24:mi:ss')) --指定主分區1的上限
( subpartition subp01 values(1) , --指定子分區1 的 值
subpartition subp_default values(default)) --指定子分區 的 默認值,保證所有數據都可以入庫
);
insert into range_list_tab_inter_mm values(to_date('3001-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'),1);
insert into range_list_tab_inter_mm values(to_date('3001-02-01 00:00:00','yyyy-mm-dd hh24:mi:ss'),1);
insert into range_list_tab_inter_mm values(to_date('3001-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss'),3);
select t1.table_name,
t1.partition_position,
t1.partition_name,
t2.subpartition_position,
t2.subpartition_name
from user_tab_partitions t1, user_tab_subpartitions t2
where t1.table_name = t2.table_name
and t1.table_name = 'RANGE_LIST_TAB_INTER_MM'
order by t1.partition_position asc,t2.subpartition_position asc;