Oracle

在 Oracle 11G 中如何在不使用數據泵的情況下將表空間複製到另一個數據庫

  • December 4, 2018

我在遺留系統上有一個數據庫,其中有一些需要導出到另一個環境的數據。我需要的一切都包含在一個表空間中。不幸的是,我無法使用數據泵,因為之前的修補程序很糟糕(數以千計的無效對象,包括無法重新編譯的流包)。

我可以使用 RMAN 或其他方法備份此表空間,將其移動到另一個網路(通過物理媒體傳輸 - 網路完全隔離)並將其恢復到現有數據庫嗎?

假設最簡單的情況,這是最低限度的。

1.原始出口/進口:

源數據庫:

  • 從表空間導出所有內容

exp userid=user/password tablespaces=example file=example.dmp

目的地:

  • 從原始碼複製 example.dmp
  • 在所需位置創建空表空間,手動創建使用者,然後:

imp userid=user/password full=y file=example.dmp

或 2. 具有原始導出/導入的可傳輸表空間:

源數據庫:

  • 將表空間置於只讀模式:

alter tablespace example read only;

  • 導出用於傳輸表空間的元數據

exp userid=\'/ as sysdba\' transport_tablespace=y tablespaces=example file=example_tts.dmp

請注意,如果您不與 SYSDBA 連接,則會在此處收到 EXP-00044 錯誤。

目標數據庫:

  • 從原始碼複製 example_tts.dmp
  • 將數據文件本身從源複製到所需位置(下例中的 example01.dbf)
  • 手動創建使用者,然後:

imp userid=\'/ as sysdba\' transport_tablespace=y datafiles=/oradata/S112/example01.dbf file=example_tts.dmp

  • 最後使表空間可寫:

alter tablespace example read write;

可以在文件中找到更多詳細資訊:

原始出口

原裝進口

引用自:https://dba.stackexchange.com/questions/224101