學習ORACLE-分區表的使用(1)——分區表的基本操作

對分區表的使用做一個簡單的記錄。
創建簡單的範圍分區表

CREATE TABLE PART_TABLENAME (
    COLUMN_1 NUMBER(20),
    COLUMN_2 VARCHAR2(10),
    COLUMN_3 DATE)
    PARTITION BY RANGE(COLUMN_3)
    (
    PARTITION P_201801 VALUES LESS THAN (TO_DATE('2018-02-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS,
    PARTITION P_201802 VALUES LESS THAN (TO_DATE('2018-03-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS,
    PARTITION P_201803 VALUES LESS THAN (TO_DATE('2018-04-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS,
    PARTITION P_201804 VALUES LESS THAN (TO_DATE('2018-05-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS,
    PARTITION P_201805 VALUES LESS THAN (TO_DATE('2018-06-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS,
    PARTITION P_201806 VALUES LESS THAN (TO_DATE('2018-07-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS,
    PARTITION P_MAX VALUES LESS THAN (MAXVALUE) TABLESPACE USERS
    );

TRUNCATE指定分區

ALTER TABLE PART_TABLENAME  TRUNCATE PARTITION P_201802 REUSE STORAGE;--空間不回收,且只能被本表使用
ALTER TABLE PART_TABLENAME  TRUNCATE PARTITION P_201802 DROP STORAGE;--空間回收,可以被其他表使用

DROP指定分區

ALTER TABLE PART_TABLENAME DROP PARTITION P_201801;

注意:如果刪除的分區不是最後一個分區,則不能重新添加被刪除的分區
追加新分區

  1. 如果有最大分區需要先刪除最大分區
    ALTER TABLE PART_TABLENAME DROP PARTITION P_MAX;
  2. 添加新分區
    ALTER TABLE PART_TABLENAME ADD PARTITION P_201807 VALUES LESS THAN (TO_DATE('2018-08-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR=GREGORIAN')) TABLESPACE USERS;
  3. 重新添加最大分區
    ALTER TABLE PART_TABLENAME ADD PARTITION P_MAX VALUES LESS THAN (MAXVALUE) TABLESPACE USERS;

交換分區
修改了數據字典,沒有移動數據

  1. 創建同結構的包含符合特定分區條件的普通表
    CREATE TABLE TABLENAME_201804 AS SELECT * FROM PART_TABLENAME WHERE 1=2;
  2. 向普通表中插入一條符合分區條件的測試數據
    INSERT INTO TABLENAME_201804 VALUES(123,'HHH',DATE'2018-4-25');
  3. 實施分區交換
    ALTER TABLE PART_TABLENAME EXCHANGE PARTITION P_201804 WITH TABLE TABLENAME_201804;
  4. 驗證數據是否導入
    SELECT COUNT(*) FROM PART_TABLENAME;

拆分分區

  1. 向分區表插入一條測試數據
    INSERT INTO PART_TABLENAME VALUES(124,'HHH',DATE'2018-4-10');
  2. 現分區P_201804中共兩條數據
    SELECT * FROM PART_TABLENAME PARTITION (P_201804);
COLUMN_1 COLUMN_2 COLUMN_3
124 HHH 2018/4/10
123 HHH 2018/4/25
  1. 拆分分區P_201804
ALTER TABLE PART_TABLENAME SPLIT PARTITION P_201804 
    AT (TO_DATE('2018-04-15','YYYY-MM-DD')) 
    INTO (PARTITION P_201804_01, PARTITION P_201804_02);
  1. 分別查詢拆分後的分區

SELECT * FROM PART_TABLENAME PARTITION (P_201804_01);

COLUMN_1 COLUMN_2 COLUMN_3
124 HHH 2018/4/10

SELECT * FROM PART_TABLENAME PARTITION (P_201804_02);

COLUMN_1 COLUMN_2 COLUMN_3
123 HHH 2018/4/25

合併分區

  1. 合併2個分區P_201804_01、P_201804_02到P_201804
    ALTER TABLE PART_TABLENAME MERGE PARTITIONS P_201804_01, P_201804_02 INTO PARTITION P_201804;
  2. 查看分區數據
    SELECT * FROM PART_TABLENAME PARTITION (P_201804);
COLUMN_1 COLUMN_2 COLUMN_3
124 HHH 2018/4/10
123 HHH 2018/4/25
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章