Oracle中分区汇总
2015-06-25 18:22
435 查看
CREATE TABLE "VGOPDW"."TDW_READ_CHAPTER_VISIT_CDR_D"
( "STATIS_MONTH" NUMBER(6,0),
"STATIS_DATE" NUMBER(8,0),
"USER_SERV_NUMBER" NUMBER(12,0),
"LAST_2_NUM" NUMBER(2,0) GENERATED ALWAYS AS (TO_NUMBER(SUBSTR(TO_CHAR("USER_SERV_NUMBER"),-2))) VIRTUAL VISIBLE NOT NULL ENABLE
--虚拟字段
)
TABLESPACE "TBS_DW"
PARTITION BY LIST ("STATIS_DATE")
SUBPARTITION BY LIST ("LAST_2_NUM")
SUBPARTITION TEMPLATE ( SUBPARTITION "N_00" VALUES ( '0' ) )
(PARTITION "D_VISIT_CDR_D_20140708" VALUES (20140708)
,
PARTITION "D_VISIT_CDR_D_20140709" VALUES (20140709)
,
PARTITION "D_VISIT_CDR_D_20140710" VALUES (20140710)
)
;
4)组合分区(partition by xxx subpartition by xxx)
假如我们现在有10W本月刊类杂志提供给消费者查看和购买,我们如何做分区合适呢?首先我们可以先将图书根据种类进行分区,
然后再对每个分区进行月份的分区,这样对于大量的图书而言,我们就可以根据实际的业务需要,将一大堆数据通过分区拆解为若
干个小标进行管理,从而降低了管理的粒度,做到“精细化管理”。
下面是一个进行组合分区的例子:
--删除测试表
DROP TABLE PART_BOOK_CHENZW PURGE;
--创建列表-范围组合分区
CREATE TABLE PART_BOOK_CHENZW(
BOOK_ID NUMBER(20) PRIMARY KEY,
BOOK_DATE DATE,
BOOK_TYPE NUMBER(2) NOT NULL,
BOOK_DESC VARCHAR2(20)
)
PARTITION BY LIST(BOOK_TYPE)
SUBPARTITION BY RANGE(BOOK_DATE)
SUBPARTITION TEMPLATE
(
SUBPARTITION PART_LOG_01 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_02 VALUES LESS THAN (TO_DATE('2013-03-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_03 VALUES LESS THAN (TO_DATE('2013-05-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_04 VALUES LESS THAN (TO_DATE('2013-07-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_05 VALUES LESS THAN (TO_DATE('2013-09-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_06 VALUES LESS THAN (TO_DATE('2013-10-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_07 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA
)
(
PARTITION PART_BOOK_01 VALUES(0) TABLESPACE DATA,
PARTITION PART_BOOK_02 VALUES(1) TABLESPACE DATA,
PARTITION PART_BOOK_03 VALUES(2) TABLESPACE DATA,
PARTITION PART_BOOK_04 VALUES(3) TABLESPACE DATA
);
添加子分区:
ALTER TABLE vgopdw.TDW_MDO_USER_VISIT_D MODIFY PARTITION M_MDO_USER_VISIT_201407 ADD SUBPARTITION D_MDO_USER_VISIT_20140702 VALUES (20140702);
清空分区:
ALTER TABLE A TRUNCATE PARTITION P_A ;
清空子分区:
alter table vgopdw.TDW_MM_USE_MUSIC_BUSI_D truncate subpartition D_USE_MUSIC_BUSI_20140801;
删除子分区:
ALTER TABLE vgopdw.TDW_MDO_USER_VISIT_D DROP SUBPARTITION D_MDO_USER_VISIT_20140702;
重命名分区:
ALTER TABLE VGOPDW.TDW_MDO_USER_VISIT_D RENAME PARTITION M_USER_VISIT_20140701 TO M_MDO_USER_VISIT_201407;
ALTER TABLE VGOPDW.TDW_MDO_USER_ORDER_APP_D RENAME SUBPARTITION M_USER_VISIT_20140701 TO D_MDO_USER_ORDER_APP_20140701;
( "STATIS_MONTH" NUMBER(6,0),
"STATIS_DATE" NUMBER(8,0),
"USER_SERV_NUMBER" NUMBER(12,0),
"LAST_2_NUM" NUMBER(2,0) GENERATED ALWAYS AS (TO_NUMBER(SUBSTR(TO_CHAR("USER_SERV_NUMBER"),-2))) VIRTUAL VISIBLE NOT NULL ENABLE
--虚拟字段
)
TABLESPACE "TBS_DW"
PARTITION BY LIST ("STATIS_DATE")
SUBPARTITION BY LIST ("LAST_2_NUM")
SUBPARTITION TEMPLATE ( SUBPARTITION "N_00" VALUES ( '0' ) )
(PARTITION "D_VISIT_CDR_D_20140708" VALUES (20140708)
,
PARTITION "D_VISIT_CDR_D_20140709" VALUES (20140709)
,
PARTITION "D_VISIT_CDR_D_20140710" VALUES (20140710)
)
;
4)组合分区(partition by xxx subpartition by xxx)
假如我们现在有10W本月刊类杂志提供给消费者查看和购买,我们如何做分区合适呢?首先我们可以先将图书根据种类进行分区,
然后再对每个分区进行月份的分区,这样对于大量的图书而言,我们就可以根据实际的业务需要,将一大堆数据通过分区拆解为若
干个小标进行管理,从而降低了管理的粒度,做到“精细化管理”。
下面是一个进行组合分区的例子:
--删除测试表
DROP TABLE PART_BOOK_CHENZW PURGE;
--创建列表-范围组合分区
CREATE TABLE PART_BOOK_CHENZW(
BOOK_ID NUMBER(20) PRIMARY KEY,
BOOK_DATE DATE,
BOOK_TYPE NUMBER(2) NOT NULL,
BOOK_DESC VARCHAR2(20)
)
PARTITION BY LIST(BOOK_TYPE)
SUBPARTITION BY RANGE(BOOK_DATE)
SUBPARTITION TEMPLATE
(
SUBPARTITION PART_LOG_01 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_02 VALUES LESS THAN (TO_DATE('2013-03-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_03 VALUES LESS THAN (TO_DATE('2013-05-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_04 VALUES LESS THAN (TO_DATE('2013-07-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_05 VALUES LESS THAN (TO_DATE('2013-09-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_06 VALUES LESS THAN (TO_DATE('2013-10-01','YYYY-MM-DD')) TABLESPACE DATA,
SUBPARTITION PART_LOG_07 VALUES LESS THAN (MAXVALUE) TABLESPACE DATA
)
(
PARTITION PART_BOOK_01 VALUES(0) TABLESPACE DATA,
PARTITION PART_BOOK_02 VALUES(1) TABLESPACE DATA,
PARTITION PART_BOOK_03 VALUES(2) TABLESPACE DATA,
PARTITION PART_BOOK_04 VALUES(3) TABLESPACE DATA
);
添加子分区:
ALTER TABLE vgopdw.TDW_MDO_USER_VISIT_D MODIFY PARTITION M_MDO_USER_VISIT_201407 ADD SUBPARTITION D_MDO_USER_VISIT_20140702 VALUES (20140702);
清空分区:
ALTER TABLE A TRUNCATE PARTITION P_A ;
清空子分区:
alter table vgopdw.TDW_MM_USE_MUSIC_BUSI_D truncate subpartition D_USE_MUSIC_BUSI_20140801;
删除子分区:
ALTER TABLE vgopdw.TDW_MDO_USER_VISIT_D DROP SUBPARTITION D_MDO_USER_VISIT_20140702;
重命名分区:
ALTER TABLE VGOPDW.TDW_MDO_USER_VISIT_D RENAME PARTITION M_USER_VISIT_20140701 TO M_MDO_USER_VISIT_201407;
ALTER TABLE VGOPDW.TDW_MDO_USER_ORDER_APP_D RENAME SUBPARTITION M_USER_VISIT_20140701 TO D_MDO_USER_ORDER_APP_20140701;
相关文章推荐
- Oracle中的sqlldr
- Oracle中的去重
- Oracle中的锁
- Oracle中创建数据库链接
- Oracle中RAC Failover 详解
- Oracle--正则表达式常用例子汇总
- Oracle--正则表达式例子
- Oracle中Blob转换成Clob
- Oracle中的排序
- {"未能从程序集“Oracle.ManagedDataAccess, OracleInternal.Common.ConfigBaseClass”。":"OracleInternal.Common.C
- 安装配置Oracle数据库时的一些处理思路
- Oracle中的小知识
- 查看Oracle执行计划的几种方法
- Oracle中的导入导出
- Oracle 字符集的查看和修改
- Oracle中的pctfree和pctused
- Oracle中的initrans-maxtrans
- Oracle中的Hash Join祥解
- Oracle 基础篇 --- 用户权限
- Oracle中的动态性能视图