遷移 80MB 以上海量資料至新表空間或新 Schema,傳統 INSERT 產生大量 Redo/Undo、緩衝區管理開銷極大。Oracle 8i+ 提供兩大直徑載入技巧:CTAS (CREATE TABLE AS SELECT) + NOLOGGING 與 INSERT /*+ APPEND */,直接寫入資料檔,速度提升數量級。
CREATE TABLE target_tablename
TABLESPACE target_tablespace_name
NOLOGGING
PCTFREE 10 PCTUSED 60
STORAGE (INITIAL 5M NEXT 5M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0)
AS SELECT * FROM username.source_tablename WHERE 條件;
NOLOGGING 最小化 Redo(僅記錄元資料)| 遺失項目 | 補救動作 |
|---|---|
| 索引 | 事後 CREATE INDEX 重建 |
| 預設值 | 事後 ALTER TABLE MODIFY DEFAULT ... |
| Check/Unique/FK 約束 | 事後 ALTER TABLE ADD CONSTRAINT |
| Non-Null 約束 | 自動繼承 ✓ |
INSERT /*+ APPEND */ INTO target_tablename
SELECT * FROM username.source_tablename WHERE 條件;
COMMIT;
NOLOGGING 表同樣最小化 RedoAPPEND 會對目標表加 Mode 6 (Exclusive) 鎖NOLOGGING 表)SQL*Loader Direct PathPARALLEL + APPEND海量資料轉移核心 = 繞過緩衝區、繞過 Undo、最小化 Redo、鎖定 High Water Mark。CTAS 適合重建,APPEND 適合追加。務必在測試環境驗證鎖影響與索引重建時間,納入變更管理流程,方可上線。