Oracle
如何使用 impdp 替換和覆蓋 Oracle 中的所有現有對像以進行完整的數據庫導入?
我想將數據庫中的所有現有對象(不僅僅是表)替換到我目前的數據庫中。
我以系統使用者身份執行 expdp,
full=yes
該系統使用者是我在以 sysdba 身份登錄時授予datapump_imp_full_database
的,來自我從中導入的實例。我使用參數在目標數據庫上執行 impdptable_exists_action=replace
,但是(可以理解)只替換了現有的表,但沒有替換過程、函式、視圖。是否有
table_exists_action
所有對象的等價物?如果沒有,我怎樣才能做到這一點?這兩個數據庫都是 Windows 10 上的 Oracle 12c。
我認為非表對象(如過程、包等)沒有“替換”選項。
最好的選擇是在數據泵導入之前完全刪除模式。這樣,數據泵將重新創建模式和所有包含的對象。
有一個陷阱——如果你放棄模式——你失去了對模式擁有的其他模式對象的所有授權——以及一些依賴於其他模式中對象的 vievs/procedures/functions——將無法編譯。
所以 - 在你放棄之前 - 你應該準備一些腳本來重建該對象授權。
select * from dba_tab_privs where grantee='<schema-for-drop/import>'