​ oracle分區表(附帶按照月自動分區、按天自動分區)






--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;

















免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM