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

Oracle 資料庫導出導入(exp/imp)實操指南:從基礎步驟到常見錯誤排查

     編輯:Oracle 資料庫基礎

前言

Oracle 傳統導出導入工具(exp/imp)雖已被 Data Pump (expdp/impdp) 取代,但在舊版本遷移、小型數據備份、跨版本兼容等場景仍廣泛使用。本文詳述標準操作流程、參數詳解及常見錯誤處理。

一、導出數據(exp)操作步驟

1. 命令行啟動

C:\> exp

或直接指定可執行文件路徑:ORACLE_HOME\bin\exp.exe

2. 交互式輸入參數

提示項輸入示例說明
Username/Password@ServiceNCS_TEST/K@GAICHU連接字串,含用戶、密碼、服務名
Export filec:\backup\data.dmp導出文件完整路徑
Buffer size[回車使用默認]數據緩衝區大小
其他選項一路回車採用默認值完成導出

3. 非交互式完整命令(推薦用於腳本)

exp userid/password@service file=d:\backup\full_exp.dmp full=y log=d:\backup\exp.log

二、導入數據(imp)操作步驟

1. 命令行啟動

C:\> imp

2. 交互式參數輸入

提示項輸入示例說明
Username/Password@ServiceNCS_TEST/K@GAICHU目標資料庫連接
Import filec:\backup\data.dmp來源導出文件
Buffer size[回車默認]緩衝區大小
Ignore create errorsY忽略對象已存在錯誤(關鍵參數)

3. 非交互式完整命令

imp userid/password@service file=d:\backup\full_exp.dmp full=y ignore=y log=d:\backup\imp.log

三、核心參數詳解

參數適用工具作用推薦值
FULLexp/imp全庫導出/導入Y
OWNERexp指定導出用戶(Schema)user1,user2
TABLESexp/imp表級導出/導入table1,table2
FILEexp/imp導出/導入文件路徑path/file.dmp
LOGexp/imp日誌文件路徑path/log.log
IGNOREimp忽略對象創建錯誤Y(生產導入必加)
GRANTSexp/imp導出/導入權限Y
INDEXESexp/imp導出/導入索引Y
COMPRESSexp壓縮區塊(初始區塊=總大小)N(大表建議 N)
BUFFERexp/imp緩衝區大小(字節)8192/2048000
COMMITimp提交頻率Y
QUERYexp導出數據過濾條件"WHERE deptno=20"
FROMUSER/TOUSERimpSchema 重映射scott/hr

四、常見錯誤與解決方案

1. ORA-12154: TNS:could not resolve the connect identifier specified

原因:連接字串錯誤,tnsnames.ora 配置缺失或服務名拼寫錯誤

排查:

  • 驗證 `tnsping 服務名` 是否通
  • 檢查用戶名/密碼/服務名拼寫
  • 確認客戶端 tnsnames.ora 配置正確

2. 版本不兼容導致導入失敗

原則:客戶端版本 ≥ 服務端版本,或至少主版本一致

  • 11g 客戶端可導入 10g/11g/12c 數據
  • 10g 客戶端無法正確導入 11g+ 數據
  • 跨大版本遷移請使用 Data Pump

3. 導入時提示對象已存在

解決:添加 `IGNORE=Y` 參數,跳過創建對象階段,直接導入數據

4. 權限不足

  • 導出需 `EXP_FULL_DATABASE` 角色或 DBA 權限
  • 導入需 `IMP_FULL_DATABASE` 角色
  • 普通用戶僅能導出/導入自身對象

五、自動化備份腳本範例

Linux/Unix Shell 腳本

#!/bin/bash
# 每日全量導出
DATE_STR=$(date +%Y%m%d%H%M)
EXP_FILE="/backup/exp_full_${DATE_STR}.dmp"
LOG_FILE="/backup/exp_full_${DATE_STR}.log"

exp system/manager@ORCL file=${EXP_FILE} full=y buffer=8192 grants=y compress=n log=${LOG_FILE}

# 保留 7 天備份
find /backup -name "exp_full_*.dmp" -mtime +7 -delete
find /backup -name "exp_full_*.log" -mtime +7 -delete

Windows 批處理腳本

@echo off
set DATE_STR=%date:~,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
set DATE_STR=%DATE_STR: =0%
set EXP_FILE=D:\backup\exp_full_%DATE_STR%.dmp
set LOG_FILE=D:\backup\exp_full_%DATE_STR%.log

exp system/manager@ORCL file=%EXP_FILE% full=y buffer=8192 grants=y compress=n log=%LOG_FILE%

:: 刪除 7 天前備份
forfiles /p D:\backup /m exp_full_*.dmp /d -7 /c "cmd /c del @path"
forfiles /p D:\backup /m exp_full_*.log /d -7 /c "cmd /c del @path"

六、exp/imp 與 expdp/impdp 選型建議

場景推薦工具理由
10g 及以上常規維護expdp/impdp並行處理、網絡模式、更細粒度控制、性能優
9i/10g 老舊系統exp/imp原生支持,無需目錄對象
跨版本遷移(如 10g→19c)expdp/impdp版本兼容參數 VERSION 支持
小表單表導出/導入exp/imp輕量、無需建目錄對象
生產環境大數據量expdp/impdpPARALLEL 並行、壓縮、加密

結語

掌握 exp/imp 基礎操作是 DBA 必備技能。實際生產中,強烈建議:

  1. 優先使用 Data Pump (expdp/impdp)
  2. 建立標準化備份腳本並納入調度系統
  3. 定期演練恢復流程,驗證備份有效性
  4. 導入前務必確認 `IGNORE=Y` 避免中斷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved