12c跨平臺傳輸表空間

hooca發表於2016-06-30
從12c開始,跨平臺傳輸表空間的方式有所不同,11g可見:http://blog.itpub.net/22621861/viewspace-1419810/

如果尾數字節相同,則可以傳輸整個資料庫;如果尾數字節不同,則只能傳輸表空間。由於傳輸整庫後還需要重建控制檔案比較麻煩,一般選擇傳輸表空間。
尾數字節的查詢如下:

點選(此處)摺疊或開啟

  1. Select endian_format
  2. From v$transportable_platform tp, v$database d
  3. Where tp.platform_name=d.platform_name;

ENDIAN_FORMAT
--------------
Little

1. 源表空間設定為只讀:

點選(此處)摺疊或開啟

  1. alter tablespace sh read only;
2. 假設計劃傳輸的表空間在PDB中,則通過RMAN連線到PDB

點選(此處)摺疊或開啟

  1. backup for transport
  2. format '/u01/trans/linux_sourcedb_%U'
  3. datapump format '/u01/trans/linux_expdp.dmp'
  4. tablespace sh;
完成後,指定路徑下生成了表空間和匯出的後設資料檔案。將這兩個檔案傳輸到目的端檔案系統。
這裡要注意:如果是RAC環境下,要確保連線到了自己期望的節點,連錯節點將嘗試在錯誤節點上生成傳輸表空間和後設資料dump;另外,確保庫是open的。

3. 由於匯入時不會自動建立相關使用者,因此需要提前建立使用者並賦予許可權,否則匯入會失敗:

點選(此處)摺疊或開啟

  1. create user sh identified by sh;
  2. grant dba to sh;
4. 開始從RMAN匯入目的庫,這裡也是一個PDB,在Windows 64-bit平臺下:

點選(此處)摺疊或開啟

  1. restore from platform='Linux x86 64-bit'
  2. foreign tablespace sh
  3. format 'E:\ORADATA\EAST\B08200C9B49E4B509EA0F603F2E4FBBA\DATAFILE\SH01.DBF'
  4. from backupset
  5. 'E:\share\trans\linux_sourcedb_15r9f1kn_1_1'
  6. dump file datapump destination 'E:\share\trans'
  7. from backupset
  8. 'E:\share\trans\linux_expdp.dmp';
這裡的from platform取值,可以查詢

點選(此處)摺疊或開啟

  1. select platform_name from v$transportable_platform;

5. 如有必要,設定相關使用者的預設表空間。

點選(此處)摺疊或開啟

  1. alter user sh default tablespace sh;
6. 將表空間設定為線上,當前應該是read only;(包括源資料庫的表空間)

點選(此處)摺疊或開啟

  1. alter tablespace sh read write;
全部完成。

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

相關文章