資料轉送轉移是系統部署經常涉及到的問題,如何?Oracle海量資料高效轉移傳輸呢?下面以郵政內部資源可視化系統部署過程為例,講解這裡面的實現方法。
一、 使用傳輸資料表空間
限制:A、只能傳輸資料,不能傳輸使用者的預存程序、函數、物理化視圖等。
B、資料表空間必須自包含。該資料表空間或者說該組資料表空間 中的對象,沒有和別的資料表空間中的對象扯上關係,比如索引/約束 等。
C.8i以上版本。
D.相同硬體平台。不同硬體平台需要轉換位元組順序。
檢查方法:execute dbms_tts.transport_set_check(ts_list=>'local',incl_constraints=>TRUE);
參數ts_list用於指定要搬移的資料表空間,incl_constraints用於指定是否檢查完整性條件約束。
執行完過程dbms_tts.transport_set_check之後,系統將違反自包含資料表空間的資訊存入暫存資料表transport_set_violations。查詢該表時,如果沒有返回任何資訊,說明資料表空間是自包含的.
1.使要轉移的資料表空間唯讀。
alter tablespace ts_vir read only;
alter tablespace vir_olap read only;
alter tablespace qs_map read only;
alter tablespace yzwd read only;
2.拷貝資料檔案copy data,把資料表空間對應的資料檔案複製一份,到目標資料庫。
3.匯出資料表空間的資料字典資訊。
exp "'/ as sysdba'" tablespaces=vir_olap,ts_vir,qs_map,yzwd transport_tablespace=y file=vir_metadata.dmp
4.使資料表空間可讀寫。Alter tablespace VIR read write;
5. 目標資料庫建立使用者。
create user vir identified by vir;
create user vir_olap identified by vir;
create user qs_map identified by qs_map;
create user yzwd identified by yzwd;
6.賦予許可權。grant resource,connect to vir,vir_olap,qs_map,yzwd;
7.匯入資料表空間資訊到目標資料庫。
imp "'/ as sysdba'" tablespaces=vir_olap,QS_MAP,ts_vir,YZWD transport_tablespace=y file=vir_metadata.dmp datafiles=/u01/apps/oracle/oradata/orcl/vir_olap.ora,/
/u01/apps/oracle/oradata/orcl/vir_olap1.ora,/
/u01/apps/oracle/oradata/orcl/vir_olap2.ora,/
/u01/apps/oracle/oradata/orcl/vir_olap3.ora,/
/u01/apps/oracle/oradata/orcl/vir_olap4.ora,/
/u01/apps/oracle/oradata/orcl/ts_vir.ora,/
/u01/apps/oracle/oradata/orcl/QS_MAP.dbf,/
/u01/apps/oracle/oradata/orcl/YZWD.dbf
8.使資料表空間可讀寫。Alter tablespace VIR read write;