EXP/IMP 是 Oracle 邏輯備份遷移的經典工具組。本文匯總全庫、模式、表級、查詢過濾導出,導入忽略錯誤、改變擁有者、PARFILE 參數文件模板,並附實際屏幕輸出示例與權限準備清單。
| 場景 | 命令 | 關鍵參數 |
|---|---|---|
| 全庫導出 (需 DBA) | exp system/manager@TEST file=d:\daochu.dmp full=y | FULL=Y 導出所有模式 |
| 指定模式導出 | exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) | OWNER 列表 |
| 指定表導出 | exp aichannel/aichannel@TESTDB2 file=d:\datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) | TABLES 列表 |
| 查詢過濾導出 | exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query="WHERE filed1 LIKE '00%'" | QUERY 含 WHERE 子句,雙引號轉義 |
| 壓縮導出 | 上述命令追加 COMPRESS=Y | 導出時壓縮段,IMP 時一次性分配 |
| 場景 | 命令 | 關鍵參數 |
|---|---|---|
| 全庫導入 | imp system/manager@TEST file=d:\daochu.dmp | 報錯表已存在則跳過 |
| 全庫導入忽略錯誤 | imp aichannel/aichannel@HUST full=y file=d:\datanewsmgnt.dmp ignore=y | IGNORE=Y 忽略對象存在錯誤繼續導入數據 |
| 表級導入 | imp system/manager@TEST file=d:\daochu.dmp tables=(table1) | TABLES 列表 |
| 改變擁有者導入 (PARFILE) | 見下文 PARFILE 模板 | FROMUSER/TOUSER 映射 |
文件 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
優勢:命令行不暴露密碼、參數集中維護、易於版本控制、支援長參數列表。
F:\Work\Oracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.
連接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
經由常規路徑導出由 EXPORT:V08.01.07 創建的文件
已經完成 ZHS16GBK 字符集和 ZHS16GBK NCHAR 字符集中的導入
導出服務器使用 UTF8 NCHAR 字符集 (可能的 ncharset 轉換)
. 正在將 AICHANNEL 的對象導入到 AICHANNEL
. . 正在導入表 "INNER_NOTIFY" 4 行被導入
準備啟用約束條件...
成功終止導入,但出現警告。
-- 以 SYSTEM 登錄
CREATE USER target_user IDENTIFIED BY password;
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 target_user;
或按最小權限原則僅授 RESOURCE, CREATE SESSION, IMP_FULL_DATABASE 等必要權限。
tnsping TEST # 驗證網絡連通
sqlplus user/pass@TEST # 驗證認證
| 現象 | 原因 | 解決 |
|---|---|---|
| IMP-00010: not a valid export file | 文件損壞/版本不匹配/傳輸模式錯誤 (ASCII vs BINARY) | FTP 用 BINARY 模式;EXP/IMP 版本兼容性矩陣查 MOS |
| ORA-39142: incompatible version | Data Pump (expdp/impdp) 版本不兼容 | 用同版本 expdp/impdp 或降級導出版本 VERSION=11.2 |
| 字符集轉換警告 | 源/目標數據庫字符集不同 | 確保 NLS_LANG 一致;必要時用 CONVERT 字符集遷移 |
| 導入極慢 | 未禁用約束/索引/觸發器、提交頻繁、BUFFER 過小 | INDEXES=N CONSTRAINTS=N GRANTS=N 導入數據後再啟用;BUFFER=10485760;COMMIT=Y (數組提交) |
EXP/IMP 雖屬傳統工具,但在中小庫遷移、跨版本導出、表級精確控制、改變擁有者等場景仍具不可替代優勢。掌握 FULL/OWNER/TABLES/QUERY/COMPRESS/IGNORE/FROMUSER/TOUSER/PARFILE 核心參數組合,配合權限準備、字符集對齊、性能調優,即可應對 95% 邏輯遷移需求。