Oracle 12c 使用(Full Transportable Export/Import)進行升級/遷移

pxbibm發表於2014-09-19

本文介紹如何透過使用新的 Oracle 資料庫 12c 的完整可傳輸匯出/匯入(Full Transportable Export/Import)功能來使用較少的停機時間,將資料庫升級/遷移到 Oracle 資料庫 12c 中。

傳統的方法,如匯出/匯入,資料泵匯出/匯入和傳輸表空間,仍然可以用來升級/遷移資料庫到 Oracle Database12c 中。但是,Oracle 資料庫 12c 現在提供了另一種方法透過使用新功能,即,所謂的完整可傳輸匯出/匯入使得遷移/升級更容易,更快,且更高效。

讓我們來看看各種方法的簡要比較:

透過使用資料庫升級助手(DBUA)進行升級
  • 需要更多停機時間
  • 無法跨平臺遷移
常規匯出/匯入
  • 相對較慢
  • 對於大型資料庫系統不是推薦的方案
  • 可靠的遷移技術,但只建議用於 Oracle 9i 和更早版本的資料庫
資料泵匯出/匯入(於 Oracle 資料庫 10g 版本引入)
  • 用於處理大資料量
  • 取代了原來的匯出/匯入作為移動 Oracle 資料庫之間資料的最常用的方法
  • 透過可傳輸表空間的方法在效能方面獲得提升
可傳輸表空間
  • 透過複製資料檔案到目標系統來實現更快速的升級/遷移
  • 需要額外的步驟,將使用者和系統後設資料移動到目標資料庫
  • 非使用者表空間(SYSTEM 和 SYSAUX表空間)相關聯的使用者物件需要手動操作
  • 源和目標有不同的 Endian 格式時,需要執行資料庫檔案的轉換
完整可傳輸匯出/匯入
  • 同時使用可傳輸表空間的機制和資料泵功能
  • 可傳輸表空間的機制是用來移動資料庫檔案到目標系統來獲得更快的遷移,即使是大資料量遷移。
  • 資料泵是用於移動後設資料到目標資料庫
  • 單一的 import 命令即可完成整個遷移
  • 能夠對所有需要的使用者資料和後設資料進行資料庫遷移

 

先決條件

在開始完整可傳輸匯出/匯入程式之前,請注意以下先決條件:

  1. 新的目標庫必須是 Oracle 資料庫 12c 的資料庫(可以是 non-CDB(容器資料庫)或 PDB(可插拔資料庫))
  2. 為將要執行遷移的使用者授權 DATAPUMP_IMP_FULL_DATABASE 角色
  3. 執行升級/遷移之前,設定表空間為只讀
  4. 源資料庫必須是 11.2.0.3 或更高版本。

步驟

下面是使用完全可傳輸匯出/匯入方法時的步驟:

  1. 建立新的目標Oracle資料庫12c的資料庫
    新建立的資料庫中包含了一套管理的表空間,Oracle 提供的元件和包。正如之前提到的,它可以是一個非容器資料庫或一個可插拔資料庫。
  2. 檢查源和目標平臺的 Endian 格式
    SELECT d.PLATFORM_NAME, ENDIAN_FORMAT FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d WHERE tp.PLATFORM_ID = d.PLATFORM_ID;
    如果 Endian 格式相同,資料檔案可以直接複製到目標平臺。否則,需要使用 RMAN 來為資料檔案進行轉換。
  3. 檢驗被遷移的表空間是自包含的
    驗證是必需的。可以用來確認準備被遷移的和不被遷移的表空間,在表空間內的物件儲存之間,沒有邏輯或者物理上的依存關係。
    SQL> EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK('', TRUE);
    其結果可以透過檢查
    SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
    如果查詢返回有值,則需要在進行整個遷移操作之前解決掉依存關係。依存物件需要移動到準備遷移的表空間裡。缺少該步驟,遷移物件將存在問題。
  4. 建立目錄物件
    在源伺服器和目標伺服器上建立目錄物件來儲存 dump 檔案。
    SQL> CREATE DIRECTORY dp_dir AS '';
  5. 將準備遷移的使用者表空間置為只讀模式
    SQL> ALTER TABLESPACE READ ONLY;
  6. 在源資料庫上呼叫完整可傳輸匯出。它將匯出後設資料和儲存在管理表空間中的使用者物件。
    在目標端資料泵匯入(impdp)過程中如果使用 database link,則可以忽略該步驟。完整可傳輸匯入在目標資料庫端可以透過 database link 獲取源資料庫的後設資料。
    expdp system/ full=y transportable=always version=12 \
    directory= dumpfile= \
    metrics=y exclude=statistics \
    logfile=

    為了確保相容性,如果源資料庫是11.2.0.3或11.2.0.4版本,Version 引數是必需的。
  7. 複製資料庫的資料檔案到目標端
    物理上覆制準備遷移的表空間所屬資料檔案到目標端
  8. 複製匯出 dump 檔案到目標端。
    複製匯出 dump 檔案到目標端的目錄
  9. 如果源和目標資料庫的 Endian 格式不同,需要對複製的資料檔案呼叫執行 RMAN convert 命令
    CONVERT DATAFILE '' FROM PLATFORM "" FORMAT='';<source>
  10. 在 Oracle 資料庫 12c 目標資料庫端,呼叫完整可傳輸匯入
    impdp system/@ directory= \
    dumpfile= logfile= \
    metrics=y \
    transport_datafiles='

    Database link 引數可以用來蒐集源資料庫的後設資料。
  11. 在目標和源資料庫上將表空間轉換為讀寫模式
    SQL> alter tablespace read write;




2014.09.19 12:26
share you knowledge with the world.

 

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

相關文章