導出 (EXP) 經典場景
| 場景 | 命令範例 |
| 全庫導出 | EXP SCOTT/TIGER@TEST FILE=D:TESTDB.DMP FULL=Y |
| 單表導出 | EXP SCOTT/TIGER@TEST FILE=D:TESTDB.DMP TABLES=(EMP) |
| 多表導出 | EXP USER/PWD@DB FILE=TABS.DMP TABLES=(EMP,DEPT,SALGRADE) |
| 條件導出 | EXP SCOTT/TIGER@TEST FILE=D:TESTDB.DMP TABLES=(EMP) QUERY="WHERE DEPTNO=10" |
| 壓縮導出 | EXP ... COMPRESS=Y(僅調整 EXTENT,建議 OS 壓縮 .DMP) |
導入 (IMP) 經典場景
| 場景 | 命令範例 |
| 全庫導入 | IMP SCOTT/TIGER@TEST FILE=D:TESTDB.DMP FULL=Y IGNORE=Y |
| 單表導入 | IMP SCOTT/TIGER@TEST FILE=D:TESTDB.DMP TABLES=(EMP) |
| 跨 Schema 遷移 | IMP SYSTEM/PWD@DB FROMUSER=OLD TOUSER=NEW FILE=EXP.DMP IGNORE=Y |
| Parfile 參數檔 | IMP PARFILE=IMPORT.PAR(見下) |
Parfile 範例
FROMUSER=OLD_SCHEMA
TOUSER=NEW_SCHEMA
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
FILE=/BACKUP/EXP.DMP
LOG=/BACKUP/IMP.LOG
前置準備:用戶與權限
-- 級聯刪除舊用戶
DROP USER SCOTT CASCADE;
-- 建立新用戶
CREATE USER SCOTT IDENTIFIED BY TIGER;
GRANT DBA TO SCOTT; -- 僅演示用,生產請最小權限
實戰技巧
IGNORE=Y:忽略「物件已存在」錯誤,資料仍會載入
- 導入前先
TRUNCATE TABLE 或 DROP TABLE 避免主鍵衝突
- 大量導入前設定
COMMIT=Y、BUFFER 大值、INDEXES=N 導入後再建索引
- 跨版本導入:低版本 EXP → 高版本 IMP 通常相容,反向需用 Data Pump
現代化建議
Oracle 10g+ **強烈建議改用 Data Pump (EXPDP/IMPDP)**:
- 支援並行 (
PARALLEL=4) 大幅提速
- 網路模式 (
NETWORK_LINK) 免落地 .DMP
- 細粒度過濾 (
INCLUDE/EXCLUDE)、壓縮 (COMPRESSION=ALL)、加密 (ENCRYPTION)
- 可中斷恢復、即時進度監控