【遷移】表空間transport

yellowlee發表於2011-05-24
原則:

1.關於傳輸表空間有一些規則 (10g )

源資料庫和目標資料庫必須執行在相同的硬體平臺上。

源資料庫與目標資料庫必須使用相同的字符集。

源資料庫與目標資料庫一定要有相同大小的資料塊

目標資料庫不能有與遷移表空間同名的表空間

SYS 的物件不能遷移

必須傳輸自包含的物件集

有一些物件,如物化檢視,基於函式的索引等不能被傳輸

(同位元組序檔案的跨平臺可以用更換資料檔案的檔案頭的方法)

(10g 支援跨平臺的表空間傳輸,只要作業系統位元組順序相同,就可以進行表空間

傳輸。需要使用RMAN 轉換檔案格式,略)

 

步驟:

1,在源庫:檢查表空間的自包含性:

SQL> EXECUTE dbms_tts.transport_set_check('iasys', TRUE);

 

PL/SQL procedure successfully completed.

 

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

 

no rows selected

 

2,在目標庫:不能有要tranport的同名表空間

SQL> drop tablespace iasys including contents;

 

Tablespace dropped.

3,修改要遷移的表空間為只讀:

ALTER TABLESPACE iasys READ ONLY;

 

4, 匯出表空間集後設資料

匯出表空間集後設資料
exp '"/ as sysdba"' TRANSPORT_TABLESPACE=y TABLESPACES=iasys TRIGGERS=y CONSTRAINTS=n GRANTS=n FILE=expdat.dmp
如果要執行TSPITR和更嚴格的約束的檢查,執行:
exp '"/ as sysdba"' TRANSPORT_TABLESPACE=y TABLESPACES=iasys TTS_FULL_CHECK=Y FILE=expdat.dmp

 

5,複製匯出的檔案

scp expdat.dmp oracle@10.1.176.27:/tpsys/oradata

 

6匯入

imp TRANSPORT_TABLESPACE=y FILE=expdat.dmp DATAFILES='/tpsys/oradata/iasys.dbf'  TABLESPACES=(iasys) TTS_OWNERS=(iasys,iasys) FROMUSER=(iasys,iasys) TOUSER=( iasys, iasys)

或者:

imp userid='"/ as sysdba"' TRANSPORT_TABLESPACE=y FILE=expdat.dmp DATAFILES='/tpsys/oradata/test1/iasys.dbf'  TABLESPACES=iasys

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-696184/,如需轉載,請註明出處,否則將追究法律責任。

相關文章