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

Oracle EXP/IMP 傳統邏輯備份工具完整指南

     編輯:Oracle 教學

Oracle EXP/IMP 傳統邏輯備份工具完整指南

EXP/IMP 是 Oracle 資料庫早期提供的邏輯備份與恢復工具組,雖然功能不如後來的 Data Pump (expdp/impdp) 強大,但在舊版本環境或特定場景下仍具參考價值。本文將系統整理 EXP/IMP 的核心參數、常見操作模式與實戰範例,幫助您快速掌握這套經典工具的使用要領。

環境資訊

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
Enterprise Linux Server release 5.5 (Carthage)

EXP 匯出工具詳解

執行 exp help=y 可查看完整參數列表。關鍵參數說明如下:

參數說明預設值
USERID用戶名/密碼 (必須為第一個參數)-
FULL匯出整個資料庫N
OWNER指定擁有者列表 (匯出特定用戶)-
TABLES指定表列表 (支援分區表語法 T1:P1)-
TABLESPACES指定表空間列表-
FILE輸出檔案名EXPDAT.DMP
BUFFER資料緩衝區大小4096
GRANTS匯出權限Y
INDEXES匯出索引Y
ROWS匯出資料列Y
CONSISTENT跨表一致性 (使用 undo 確保讀一致性)N
DIRECT直接路徑匯出 (效能較佳)N
LOG記錄檔名稱-
PARFILE參數檔名稱 (避免命令行過長)-
QUERY匯出表的子集 WHERE 子句-
FLASHBACK_SCN/TIME基於 SCN 或時間點的快照匯出-
COMPRESS匯入時壓縮到一個區塊Y
FILESIZE單一轉儲檔最大大小-

互動模式與命令列模式

EXP 支援兩種呼叫方式:

  1. 互動模式:直接輸入 exp 後依提示輸入參數,適合臨時操作。
  2. 命令列模式:一次性指定所有參數,適合腳本自動化,例如:
    exp system/manager full=y file=full_db.dmp log=full_exp.log

常見匯出場景實戰

1. 匯出單一用戶所有物件 (含結構與資料)

[oracle@localhost ~]$ exp hr/hr file=hr_schema.dmp log=hr_exp.log
# 或使用參數檔 parfile=hr_exp.par
# 內容:
# userid=hr/hr
# file=hr_schema.dmp
# log=hr_exp.log
# owner=hr
# grants=y
# indexes=y
# rows=y

2. 匯出整個資料庫 (需 DBA 權限)

exp system/manager full=y file=full_db.dmp log=full_exp.log consistent=y

輸出檔案較大,建議搭配 FILESIZE 參數分割檔案。

3. 匯出特定表

# 以表擁有者身分匯出
exp hr/hr tables=hr.employees,hr.departments file=hr_tables.dmp

# 以 DBA 身分匯出他人表 (需指定 schema.table)
exp system/manager tables=hr.employees file=hr_emp.dmp

4. 匯出特定表空間

exp system/manager tablespaces=USERS,EXAMPLE file=tbs_users.dmp log=tbs_exp.log

IMP 匯入工具詳解

執行 imp help=y 可查看參數。核心參數對照表:

參數說明預設值
USERID用戶名/密碼-
FULL匯入整個轉儲檔N
FROMUSER來源用戶列表-
TOUSER目標用戶列表 (配合 FROMUSER 實現 schema 重映射)-
TABLES指定匯入表列表-
FILE輸入轉儲檔EXPDAT.DMP
IGNORE忽略建立錯誤 (如表已存在)N
GRANTS匯入權限Y
INDEXES匯入索引Y
ROWS匯入資料列Y
LOG記錄檔-
BUFFER資料緩衝區大小-
COMMIT陣列插入後提交N
DESTROY覆蓋表空間資料檔 (慎用)N
INDEXFILE將 DDL 輸出至檔案而不實際匯入-
DATA_ONLY僅匯入資料,不建立物件N

常見匯入場景實戰

1. 匯入既有表資料 (忽略建立錯誤)

imp hr/hr tables=employees file=hr_emp.dmp ignore=y log=hr_imp.log

2. 整庫匯入 (需預先建立表空間與用戶)

imp system/manager full=y file=full_db.dmp ignore=y log=full_imp.log

3. 跨 Schema 匯入 (Schema 重映射)

# 將 HR 結構下的表匯入到 SYSTEM 結構
imp system/manager tables=employees fromuser=hr touser=system file=hr_emp.dmp ignore=y

4. 僅匯入結構 (不含資料)

imp hr/hr file=hr_schema.dmp rows=n log=hr_struct.log

最佳實踐與注意事項

  • 字符集一致性:匯出入雙方資料庫字符集應一致,否則可能導致資料損壞。可用 NLS_LANG 環境變數控制客戶端字符集。
  • 版本相容性:低版本 IMP 可讀取高版本 EXP 檔案,但高版本 IMP 無法讀取低版本 EXP 檔案。跨版本遷移建議使用 Data Pump。
  • 大物件處理:含 LOB 欄位的表建議使用 DIRECT=Y 並適當調大 BUFFER 參數。
  • 一致性備份:生產環境全庫匯出務必加上 CONSISTENT=Y 確保讀一致性,但會增加 UNDO 表空間壓力。
  • 參數檔管理:複雜任務請使用 PARFILE 避免命令行長度限制與密碼明文洩露。
  • 權限要求:FULL 匯出需 EXP_FULL_DATABASE 角色,FULL 匯入需 IMP_FULL_DATABASE 角色。

總結

EXP/IMP 雖屬傳統工具,但在 Oracle 10g/11g 環境維護、小規模資料遷移、結構對比等場景仍具實用性。掌握其核心參數組合,配合參數檔與日誌記錄,能有效完成邏輯備份與恢復任務。新專案建議優先採用 Data Pump (expdp/impdp) 以獲得更佳效能、並行度與細粒度控制。

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