Oracle 11g下用模板建复合分区

   利用模板建复合分区大大的降低了脚本的复杂度,下面来做个试验:

--未使用模板的方法建复合分区

SQL> drop table test purge;

SQL> create table test
  (
   owner VARCHAR2(10),
   created date,
   object_name VARCHAR2(10),
   object_type VARCHAR2(20)
  )
  partition by range(created) subpartition by list(owner)
  (
    partition p_1 values less than(to_date('2012-01-01','yyyy-mm-dd'))
    (
     subpartition p_1_sub1 values('sys'),
     subpartition p_1_sub3 values('system'),
     subpartition p_1_sub5 values('test'),
     subpartition p_1_sub7 values('hr')
    ),
    partition p_2 values less than(to_date('2013-01-01','yyyy-mm-dd'))
    (
     subpartition p_2_sub1 values('sys'),
     subpartition p_2_sub3 values('system'),
     subpartition p_2_sub5 values('test'),
     subpartition p_2_sub7 values('hr')
    ),
    partition p_3 values less than(to_date('2014-01-01','yyyy-mm-dd'))
    (
     subpartition p_3_sub1 values('sys'),
     subpartition p_3_sub3 values('system'),
     subpartition p_3_sub5 values('test'),
     subpartition p_3_sub7 values('hr')
    ),
    partition p_other values less than(maxvalue)
    (
     subpartition p_other_sub1 values('sys'),
     subpartition p_other_sub3 values('system'),
     subpartition p_other_sub5 values('test'),
     subpartition p_other1_sub7 values('hr')
    )
  );
SQL> select s.partition_name
      from user_tab_partitions s
     where s.table_name = 'TEST';
PARTITION_NAME
------------------------------
P_1
P_2
P_3
P_OTHER

SQL> col PARTITION_NAME  format a10
SQL> select s.partition_name, s.subpartition_name
      from user_tab_subpartitions s
     where s.table_name = 'TEST';
PARTITION_ SUBPARTITION_NAME
---------- ------------------------------
P_1        P_1_SUB1
P_1        P_1_SUB3
P_1        P_1_SUB5
P_1        P_1_SUB7
P_2        P_2_SUB1
P_2        P_2_SUB3
P_2        P_2_SUB5
P_2        P_2_SUB7
P_3        P_3_SUB1
P_3        P_3_SUB3
P_3        P_3_SUB5
P_3        P_3_SUB7
P_OTHER    P_OTHER_SUB1
P_OTHER    P_OTHER_SUB3
P_OTHER    P_OTHER_SUB5
P_OTHER    P_OTHER1_SUB7

--使用模板的方法建复合分区
SQL> drop table test purge;
SQL> create table test
   (
    owner VARCHAR2(10),
    created date,
    object_name VARCHAR2(10),
    object_type VARCHAR2(20)
   )
   partition by range(created) subpartition by list(owner)
   subpartition template
   (
    subpartition sub1 values('sys'),
    subpartition sub3 values('system'),
    subpartition sub5 values('test'),
    subpartition sub7 values('hr')
   )

   (
     partition p_1 values less than(to_date('2012-01-01','yyyy-mm-dd')),
     partition p_2 values less than(to_date('2013-01-01','yyyy-mm-dd')),
     partition p_3 values less than(to_date('2014-01-01','yyyy-mm-dd')),
     partition p_other values less than(maxvalue)
   );


SQL> select s.partition_name
      from user_tab_partitions s
     where s.table_name = 'TEST';
PARTITION_
----------
P_1
P_2
P_3
P_OTHER


SQL> select s.partition_name, s.subpartition_name
      from user_tab_subpartitions s
     where s.table_name = 'TEST';
PARTITION_ SUBPARTITION_NAME
---------- ------------------------------
P_1        P_1_SUB1
P_1        P_1_SUB3
P_1        P_1_SUB5
P_1        P_1_SUB7
P_2        P_2_SUB1
P_2        P_2_SUB3
P_2        P_2_SUB5
P_2        P_2_SUB7
P_3        P_3_SUB1
P_3        P_3_SUB3
P_3        P_3_SUB5
P_3        P_3_SUB7
P_OTHER    P_OTHER_SUB1
P_OTHER    P_OTHER_SUB3
P_OTHER    P_OTHER_SUB5
P_OTHER    P_OTHER_SUB7
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值