首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 8 分區表管理完整指南:建立、擴充、維護與匯入匯出

     編輯:Oracle 資料庫相關知識

分區表核心優勢

  • 可用性增強:單分區故障不影響其他分區
  • 停機時間縮減:僅修復受損分區
  • 維護輕量化:分區級重建索引、收集統計
  • I/O 平衡:分區分散不同磁碟/表空間
  • 效能提升:分區修剪、平行查詢、平行 DML
  • 應用透明:SQL 無需修改即享受分區效益

範圍分區表建立實戰

銷售記錄表按季度分區,每月 30MB,每季 100MB 表空間:

-- 1. 建立四季表空間
CREATE TABLESPACE ts_sale1999q1 DATAFILE '/u1/oradata/sales/sales1999_q1.dat' 
    SIZE 100M DEFAULT STORAGE (INITIAL 30M NEXT 30M MINEXTENTS 3 PCTINCREASE 0);
... (q2, q3, q4 同理)

-- 2. 建立範圍分區表
CREATE TABLE sales (
    invoice_no NUMBER,
    sale_date  DATE NOT NULL,
    ...
) PARTITION BY RANGE (sale_date) (
    PARTITION sales1999_q1 VALUES LESS THAN (TO_DATE('1999-04-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q1,
    PARTITION sales1999_q2 VALUES LESS THAN (TO_DATE('1999-07-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q2,
    PARTITION sales1999_q3 VALUES LESS THAN (TO_DATE('1999-10-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q3,
    PARTITION sales1999_q4 VALUES LESS THAN (TO_DATE('2000-01-01','YYYY-MM-DD')) TABLESPACE ts_sale1999q4
);

分區生命週期管理

新增分區(年度擴充)

ALTER TABLE sales ADD PARTITION sales2000_q1 
    VALUES LESS THAN (TO_DATE('2000-04-01','YYYY-MM-DD')) TABLESPACE ts_sale2000q1;

刪除分區(資料歸檔)

ALTER TABLE sales DROP PARTITION sales1999_q1;
-- OS 層面刪除資料檔
rm /u1/oradata/sales/sales1999_q1.dat

分區分割(熱點分區拆分)

ALTER TABLE sales SPLIT PARTITION sales1999_q4 
    AT (TO_DATE('1999-11-01','YYYY-MM-DD'))
    INTO (
        PARTITION sales1999_q4_p1 TABLESPACE ts_sales1999q4p1,
        PARTITION sales1999_q4_p2 TABLESPACE ts_sales1999q4p2
    );

其他操作

  • TRUNCATE PARTITION:快速清空分區資料
  • EXCHANGE PARTITION:與非分區表交換資料
  • RENAME PARTITION:重新命名
  • MODIFY PARTITION:調整儲存屬性

分區資訊查詢

SELECT segment_name, partition_name, tablespace_name
FROM user_segments
WHERE segment_name = 'SALES'
ORDER BY partition_name;

分區級匯出匯入

-- 匯出 1999 年四季分區
exp sales/pwd tables=sales:sales1999_q1 file=sales1999_q1.dmp
exp sales/pwd tables=sales:sales1999_q2 file=sales1999_q2.dmp
exp sales/pwd tables=sales:sales1999_q3 file=sales1999_q3.dmp
exp sales/pwd tables=sales:sales1999_q4 file=sales1999_q4.dmp

-- 匯入(需先建立對應表空間與分區)
imp sales/pwd file=sales1999_q1.dmp tables=(sales:sales1999_q1) ignore=y
... (q2-q4 同理)

現代分區增強(11g+)

  • 間隔分區:INTERVAL 自動建立新分區
  • 參考分區:子表跟隨父表分區策略
  • 系統分區:應用程式控制分區對應
  • 混合分區:Range-Hash、Range-List 多層次
  • 分區級鎖定、線上移動、非同步全域索引維護
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved