Oracle 可傳輸表空間 允許將一組表空間及其資料檔案從一個資料庫實例快速移動到另一個實例。相較於傳統匯出/匯入,此功能僅傳輸中繼資料,速度極快,極適合大量資料遷移、資料倉庫載入或跨平台部署。
DB_BLOCK_SIZE 必須一致;若不一致,需相容 Oracle 9.0 以上版本並滿足特定條件。READ ONLY。SQL> ALTER TABLESPACE example READ ONLY;
Tablespace altered.
SQL> EXEC DBMS_TTS.TRANSPORT_SET_CHECK('EXAMPLE', TRUE);
PL/SQL procedure successfully completed.
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
VIOLATIONS
----------
-- 若有回傳記錄,表示不符合傳輸條件,需依提示移動物件
使用 Data Pump Export (expdp) 僅匯出中繼資料:
expdp system/manager \ TRANSPORT_TABLESPACES=EXAMPLE \ TRANSPORT_FULL_CHECK=Y \ DIRECTORY=dpump_dir \ DUMPFILE=exp_tts.dmp \ LOGFILE=exp_tts.log
匯出過程中會列出所有表、索引、約束、觸發器等中繼資料,不包含資料列。
使用 OS 指令(如 scp, rsync)將表空間對應的資料檔案複製到目標端相同或指定路徑。
impdp system/manager \ TRANSPORT_TABLESPACES=EXAMPLE \ DIRECTORY=dpump_dir \ DUMPFILE=exp_tts.dmp \ LOGFILE=imp_tts.log \ TRANSPORT_DATAFILES='/u01/app/oracle/oradata/target/example01.dbf'
SQL> ALTER TABLESPACE example READ WRITE;
NLS_CHARACTERSET 與 NLS_NCHAR_CHARACTERSET。TRANSPORT_SET_VIOLATIONS 提示移動物件或調整設計。TRANSPORT_FULL_CHECK=Y 強制檢查雙向引用完整性。