使用 Oracle 9.2.0.1 Client 導出 Oracle 10.2.0.3 資料庫,過程中報錯:
EXP-00003: 未找到段 (4,131) 的存儲定義
錯誤發生於導出含 LOB 欄位的表(如 CA_DEPOSE_REPORT),且多為 0 行資料的表。
Client 版本過低。Oracle 9i exp 工具無法正確解析 10g R2 引入的新段類型(如 SecureFiles LOB、段壓縮屬性、新式資料塊頭),導致讀取段定義失敗。官方文檔明確規定:導出工具版本必須 ≥ 目標資料庫版本,或至少相同主版本。
exp,或安裝 10g Client 於應用主機。ALTER TABLE ... MOVE LOB (...) STORE AS BASICFILE 降級存儲格式(不建議生產環境)。-- 確認用戶端版本
exp help=y | head -1
-- Export: Release 10.2.0.3.0 - Production (正確)
-- 確認資料庫版本
SELECT * FROM v$version;
| 參數 | 說明 | 預設值 |
|---|---|---|
| USERID | 用戶名/密碼@連線串(必須為第一個參數) | - |
| FULL | 全庫導出 | N |
| OWNER | 指定 Schema 列表 | - |
| TABLES | 指定表列表,支援分區 T1:P1 | - |
| FILE | 導出檔名稱 | EXPDAT.DMP |
| COMPRESS | 將 Extent 合併為單一 Initial Extent | Y |
| GRANTS/INDEXES/CONSTRAINTS/TRIGGERS | 是否導出權限/索引/約束/觸發器 | Y |
| DIRECT | 直接路徑導出(繞過 SQL 層,速度快) | N |
| CONSISTENT | 交易一致性導出(需足夠 UNDO) | N |
| LOG | 日誌檔路徑 | 螢幕輸出 |
| PARFILE | 參數檔路徑,避免命令行過長 | - |