首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 匯入匯出 (Exp/Imp) 實用程式完整操作手冊

     編輯:Oracle 資料庫基礎

Exp/Imp 架構與適用場景

  • Exp (Export):邏輯備份,將物件定義+資料寫入二進位 .dmp 檔
  • Imp (Import):從 .dmp 還原物件與資料
  • 適用:跨版本遷移、Schema 複製、資料子集匯出、開發/測試環境建立
  • 不適用:大型資料庫完整備份 (用 RMAN)、高可用性備份、時間點恢復

舊版 (Exp/Imp) vs 新版 Data Pump (Expdp/Impdp)

特性Exp/Imp (舊)Expdp/Impdp (Data Pump)
執行位置Client 端Server 端 (Directory Object)
平行度單執行緒PARALLEL 多執行緒
網路模式不支援支援 (NETWORK_LINK)
壓縮/加密不支援支援
匯入重映射有限完整 (REMAP_SCHEMA/TABLESPACE/DATAFILE)
互動模式支援不支援

建議:10g+ 環境優先使用 Data Pump;僅 9i 以下或特殊相容需求用 Exp/Imp。

Exp 經典參數與範例

參數說明範例
FULL=Y全庫匯出 (需 EXP_FULL_DATABASE)exp system/pass@ORCL FILE=full.dmp FULL=Y
OWNER指定 Schema 列表exp system/pass@ORCL FILE=hr.dmp OWNER=HR
TABLES指定表列表exp hr/pass@ORCL FILE=t.dmp TABLES=EMP,DEPT
QUERY資料過濾條件exp hr/pass@ORCL FILE=q.dmp TABLES=EMP QUERY="WHERE deptno=10"
COMPRESS=Y匯入時合併 Extents (舊版)exp ... COMPRESS=Y
CONSISTENT=Y交易一致性匯出 (Undo 保留)exp ... CONSISTENT=Y
STATISTICS=NONE不匯出統計資訊exp ... STATISTICS=NONE
LOG記錄檔exp ... LOG=exp.log

Imp 經典參數與範例

參數說明範例
FULL=Y全庫匯入imp system/pass@ORCL FILE=full.dmp FULL=Y
FROMUSER/TOUSERSchema 重映射imp system/pass@ORCL FILE=hr.dmp FROMUSER=HR TOUSER=HR_NEW
TABLES指定表匯入imp hr/pass@ORCL FILE=t.dmp TABLES=EMP
IGNORE=Y忽略建立錯誤 (表已存在)imp ... IGNORE=Y
INDEXES=N不匯入索引 (稍後手建)imp ... INDEXES=N
COMMIT=Y定期提交 (大量資料)imp ... COMMIT=Y BUFFER=10485760
DESTROY=Y覆蓋資料檔 (慎用)imp ... DESTROY=Y
SHOW=Y僅顯示 DDL 不執行imp ... SHOW=Y

實戰場景腳本

場景 1:Schema 遷移至新資料庫

# 來源
exp system/pass@SRC FILE=hr_schema.dmp OWNER=HR CONSISTENT=Y LOG=exp_hr.log

# 目標 (預建 Tablespace/User)
imp system/pass@TGT FILE=hr_schema.dmp FROMUSER=HR TOUSER=HR LOG=imp_hr.log

場景 2:大表分批匯出/匯入

# 分區表按分區匯出
exp hr/pass@ORCL FILE=orders_p1.dmp TABLES=ORDERS PARTITION=P_2023_Q1
exp hr/pass@ORCL FILE=orders_p2.dmp TABLES=ORDERS PARTITION=P_2023_Q2
# ... 依序匯入

場景 3:僅匯出 DDL (結構)

exp system/pass@ORCL FILE=ddl_only.dmp OWNER=HR ROWS=N LOG=ddl.log
# 匯入時
imp system/pass@ORCL FILE=ddl_only.dmp FROMUSER=HR TOUSER=HR INDEXES=N

常見錯誤與解決

錯誤原因解決
EXP-00008: ORACLE error 904版本不相容 (高版本導出低版本匯入)用目標版本的 Exp 匯出,或用 Data Pump NETWORK_LINK
IMP-00003: ORACLE error 1435使用者不存在先建立使用者/表空間
IMP-00017: 表已存在預設不覆蓋加 IGNORE=Y 或先 DROP TABLE
EXP-00056: ORACLE error 1555Snapshot too old (CONSISTENT=Y)增加 Undo 保留時間、避開高峰期
字符集不匹配NLS_LANG 設定錯誤設定 NLS_LANG 為來源資料庫字符集

Data Pump 快速入門 (建議替代)

# 建立 Directory
CREATE DIRECTORY dpump_dir AS '/u01/dpump';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO hr;

# 匯出
expdp hr/pass@ORCL DIRECTORY=dpump_dir DUMPFILE=hr_%U.dmp 
  SCHEMAS=HR PARALLEL=4 COMPRESSION=ALL LOGFILE=expdp_hr.log

# 匯入
impdp hr/pass@ORCL DIRECTORY=dpump_dir DUMPFILE=hr_%U.dmp
  SCHEMAS=HR REMAP_SCHEMA=HR:HR_NEW TABLE_EXISTS_ACTION=REPLACE
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved