Oracle 10g 引入的跨平台可傳輸表空間特性,讓我們擺脫了 exp/imp 低效的傳統模式。核心挑戰在於不同平台的字節序(Endianness)差異,而解決方案僅需一條 RMAN 命令 —— CONVERT。

| 模式 | 執行位置 | 用途 |
|---|---|---|
CONVERT TABLESPACE |
源端 | 轉換指定表空間的資料檔案至目標平台格式(第 3 步執行) |
CONVERT DATAFILE |
目標端 | 在目標平台上轉換已複製的資料檔案(第 4 步執行) |
CONVERT DATABASE |
源端或目標端 | 整庫跨平台遷移,自動生成傳輸腳本與初始化參數檔 |
CONVERT DATAFILE 與 CONVERT TABLESPACE 亦可用於 ASM(自動存儲管理)檔案的移入/移出。因作業系統指令(cp、copy)無法直接讀寫 ASM,RMAN 成為操作 ASM 檔案的唯一標準路徑。
COMPATIBLE 參數 ≥ 10.0READ WRITE 一次(以便檔頭識別源平台),故 READ ONLY 表空間需先轉 READ WRITE 再轉回CONVERT TABLESPACE ... TO PLATFORM,不可用 DATAFILECONVERT DATAFILE ... FROM PLATFORM ... TO PLATFORM,不可用 TABLESPACE(目標端尚無表空間元數據)FORMAT 與 DB_FILE_NAME_CONVERT 可單獨或共同使用;若均省略,目標路徑預設引用源路徑V$TRANSPORTABLE_PLATFORM 確認雙向支援OPEN RESETLOGS)、BFILE、本地管理臨時表空間、外部表/目錄、密碼檔(RMAN 會輸出清單供手動處理)RMAN> CONVERT TABLESPACE JSsweb
TO PLATFORM 'Linux IA (32-bit)'
DB_FILE_NAME_CONVERT 'E:\ora10g\oradata\JSsweb', 'e:\oratmp\oradata'
PARALLELISM 3;
提示: PARALLELISM 不宜超過資料檔數量,否則可能適得其反。若同時指定 FORMAT 与 DB_FILE_NAME_CONVERT,以 FORMAT 為準。
RMAN> CONVERT DATAFILE
'E:\ora10g\oradata\jssweb\JSsweb1.dbf',
'E:\ora10g\oradata\jssweb\JSsweb2.dbf'
TO PLATFORM='Linux IA (32-bit)'
FROM PLATFORM='Microsoft Windows IA (32-bit)'
DB_FILE_NAME_CONVERT 'E:\ora10g\oradata', '/opt/oracle/oradata';
包含準備階段(DBMS_TDB.CHECK_DB、CHECK_EXTERNAL)與轉換階段(源端或目標端執行),生成:轉換後資料檔、傳輸腳本、初始化參數檔。詳細步驟請參考官方文檔或後續實戰篇。
CONVERT 命令雖參數不多,但平台相容性、ASM 整合、整庫遷移限制等細節決定成敗。建議在非生產環境完整演練後再上線操作。