首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle 表空間修改後導入報錯 ORA-00959:CLOB 列導致表空間不匹配解決方案

     編輯:程式設計綜合問答

問題場景

  • 原表空間 XMGL,修改表移至新表空間 WGP。
  • 導出後在目標服務器(表空間 WGP)導入,報錯 ORA-00959: tablespace 'XMGL' does not exist。
  • 數據庫已重啟,問題依舊。

根本原因

表中包含 CLOB 類型列,其 LOB 段存儲在單獨表空間中。ALTER TABLE ... MOVE TABLESPACE WGP 僅移動表數據段,不會自動移動 LOB 段。導出文件仍記錄 LOB 段屬於 XMGL,導入時尋找該表空間失敗。

解決方案

  1. 同步移動 LOB 段:
    ALTER TABLE table_name MOVE LOB (clob_column) STORE AS (TABLESPACE WGP);
       
  2. 導入時忽略表空間錯誤(目標用戶有默認表空間):
    impdp ... IGNORE=Y TABLE_EXISTS_ACTION=REPLACE
       
  3. 重映射表空間:
    impdp ... REMAP_TABLESPACE=XMGL:WGP
       
  4. 預先創建表空間:在目標庫創建同名表空間 XMGL(若磁盤允許)。

驗證步驟

-- 檢查表的段分佈
SELECT segment_name, segment_type, tablespace_name
FROM user_segments
WHERE segment_name = 'YOUR_TABLE_NAME';

確認 LOBSEGMENT 的 tablespace_name 已為 WGP。

參考資源

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