我的建表语句:
CREATE TABLE O_APACHE_LOG_ZYTMP
(
PLATFORMID NUMBER(3),
PRODUCTID NUMBER(5),
IP VARCHAR2(15 BYTE),
DEAL_DATE DATE,
SUB_PATH VARCHAR2(500 BYTE),
URL_PARA VARCHAR2(500 BYTE),
REQ_CODE NUMBER(8),
SEND_BYTE NUMBER(12),
UAID VARCHAR2(50 BYTE),
UASTR VARCHAR2(200 BYTE),
GATEWAY VARCHAR2(200 BYTE),
MSISDN VARCHAR2(11 BYTE),
MID VARCHAR2(14 BYTE),
CITYID NUMBER(5),
PROVINCEID NUMBER(5),
DOMAIN_NAME VARCHAR2(50 BYTE),
VISIT_PERIOD NUMBER(2),
FN01 VARCHAR2(200 BYTE),
FN02 VARCHAR2(20 BYTE),
FN03 VARCHAR2(50 BYTE),
FN04 VARCHAR2(20 BYTE),
FN05 VARCHAR2(20 BYTE),
FN06 VARCHAR2(20 BYTE),
FN07 VARCHAR2(20 BYTE),
FN08 VARCHAR2(20 BYTE),
FN09 VARCHAR2(20 BYTE),
FN10 VARCHAR2(20 BYTE),
FN11 VARCHAR2(20 BYTE),
FN12 VARCHAR2(20 BYTE),
FC01 VARCHAR2(20 BYTE),
FC02 VARCHAR2(20 BYTE),
FC03 VARCHAR2(20 BYTE),
FC04 VARCHAR2(20 BYTE),
FC05 VARCHAR2(20 BYTE),
FC06 VARCHAR2(20 BYTE),
FC07 VARCHAR2(20 BYTE),
FC08 VARCHAR2(20 BYTE),
FC09 VARCHAR2(20 BYTE),
FC10 VARCHAR2(20 BYTE),
FC11 VARCHAR2(20 BYTE),
FC12 VARCHAR2(20 BYTE),
FC13 VARCHAR2(20 BYTE),
FC14 VARCHAR2(20 BYTE),
PIC_FLAG NUMBER(1),
BRAND_ID NUMBER(1),
PID VARCHAR2(3)
)
TABLESPACE TBS_DW01
PCTFREE 10
INITRANS 1
MAXTRANS 255
PARTITION BY RANGE (DEAL_DATE)
SUBPARTITION BY HASH (PID)
( PARTITION P20080101 VALUES LESS THAN (TO_DATE(' 2008-01-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
NOLOGGING
TABLESPACE TBS_DW01
PCTFREE 0
INITRANS 1
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT
)
SUBPARTITIONS 8 STORE IN (TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01),
。。。。。。
PARTITION P20080630 VALUES LESS THAN (TO_DATE(' 2008-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
NOLOGGING
TABLESPACE TBS_DW01
PCTFREE 0
INITRANS 1
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT
)
SUBPARTITIONS 8 STORE IN (TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01,TBS_DW01)
)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
基本上就是这个吧,当然也是照别人抄的。
我特别想直接用一下subpartition结果发现不管我怎么写都得不到。
select * from o_apache_log_zytmp subpartition (p00)这样天真的想法我一上午都沉醉其中,后来仔细查书才发现丢人丢大了。以下的做法才是正途!
select table_name,partition_name,subpartition_name,tablespace_name from user_tab_subpartitions
where table_name='O_APACHE_LOG_ZYTMP'
表的结果截取:
TABLE_NAME PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME
1 O_APACHE_LOG_ZYTMP P20080630 SYS_SUBP25421 TBS_DW01
2 O_APACHE_LOG_ZYTMP P20080630 SYS_SUBP25422 TBS_DW01
3 O_APACHE_LOG_ZYTMP P20080630 SYS_SUBP25423 TBS_DW01
4 O_APACHE_LOG_ZYTMP P20080630 SYS_SUBP25424 TBS_DW01
5 O_APACHE_LOG_ZYTMP P20080630 SYS_SUBP25425 TBS_DW01
6 O_APACHE_LOG_ZYTMP P20080630 SYS_SUBP25426 TBS_DW01
终于明白自己有多白痴了,突然想明白这样建表不好!我换
我想换成create table 的时候 SUBPARTITION TEMPLATE(SUBPARTITION sp1 TABLESPACE TBS_DW01) 这样的,因为这样得到的SUBPARTITION_NAME是有规律的,我可以写到sql语句里。关于SUBPARTITION TEMPLATE我将粘一篇别人写的网志作为说明。
来源:http://zhaoyan0922-photo.blog.163.com/blog/static/26238441200812852518464/