Home

Tuesday, March 20, 2012

Membuat Tabel partisi berdasarkan tanggal dan sub partisi berdasarkan jam

Saya pernah mendapat permintaan dari manajemen untuk memecahkan  masalah query data di tabel yang di partisi dimana mereka ingin bisa melakukan query bukan hanya berdasarkan tanggal saja (dimana tabelnya memamng di partisi berdasarkan tanggal seperti kebanyakan tabel-tabel lainnya), nah saat query di lakukan berdasarkan partisi  waktu yang di perlukan cukup lama mengingat data yang sangat besar . untuk mengakali hal ini maka saya buat sub partisi berdasarkan jam untuk meminimalisasi range data yang akan di query  sehingga query akan lebih cepat karena di query ke level sub partisi (sub partisi berdasarkan jam ). berikut ini contoh sederhana untuk membuat partisi berdasarkan tanggal dan sub partisi berdasarkan jam :

CREATE TABLE SCOTT.BEBEK99
(
  Nomor    NUMBER,
  Timestamps  DATE,
  JAM       CHAR(2 BYTE)
)
TABLESPACE USERS
PCTUSED    0
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
            BUFFER_POOL      DEFAULT
           )
PARTITION BY RANGE (timestamps)
SUBPARTITION BY LIST (JAM)

  PARTITION P1 VALUES LESS THAN (TO_DATE(' 2011-07-07 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    NOLOGGING
    NOCOMPRESS
    TABLESPACE USERS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                BUFFER_POOL      DEFAULT
               )
  ( SUBPARTITION P1_SP1 VALUES ('00')      TABLESPACE USERS,
    SUBPARTITION P1_SP2 VALUES ('01')      TABLESPACE USERS,
    SUBPARTITION P1_SP3 VALUES ('02')      TABLESPACE USERS,
    SUBPARTITION P1_SP4 VALUES ('03')      TABLESPACE USERS,
    SUBPARTITION P1_SP5 VALUES ('04')      TABLESPACE USERS,
    SUBPARTITION P1_SP6 VALUES ('O5')      TABLESPACE USERS,
    SUBPARTITION P1_SP7 VALUES ('06')      TABLESPACE USERS,
    SUBPARTITION P1_SP8 VALUES ('07')      TABLESPACE USERS,
    SUBPARTITION P1_SP9 VALUES ('08')      TABLESPACE USERS,
    SUBPARTITION P1_SP10 VALUES ('09')      TABLESPACE USERS,
    SUBPARTITION P1_SP11 VALUES ('10')      TABLESPACE USERS,
    SUBPARTITION P1_SP12 VALUES ('11')      TABLESPACE USERS,
    SUBPARTITION P1_SP13 VALUES ('12')      TABLESPACE USERS,
    SUBPARTITION P1_SP14 VALUES ('13')      TABLESPACE USERS,
    SUBPARTITION P1_SP15 VALUES ('14')      TABLESPACE USERS,
    SUBPARTITION P1_SP16 VALUES ('15')      TABLESPACE USERS,
    SUBPARTITION P1_SP17 VALUES ('16')      TABLESPACE USERS,
    SUBPARTITION P1_SP18 VALUES ('17')      TABLESPACE USERS,
    SUBPARTITION P1_SP19 VALUES ('18')      TABLESPACE USERS,
    SUBPARTITION P1_SP20 VALUES ('19')      TABLESPACE USERS,
    SUBPARTITION P1_SP21 VALUES ('20')      TABLESPACE USERS,
    SUBPARTITION P1_SP22 VALUES ('21')      TABLESPACE USERS,
    SUBPARTITION P1_SP23 VALUES ('22')      TABLESPACE USERS,
    SUBPARTITION P1_SP24 VALUES ('23')      TABLESPACE USERS ), 
  PARTITION P2 VALUES LESS THAN (TO_DATE(' 2011-07-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
    NOLOGGING
    NOCOMPRESS
    TABLESPACE USERS
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    STORAGE    (
                BUFFER_POOL      DEFAULT
               )
  ( SUBPARTITION P2_SP1 VALUES ('00')      TABLESPACE USERS,
    SUBPARTITION P2_SP2 VALUES ('01')      TABLESPACE USERS,
    SUBPARTITION P2_SP3 VALUES ('02')      TABLESPACE USERS,
    SUBPARTITION P2_SP4 VALUES ('03')      TABLESPACE USERS,
    SUBPARTITION P2_SP5 VALUES ('04')      TABLESPACE USERS,
    SUBPARTITION P2_SP6 VALUES ('O5')      TABLESPACE USERS,
    SUBPARTITION P2_SP7 VALUES ('06')      TABLESPACE USERS,
    SUBPARTITION P2_SP8 VALUES ('07')      TABLESPACE USERS,
    SUBPARTITION P2_SP9 VALUES ('08')      TABLESPACE USERS,
    SUBPARTITION P2_SP10 VALUES ('09')      TABLESPACE USERS,
    SUBPARTITION P2_SP11 VALUES ('10')      TABLESPACE USERS,
    SUBPARTITION P2_SP12 VALUES ('11')      TABLESPACE USERS,
    SUBPARTITION P2_SP13 VALUES ('12')      TABLESPACE USERS,
    SUBPARTITION P2_SP14 VALUES ('13')      TABLESPACE USERS,
    SUBPARTITION P2_SP15 VALUES ('14')      TABLESPACE USERS,
    SUBPARTITION P2_SP16 VALUES ('15')      TABLESPACE USERS,
    SUBPARTITION P2_SP17 VALUES ('16')      TABLESPACE USERS,
    SUBPARTITION P2_SP18 VALUES ('17')      TABLESPACE USERS,
    SUBPARTITION P2_SP19 VALUES ('18')      TABLESPACE USERS,
    SUBPARTITION P2_SP20 VALUES ('19')      TABLESPACE USERS,
    SUBPARTITION P2_SP21 VALUES ('20')      TABLESPACE USERS,
    SUBPARTITION P2_SP22 VALUES ('21')      TABLESPACE USERS,
    SUBPARTITION P2_SP23 VALUES ('22')      TABLESPACE USERS,
    SUBPARTITION P2_SP24 VALUES ('23')      TABLESPACE USERS )
)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;

Cara untuk test tabelnya
-----------------------------------------------
insert into bebek99 values (1,sysdate,convert_timestamp)
select * from bebek99
select * from bebek99 partition (p1)
select * from bebek99 subpartition (p1_sp16)

No comments:

Post a Comment