Oracle

如何使用 impdp 替換和覆蓋 Oracle 中的所有現有對像以進行完整的數據庫導入?

  • November 26, 2019

我想將數據庫中的所有現有對象(不僅僅是表)替換到我目前的數據庫中。

我以系統使用者身份執行 expdp,full=yes該系統使用者是我在以 sysdba 身份登錄時授予datapump_imp_full_database的,來自我從中導入的實例。我使用參數在目標數據庫上執行 impdp table_exists_action=replace,但是(可以理解)只替換了現有的表,但沒有替換過程、函式、視圖。

是否有table_exists_action所有對象的等價物?如果沒有,我怎樣才能做到這一點?

這兩個數據庫都是 Windows 10 上的 Oracle 12c。

我認為非表對象(如過程、包等)沒有“替換”選項。

最好的選擇是在數據泵導入之前完全刪除模式。這樣,數據泵將重新創建模式和所有包含的對象。

有一個陷阱——如果你放棄模式——你失去了對模式擁有的其他模式對象的所有授權——以及一些依賴於其他模式中對象的 vievs/procedures/functions——將無法編譯。

所以 - 在你放棄之前 - 你應該準備一些腳本來重建該對象授權。

select * from dba_tab_privs where grantee='<schema-for-drop/import>'

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