VB.NET還是比較常用的,於是我研究了一下VB.Net傳輸表空間,在這裡拿出來和大家分享一下,希望對大家有用。2個數據庫(ltdb和epras),從ltdb導出tsts表空間(用戶ts,包含2個數據文件)到epras
執行步驟
1.ltdb導出可傳輸表空間(以sysdba執行導出)到dmp文件
2.將ltdb的tsts表空間改為只讀
3.用操作系統命令復制數據文件和dmp文件到另一個位置給另一個數據庫epras使用。如果在一台服務器上,dmp文件可以不必復制,復制完成後,將ltdb的tsts表空間改為可讀寫
4.在epras數據庫創建ts用戶(此時不必授權)
5.導入可VB.Net傳輸表空間(以sysdba執行導入)到dmp文件到epras數據庫
6.將epras的tsts表空間改為可讀寫,給ts用戶授權
好處:和數據exp/imp相比,速度很快,dmp文件只包含表空間元數據10g支持不同平台的表空間傳輸,支持大頭/小頭操作系統之間的傳輸在Oracle以前的版本中,可傳輸的表空間的特性可以讓表空間在相同的體系結構和操作系統之間遷移.
在 Oracle 數據庫 10g 中,這個局限消失了:只要操作系統字節順序相同,您就可以在平台之間VB.Net傳輸表空間。一些操作系統(包括 Windows)在低位內存地址中用最低有效字節存儲多字節二進制數據;因此這種系統被稱為低地址低字節序。相反,其它的操作系統(包括 Solaris)將最高有效字節存儲在低位內存地址中,因此這種系統被稱為低地址高字節序。當一個低地址高字節序的系統試圖從一個低地址低字節序的系統中讀取數據時,需要一個轉換過程— 否則,字節順序將導致不能正確解釋讀取的數據。
不過,當在相同字節順序的平台之間VB.Net傳輸表空間時,不需要任何轉換。10g的表空間跨平台遷移,較9i就是增加了一個使用Rman進行的文件格式轉換的過程.
檢查待轉換表空間
- EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('tswin1,tswin2', TRUE);
- PL/SQL procedure successfully completed.
- '是否有沖突
- SELECT * FROM TRANSPORT_SET_VIOLATIONS;
- no rows selected
- '運行rman
- rman TARGET /
- CONVERT TABLESPACE tswin1,tswin2
- TO PLATFORM 'Microsoft Windows IA (32-bit)'
- FORMAT '/tmp/rman/%U';
- '在上述例子中,轉換後的文件名難於辨認並很難與原始文件關聯
- '還可以使用其它格式來為數據文件命名
- CONVERT TABLESPACE tswin1,tswin2
- TO PLATFORM 'Microsoft Windows IA (32-bit)'
- db_file_name_convert '/tmp/LTDB','/tmp/rman'
- '這將在轉換後保留文件名。
- */