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

Oracle DMP 匯入匯出實戰指南:IMP/EXP 參數詳解與避坑清單

     編輯:Oracle 資料庫基礎

核心概念

  • EXP:資料庫 → 本地 .dmp 檔案
  • IMP:.dmp 檔案 → 資料庫
  • 適用場景:構建測試/開發環境、跨環境遷移、邏輯備份

執行環境

  • SQL*Plus 內部呼叫 EXP/IMP 封裝類
  • DOS 命令列(Oracle 8i: \ora81\BIN 已在 PATH)
  • 檔案:EXP.EXE、IMP.EXE

匯出實戰範例

完整資料庫匯出

exp system/manager@TEST file=d:\daochu.dmp full=y

指定使用者/結構匯出

exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

指定表匯出

exp aichannel/aichannel@TESTDB2 file=d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)

條件式匯出(WHERE 子句)

exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query="WHERE filed1 LIKE '00%'"
-- 注意:雙引號包裹,單引號內部字串

壓縮選項

  • 外部工具:WinZip 壓縮 .dmp(效果佳)
  • 內建參數:COMPRESS=Y(調整區塊大小,非檔案壓縮)

匯入實戰範例

完整匯入

imp system/manager@TEST file=d:\daochu.dmp

忽略錯誤繼續匯入(關鍵參數)

imp aichannel/aichannel@HUST full=y file=d:\data\newsmgnt.dmp ignore=y
-- ignore=y:物件已存在時跳過錯誤繼續,否則報錯停止

指定表匯入

imp system/manager@TEST file=d:\daochu.dmp tables=(table1)

實戰避坑清單

問題原因解決方案
IMP 報錯「物件已存在」目標庫有同名表加 IGNORE=Y 或先 DROP 再匯入
權限不足執行用戶缺乏 IMP_FULL_DATABASE授予 DBA 或完整匯入權限
字符集不匹配匯出/匯入端 NLS 設定不同確認 NLS_LANG 一致,或用字符集轉換
大表匯入極慢索引/約束同步維護先匯入資料,再建索引/啟用約束

進階:跨使用者遷移(Parameter File)

建立 import9.par

FROMUSER=TGPMS
TOUSER=TGPMS2
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
FILE=/backup/ctgpc_20030623.dmp
LOG=/backup/import_20030623.log

執行

imp parfile=/filepath/import9.par

實戰日誌範例解讀

Import: Release 8.1.7.0.0 - Production
連接到: Oracle8i Enterprise Edition Release 8.1.7.0.0
經由常規路徑導出由 EXPORT:V08.01.07 創建的文件
已經完成 ZHS16GBK 字符集和 ZHS16GBK NCHAR 字符集中的導入
導出服務器使用 UTF8 NCHAR 字符集 (可能的 ncharset 轉換)
正在將 AICHANNEL 的對象導入到 AICHANNEL
正在導入表 "INNER_NOTIFY" 4行被導入
准備啟用約束條件...
成功終止導入,但出現警告。

關鍵資訊:字符集轉換提示、導入行數、約束啟用狀態、警告需檢查 LOG 檔案。

權限授予腳本(匯入前執行)

-- 1. 啟動 SQL*Plus,以 system/manager 登入
-- 2. 建立用戶(如不存在)
CREATE USER username IDENTIFIED BY password;

-- 3. 授予完整匯入權限
GRANT CREATE USER, DROP USER, ALTER USER,
      CREATE ANY VIEW, DROP ANY VIEW,
      EXP_FULL_DATABASE, IMP_FULL_DATABASE,
      DBA, CONNECT, RESOURCE, CREATE SESSION
TO username;

現代替代方案提示

Oracle 10g+ 推薦使用 Data Pump (expdp/impdp):平行處理、網路模式、更精細物件過濾、效能大幅提升。傳統 EXP/IMP 仍適用於舊版本或簡單邏輯備份。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved