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

Oracle exp 表空間傳輸四大自包含檢查點實戰指南

     編輯:Oracle 資料庫基礎

可傳輸表空間(TTS)是跨平台、跨版本遷移的利器,但自包含性檢查是成敗關鍵。本文詳細解析四大違規場景、檢測 SQL、完整操作流程,助您零失誤完成表空間遷移。

一、四大自包含違規場景(必檢項)

#違規場景說明後果
1索引在傳輸集,表不在反向不違規(表在、索引不在僅導致目標庫索引缺失)導入失敗
2分區表僅部分分區在傳輸集分區表要么全在,要么全不在導入失敗
3引用完整性約束指向表不在傳輸集若不傳輸該約束則無關導入失敗
4LOB 列不在傳輸集而表在LOB 必須與表同遷移導入失敗

二、檢測工具與 SQL

1. 查看表空間包含的 XML 相關對象

SELECT DISTINCT p.tablespace_name
FROM dba_tablespaces p, dba_xml_tables x, dba_users u, all_all_tables t
WHERE t.table_name = x.table_name
  AND t.tablespace_name = p.tablespace_name
  AND x.owner = u.username;

2. 官方自包含檢查包(10g+)

EXEC sys.dbms_tts.transport_set_check('tablespace_name', TRUE);
SELECT * FROM sys.transport_set_violations;

返回行即為違規詳情,逐條整改直至查無記錄。

三、標準遷移操作流程(以 app_data/app_idx 為例)

  1. 源端設唯讀:ALTER TABLESPACE app_data READ ONLY; / app_idx
  2. 導出元數據(需 SYSDBA,單行執行):
    HOST EXP USERID='''sys/pwd as sysdba''' TRANSPORT_TABLESPACE=Y \
      TABLESPACES=(app_data, app_idx) FILE=tts.dmp
  3. 拷貝 .dbf + .dmp 至目標端(二進制模式 FTP/SCP)
  4. 源端恢復讀寫:ALTER TABLESPACE ... READ WRITE;
  5. 目標端導入元數據(表空間必須不存在,預建用戶或用 fromuser/touser):
    IMP FILE=tts.dmp USERID="sys/pwd as sysdba" \
      TRANSPORT_TABLESPACE=Y \
      DATAFILES=('c:\app_data.dbf','c:\app_idx.dbf') \
      TABLESPACES=app_data,app_idx TTS_OWNERS=hr,oe
  6. 目標端設讀寫:ALTER TABLESPACE ... READ WRITE;

四、版本與平台提示

  • 建議 10g+ 使用,支持跨平台(端序相同)
  • 9i 無 dbms_tts 包,需人工核對
  • 跨平台需執行 RMAN CONVERT TABLESPACE 或 CONVERT DATAFILE
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved