创建子分区模板及使用subpartitions 方法快速添加子分区

转载 2016年08月30日 17:48:50

原文链接:http://blog.csdn.net/hj402555749/article/details/12097025

一、使用模板创建子分区

/*drop table T_LOCRECORD_HJ purge ;*/

create table T_LOCRECORD_HJ
(
  id            VARCHAR2(36) not null,
  device_id     VARCHAR2(256),
  latitude      FLOAT,
  longitude     FLOAT,
  jmx           VARCHAR2(20),
  jmy           VARCHAR2(20),
  speed         FLOAT,
  direction     FLOAT,
  height        FLOAT,
  distance      FLOAT,
  statllite_num NUMBER,
  gpstime       DATE,
  inputdate     DATE default SYSDATE not null,
  locate_type   VARCHAR2(1),
  coord_type    NUMBER,
  state         VARCHAR2(10),
  pos_desc      VARCHAR2(1000),
  obj_id        VARCHAR2(256),
  obj_type      VARCHAR2(20)
)
partition by range (INPUTDATE)
SUBPARTITION BY hash (device_id )
SUBPARTITION TEMPLATE

(
  subpartition p001  , 
  subpartition p002  , 
  subpartition p003  , 
  subpartition p004  , 
  subpartition p005  , 
  subpartition p006  , 
  subpartition p007  , 
  subpartition p008  , 
  subpartition p009  , 
  subpartition p010 
)

(
  partition PAR_2013_06_1 values less than (TO_DATE(' 2013-06-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_1 ,
  partition PAR_2013_06_2 values less than (TO_DATE(' 2013-06-21 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_2,
  partition PAR_2013_06_3 values less than (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_3,
  partition PAR_2013_07_1 values less than (TO_DATE(' 2013-07-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_1,
  partition PAR_2013_07_2 values less than (TO_DATE(' 2013-07-21 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_2,
  partition PAR_2013_07_3 values less than (TO_DATE(' 2013-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_3
);

这种方法创建的分区,在下次添加分区的时候会自动按照模版创建子分区,只需要按照如下方法添加即可:
alter table T_LOCRECORD_HJ add partition par_2013_08_01  values less than (TO_DATE(' 2013-08-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))  tablespace HIS_GPS_08_1 ; 

二、使用subpartition 的方法来创建子分区
/*drop table T_LOCRECORD_HJ purge ;*/

create table T_LOCRECORD_HJ
(
  id            VARCHAR2(36) not null,
  device_id     VARCHAR2(256),
  latitude      FLOAT,
  longitude     FLOAT,
  jmx           VARCHAR2(20),
  jmy           VARCHAR2(20),
  speed         FLOAT,
  direction     FLOAT,
  height        FLOAT,
  distance      FLOAT,
  statllite_num NUMBER,
  gpstime       DATE,
  inputdate     DATE default SYSDATE not null,
  locate_type   VARCHAR2(1),
  coord_type    NUMBER,
  state         VARCHAR2(10),
  pos_desc      VARCHAR2(1000),
  obj_id        VARCHAR2(256),
  obj_type      VARCHAR2(20)
)
partition by range (INPUTDATE)
SUBPARTITION BY hash (device_id )  subpartitions 100
(
  partition PAR_2013_06_1 values less than (TO_DATE(' 2013-06-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_1 ,
  partition PAR_2013_06_2 values less than (TO_DATE(' 2013-06-21 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_2,
  partition PAR_2013_06_3 values less than (TO_DATE(' 2013-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_06_3,
  partition PAR_2013_07_1 values less than (TO_DATE(' 2013-07-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_1,
  partition PAR_2013_07_2 values less than (TO_DATE(' 2013-07-21 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_2,
  partition PAR_2013_07_3 values less than (TO_DATE(' 2013-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace HIS_GPS_07_3
);

这种方法创建子分区的好处就是在初次创建分区的时候不用手动的去指点复杂的子分区规则,dbms 会根据subpartitions 后面的值创建出相应
个数的子分区。
这种方法的弊端就是在每次添加分区的时候,需要在每一个语句后面都要带上 subpatitions number  这样的参数。如:

alter table T_LOCRECORD_HJ130818 add partition  PAR_2013_09_1 values  less than (TO_DATE(' 2013-09-11 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))    tablespace HIS_GPS_09_1 subpartitions 100 ; 




----------------
list  子分区例子:
create table T_ORDER_COMMAND_XL
(
  id                   VARCHAR2(100) not null,
  command_type         NUMBER(4) not null,
  create_time          TIMESTAMP(6) not null,
  order_logistics_code VARCHAR2(100),
  order_channel_code   VARCHAR2(20),
  status               NUMBER(4) not null,
  is_offline           NUMBER(1),
  command_content      CLOB not null
)
partition by range (CREATE_TIME)
subpartition by list (COMMAND_TYPE)
SUBPARTITION TEMPLATE
(
    subpartition PAR_1001_10 values (10) tablespace TS_ORD,
    subpartition PAR_1001_DFT values (DEFAULT) tablespace TS_ORD
)
(
  partition PAR_2013_10_1 values less than (TO_DATE(' 2013-10-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TS_ORD ,
  partition PAR_2013_10_2 values less than (TO_DATE(' 2013-10-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TS_ORD
);


alter table T_ORD_ORDER_COMMAND_XL add partition  PAR_2013_10_3 values less than (TO_DATE(' 2013-10-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace TS_ORD ;

深入解析MySQL分区(Partition)功能

自5.1开始对分区(Partition)有支持 = 水平分区(根据列属性按行分)= 举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。 =...
  • xiangshui021
  • xiangshui021
  • 2016年07月23日 19:20
  • 553

深入解析MySQL分区(Partition)功能

自5.1开始对分区(Partition)有支持,6.0应比较稳定 = 水平分区(根据列属性按行分)= 举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录...
  • tjcyjd
  • tjcyjd
  • 2013年09月06日 14:49
  • 92284

创建子分区模板及使用subpartitions 方法快速添加子分区

一、使用模板创建子分区 /*drop table T_LOCRECORD_HJ purge ;*/ create table T_LOCRECORD_HJ (   id          ...
  • e_wsq
  • e_wsq
  • 2014年09月01日 13:35
  • 375

创建子分区表 partition by subpartition by

-- Create table create table TF_DBD_SALE_HOSP_STRUC_U (   STATS_DT          NUMBER(8) not null,   SA...
  • hellojoy
  • hellojoy
  • 2016年01月14日 14:40
  • 713

Oracle子分区(sub partition)操作

要重新定义大量分区表。 首先看 SQL Reference 大致了解了 Oracle 的分区修改操作。Alter table 语句的alter_table_partitioning 子句可以分为以下...
  • kolabb
  • kolabb
  • 2015年03月24日 17:39
  • 4307

Hive 修改表添加分区(add partition)和 加载数据时添加分区 的区别

假定有hive中有两个表empl_inn(管理表)和empl_ext(外部表),他们都有分区(logdate string); 1.对于外部表 empl_ext        alter tabl...
  • KNIFE_PAN
  • KNIFE_PAN
  • 2015年02月26日 15:17
  • 15558

添加表分区

http://shuangoracle.itpub.net/post/42649/505018     一、增加表分区(add partition) 增加表分区适用于所有的分区形式,语法是:a...
  • jinwanmeng
  • jinwanmeng
  • 2012年10月15日 15:29
  • 7059

为ORACLE分区表添加新分区

列表分区表要先删掉,边界分区: 1> ALTER TABLE N_F_ORDER  DROP PARTITION PDEFAULT;   ---删除默认分区    2>ALTER TABLE N...
  • lively1982
  • lively1982
  • 2014年01月02日 14:10
  • 22992

实验: oracle增加子分区的办法

要为一个已有分区(如clah_201110)增加子分区,发现只能一个个加,好麻烦呀,如下代码。不知道大家有没有什么好办法。当然对没有分区,可以一起加上分区与子分区。看来分区前来是规划好是重要的。 a...
  • huang_xw
  • huang_xw
  • 2012年03月11日 21:25
  • 9918

创建子分区模板及使用subpartitions 方法快速添加子分区

原文链接:http://blog.csdn.net/hj402555749/article/details/12097025 一、使用模板创建子分区 /*drop table T_LOCRECOR...
  • jarniyy
  • jarniyy
  • 2016年08月30日 17:48
  • 479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建子分区模板及使用subpartitions 方法快速添加子分区
举报原因:
原因补充:

(最多只允许输入30个字)