天天看點

oracle中分區建表less,學習筆記:Oracle分區表 詳細介紹5種分區表的建立管理方法...

天萃荷淨

學習記錄關于Oracle 5種分區表的建立、管理等方法案例

1.Oracle分區表之範圍分區

範圍分區将資料基于範圍映射到每一個分區,這個範圍是你在建立分區時指定的分區鍵決定的。

--例一取值範圍:

CREATE TABLE CUSTOMER

(

CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

FIRST_NAME VARCHAR2(30) NOT NULL,

LAST_NAME VARCHAR2(30) NOT NULL,

PHONE VARCHAR2(15) NOT NULL,

EMAIL VARCHAR2(80),

STATUS CHAR(1)

)

PARTITION BY RANGE (CUSTOMER_ID)

(

PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01,

PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02,

PARTITION CUS_PART3 VALUES LESS THEN (MAXVALUE) TABLESPACE CUS_TS02

)

--例二按時間劃分(随着時間的增長,還需要添加分區表):

CREATE TABLE ORDER_ACTIVITIES

(

ORDER_ID NUMBER(7) NOT NULL,

ORDER_DATE DATE,

TOTAL_AMOUNT NUMBER,

CUSTOTMER_ID NUMBER(7),

PAID CHAR(1)

)

PARTITION BY RANGE (ORDER_DATE)

(

PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE('01- MAY -2003','DD-MON-YYYY')) TABLESPACE ORD_TS01,

PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02,

PARTITION ORD_ACT_PART03 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03

)

2.Oracle分區表之清單分區

該分區的特點是某列的值隻有幾個,基于這樣的特點我們可以采用清單分區。

--這個是我在自己電腦上測試的執行個體,一個sql競賽的資料庫中的資料

create table p_t2(a1 number,a2 varchar2(10),a3 varchar2(30),a4 varchar2(10),a5 number)

partition by list(a2)

(partition p_tcp values('tcp') tablespace p1,

partition p_udp values('udp') tablespace p2,

partition p_icmp values('icmp') tablespace p3)

3.Oracle分區表之散列分區

這類分區是在列值上使用雜湊演算法,以确定将行放入哪個分區中。當列的值沒有合适的條件時,建議使用散列分區。

散列分區為通過指定分區編号來均勻分布資料的一種分區類型,因為通過在I/O裝置上進行散列分區,使得這些分區大小一緻。

CREATE TABLE HASH_TABLE

(

COL NUMBER(8),

INF VARCHAR2(100)

)

PARTITION BY HASH (COL)

(

PARTITION PART01 TABLESPACE HASH_TS01,

PARTITION PART02 TABLESPACE HASH_TS02,

PARTITION PART03 TABLESPACE HASH_TS03

)

--簡寫:

CREATE TABLE emp

(

empno NUMBER (4),

ename VARCHAR2 (30),

sal NUMBER

)

PARTITION BY HASH (empno) PARTITIONS 8

STORE IN (emp1,emp2,emp3,emp4,emp5,emp6,emp7,emp8);

4.Oracle分區表之組合範圍散列分區

這種分區是基于範圍分區和清單分區,表首先按某列進行範圍分區,然後再按某列進行清單分區,分區之中的分區被稱為子分區。

CREATE TABLE SALES

(

PRODUCT_ID VARCHAR2(5),

SALES_DATE DATE,

SALES_COST NUMBER(10),

STATUS VARCHAR2(20)

)

PARTITION BY RANGE(SALES_DATE) SUBPARTITION BY LIST (STATUS)

(

PARTITION P1 VALUES LESS THAN(TO_DATE('2003-01-01','YYYY-MM-DD'))TABLESPACE rptfact2009

(

SUBPARTITION P1SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,

SUBPARTITION P1SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009

),

PARTITION P2 VALUES LESS THAN (TO_DATE('2003-03-01','YYYY-MM-DD')) TABLESPACE rptfact2009

(

SUBPARTITION P2SUB1 VALUES ('ACTIVE') TABLESPACE rptfact2009,

SUBPARTITION P2SUB2 VALUES ('INACTIVE') TABLESPACE rptfact2009

)

)

5.Oracle分區表之複合範圍散列分區

這種分區是基于範圍分區和散列分區,表首先按某列進行範圍分區,然後再按某列進行散列分區。

create table dinya_test

(

transaction_id number primary key,

item_id number(8) not null,

item_description varchar2(300),

transaction_date date

)

partition by range(transaction_date)subpartition by hash(transaction_id) subpartitions 3 store in (dinya_space01,dinya_space02,dinya_space03)

(

partition part_01 values less than(to_date(‘2006-01-01’,’yyyy-mm-dd’)),

partition part_02 values less than(to_date(‘2010-01-01’,’yyyy-mm-dd’)),

partition part_03 values less than(maxvalue)

);

--------------------------------------ORACLE-DBA----------------------------------------

最權威、專業的Oracle案例資源彙總之學習筆記:Oracle分區表 詳細介紹5種分區表的建立管理方法