Oracle
在 Oracle 11G 中如何在不使用數據泵的情況下將表空間複製到另一個數據庫
我在遺留系統上有一個數據庫,其中有一些需要導出到另一個環境的數據。我需要的一切都包含在一個表空間中。不幸的是,我無法使用數據泵,因為之前的修補程序很糟糕(數以千計的無效對象,包括無法重新編譯的流包)。
我可以使用 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;
可以在文件中找到更多詳細資訊: