. . 正在導出表 CA_DEPOSE_REPORT
EXP-00003: 未找到段 (4,51) 的存儲定義 = 表有 LOB 字段
. . 正在導出表 CA_DEVICE
EXP-00003: 未找到段 (4,131) 的存儲定義
Oracle 10g R2 引入 SecureFiles LOB、段壓縮、新式資料塊頭 等儲存層特性。9i exp 的內部字典查詢邏輯(SYS.SEG$、SYS.LOB$、SYS.LOBFRAG$)無法識別新段類型,導致讀取段存儲定義失敗,拋出 EXP-00003。
| 方案 | 可行性 | 優點 | 缺點 |
|---|---|---|---|
| 升級 Client 至 10.2.0.3+ | ✅ 推薦 | 零代碼變更,完整支援 10g 特性 | 需部署新 Client |
| 伺服器端直接執行 exp | ✅ 推薦 | 版本天然匹配,網路傳輸少一層 | 需登入 DB 主機 |
| 改用 expdp/impdp (Data Pump) | ✅ 最佳 | 並行、可中斷續傳、細粒度過濾、無版本相容問題 | 需目錄物件權限,學習成本稍高 |
| LOB 降級為 BASICFILE | ⚠️ 不建議 | 9i exp 可讀取 | 喪失 SecureFiles 效能優勢,DDL 鎖表,風險大 |
-- 建立目錄物件(需 DBA)
CREATE DIRECTORY dpump_dir AS '/u01/backup/dpump';
GRANT READ, WRITE ON DIRECTORY dpump_dir TO system;
-- 導出
expdp system/manager@ORCL directory=dpump_dir dumpfile=full_%U.dmp logfile=expdp.log full=y parallel=4 compression=ALL
-- 導入
impdp system/manager@ORCL directory=dpump_dir dumpfile=full_%U.dmp logfile=impdp.log full=y table_exists_action=REPLACE
expdp.log 確認無 ORA-39000 系列錯誤。SELECT COUNT(*) FROM source_schema.table_name vs 目標端。USER_CONSTRAINTS、USER_INDEXES、USER_TRIGGERS。